@marimo-team/islands 0.25.3-dev12 → 0.25.3-dev123

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 (391) hide show
  1. package/dist/{ConnectedDataExplorerComponent-CNMliVzw.js → ConnectedDataExplorerComponent-CFzqIsUg.js} +14 -14
  2. package/dist/{ErrorBoundary-CUd8VnYI.js → ErrorBoundary-BQ92dCB2.js} +8 -8
  3. package/dist/{abnfDiagram-VCTEODGH-D-Ez91gV.js → abnfDiagram-VCTEODGH-Di400kYu.js} +2 -2
  4. package/dist/any-language-editor-k2B8YI3Y.js +75 -0
  5. package/dist/{architectureDiagram-5GKGNRK7-CTpcNtO8.js → architectureDiagram-5GKGNRK7-BdTJcsNJ.js} +1 -1
  6. package/dist/{arrays-CN1djC4k.js → arrays-R6JsImiT.js} +8 -0
  7. package/dist/assets/__vite-browser-external-SaDYcg7x.js +1 -0
  8. package/dist/assets/{worker-HPY9fbhz.js → worker-CfME3uyi.js} +3 -2
  9. package/dist/{button-CvjkwdSk.js → button-BxB3RDjN.js} +1 -1
  10. package/dist/{capabilities-CQ5IjhzL.js → capabilities-BgR0osfN.js} +2 -2
  11. package/dist/{chat-ui-DaHynk8g.js → chat-ui-DA8zEZ1I.js} +1141 -1141
  12. package/dist/{check-EDwSwP89.js → check-P35dc2dH.js} +1 -1
  13. package/dist/{chunk-IMKFNOWR-DGxi-zeo.js → chunk-IMKFNOWR-mtD7aJBw.js} +1 -1
  14. package/dist/{chunk-SHT3W25Y-CV9J3rAB.js → chunk-SHT3W25Y-DybB1ShH.js} +1 -1
  15. package/dist/{chunk-SVP7TREG-BL-9Fqgg.js → chunk-SVP7TREG-DNhhdCex.js} +1 -1
  16. package/dist/{chunk-TICWLB2K-Cu_XMjDM.js → chunk-TICWLB2K-NhAQhlDf.js} +1 -1
  17. package/dist/{chunk-YOKDWASO-DPZk8vhS.js → chunk-YOKDWASO-DKplTrBY.js} +20 -20
  18. package/dist/{classDiagram-ZZMXUADV-BXXV13Hq.js → classDiagram-ZZMXUADV-GTL0l5xS.js} +2 -2
  19. package/dist/{classDiagram-v2-VYDZK3BY-B7FXJ1Cp.js → classDiagram-v2-VYDZK3BY-BWrM2ruI.js} +2 -2
  20. package/dist/{code-visibility-P0Ornave.js → code-visibility-PHelS0M0.js} +6 -6
  21. package/dist/{common-BtO98PuE.js → common-Bp8XWWmF.js} +5559 -5453
  22. package/dist/{copy-icon-Ft7t9bqz.js → copy-icon-CPoxUG7G.js} +3 -3
  23. package/dist/{cynefinDiagram-5FMLGOSQ-CH96rwba.js → cynefinDiagram-5FMLGOSQ-CX22wa7c.js} +1 -1
  24. package/dist/{dagre-GXQ25YYZ-BD3PmpFY.js → dagre-GXQ25YYZ-Df6Pp-cl.js} +1 -1
  25. package/dist/{data-grid-overlay-editor-B801aMeG.js → data-grid-overlay-editor-DKSlB5lk.js} +5 -5
  26. package/dist/{data-grid-types-BH_r7g7l.js → data-grid-types-0PJ-9N5n.js} +1 -1
  27. package/dist/{diagram-S7CK7UJ4-BsSJJldB.js → diagram-S7CK7UJ4-CctU9kVx.js} +1 -1
  28. package/dist/{diagram-UQ7AKVKN-muQtNZc4.js → diagram-UQ7AKVKN-FVHjCF9j.js} +1 -1
  29. package/dist/{diagram-VX7I27RA-CdhuZAqR.js → diagram-VX7I27RA-BSDbwFFv.js} +1 -1
  30. package/dist/{diagram-Z3DM3KII-BD8mXjOj.js → diagram-Z3DM3KII-BX8kW7Nc.js} +1 -1
  31. package/dist/{dialog-CEBFZNyc.js → dialog-C1PcpCqX.js} +3 -3
  32. package/dist/{dist-DpBpA_n1.js → dist-Lm-D-Vr6.js} +3 -3
  33. package/dist/{dropdown-menu-CP_qCYHC.js → dropdown-menu-B_7xD2X4.js} +177 -169
  34. package/dist/{ebnfDiagram-PWID7BFC-BIN1sweE.js → ebnfDiagram-PWID7BFC-DtapdLet.js} +2 -2
  35. package/dist/{erDiagram-RLTQ6QDP-Ctp5cfoN.js → erDiagram-RLTQ6QDP-BAru9jHt.js} +1 -1
  36. package/dist/{error-banner-D-WCIiMt.js → error-banner-Sl2FlSJ4.js} +2 -2
  37. package/dist/{error-entries-Bv6bZPF3.js → error-entries-g9iQiVIT.js} +844 -811
  38. package/dist/{feedback-button-Bpu-arCP.js → feedback-button-CVeAwpnu.js} +29 -29
  39. package/dist/{flowDiagram-HODETNUW-3EfLrlFb.js → flowDiagram-HODETNUW-CjaeFeea.js} +2 -2
  40. package/dist/{formats-27CW_UP4.js → formats-V8ifA0Bk.js} +3 -3
  41. package/dist/{ganttDiagram-EL5Y4UJY-BQT16JSc.js → ganttDiagram-EL5Y4UJY-Dh_4cBJZ.js} +2 -2
  42. package/dist/{glide-data-editor-XZB3u4tH.js → glide-data-editor-C3ejp-kx.js} +370 -368
  43. package/dist/{glide-utils-DJyqh0EM.js → glide-utils-Bt8_pBa2.js} +16 -16
  44. package/dist/{globals-BIQc0DK0.js → globals-CTjJ_AhA.js} +3 -3
  45. package/dist/{highlighted-body-KPVGNVTW-zwjq21tf.js → highlighted-body-KPVGNVTW-3Ziwfz-V.js} +2 -2
  46. package/dist/{html-to-image-Bf8QMGi4.js → html-to-image-Bg5ZoSO-.js} +29 -29
  47. package/dist/{infoDiagram-27XIBGKW-DipQoHxl.js → infoDiagram-27XIBGKW-B1hmUggC.js} +1 -1
  48. package/dist/{ishikawaDiagram-5VMMS53U-DgFMjSGz.js → ishikawaDiagram-5VMMS53U-DUeT3t-d.js} +1 -1
  49. package/dist/{kanban-definition-UXKFOSKX-w1ACVjgl.js → kanban-definition-UXKFOSKX-DEUnNNgc.js} +1 -1
  50. package/dist/{label-BDKF3Afc.js → label-BRnUC0NX.js} +2 -2
  51. package/dist/{linear-Cnaq3Tfb.js → linear-DWERh7eI.js} +121 -73
  52. package/dist/{loader-BQOfjTIJ.js → loader-Bm8cy3e8.js} +12 -12
  53. package/dist/main.js +3272 -3030
  54. package/dist/{mermaid-CHo49Yv-.js → mermaid-B0fXpsNP.js} +38 -38
  55. package/dist/mermaid-HWGCJPDP-Du3-HPQA.js +2 -0
  56. package/dist/{mindmap-definition-YA3MSWOX-CrT0KSfX.js → mindmap-definition-YA3MSWOX-CPexlhDQ.js} +1 -1
  57. package/dist/{number-overlay-editor-CEO_7tD7.js → number-overlay-editor-CYFUnKYE.js} +3 -3
  58. package/dist/{objects-CzUgoMIF.js → objects-DCmMvZtn.js} +1 -3
  59. package/dist/{once-BtE-wKRL.js → once-eG8Vmvjd.js} +1 -1
  60. package/dist/{pegDiagram-XKGWAZYB-BqvywNJA.js → pegDiagram-XKGWAZYB-CMpp1OOQ.js} +2 -2
  61. package/dist/{pieDiagram-E7YTZNPT-BfxJ_XCc.js → pieDiagram-E7YTZNPT-DlMWg5t1.js} +1 -1
  62. package/dist/precisionRound-DhAzeRcm.js +49 -0
  63. package/dist/{process-output-BZg56CCb.js → process-output-BtVPCGeI.js} +4 -4
  64. package/dist/{quadrantDiagram-AXDQQJYC-Ccw0xMjN.js → quadrantDiagram-AXDQQJYC-Blrm7V7_.js} +1 -1
  65. package/dist/{railroadDiagram-O6MQD6OU-8vFLVTPu.js → railroadDiagram-O6MQD6OU-DBJfseeO.js} +2 -2
  66. package/dist/{react-vega-BED0DjiB.js → react-vega-C4T9Rb_w.js} +12284 -12270
  67. package/dist/{requirementDiagram-BXWQKSXE-a_MxGvxe.js → requirementDiagram-BXWQKSXE-BC7V639r.js} +1 -1
  68. package/dist/{reveal-component-LPCUNcgp.js → reveal-component-e2LCo62o.js} +23 -23
  69. package/dist/{select-BButFi-d.js → select-B0LRDH0g.js} +4 -4
  70. package/dist/{sequenceDiagram-WJ2MYXX4-CXFMnxGh.js → sequenceDiagram-WJ2MYXX4-CgesU6F-.js} +1 -1
  71. package/dist/{spec-BwarBpUJ.js → spec-DTiOPKyk.js} +41 -11
  72. package/dist/{stateDiagram-D77RDMKH-DQeA_CwI.js → stateDiagram-D77RDMKH-lH_BUhs3.js} +2 -2
  73. package/dist/{stateDiagram-v2-MP3YSRHH-BxxQucm1.js → stateDiagram-v2-MP3YSRHH-8LL6FrBe.js} +2 -2
  74. package/dist/style.css +1 -1
  75. package/dist/{swimlanes-42K2YHIH-Do6L-cYg.js → swimlanes-42K2YHIH-Cuf9B9kE.js} +1 -1
  76. package/dist/{swimlanesDiagram-VR7AAH4N-DUzPvSVU.js → swimlanesDiagram-VR7AAH4N-BoMMtOPh.js} +2 -2
  77. package/dist/{swiper-component-DKntyn8p.js → swiper-component-DfhRvAFi.js} +2 -2
  78. package/dist/{time-BieKwdYS.js → time-BaMbJs4z.js} +18 -18
  79. package/dist/{timeline-definition-24CTP7MA-D3c46WM5.js → timeline-definition-24CTP7MA-yzzw4TF4.js} +1 -1
  80. package/dist/{toDate-UtiwmnH2.js → toDate-DKH0_kMo.js} +15 -18
  81. package/dist/{toast-B9UMEi8u.js → toast-CFWpihJU.js} +4 -4
  82. package/dist/{tooltip-BO1REbqs.js → tooltip-CKO1pHJo.js} +2 -2
  83. package/dist/{use-restore-focus-BEM7sFWl.js → use-restore-focus-DBCITLeF.js} +1 -1
  84. package/dist/{useAsyncData-Deh5kszT.js → useAsyncData-D0mLJstx.js} +15 -14
  85. package/dist/{useDateFormatter-D8XruNGG.js → useDateFormatter-c_yJtkAe.js} +2 -2
  86. package/dist/{useDeepCompareMemoize-DXwzRINI.js → useDeepCompareMemoize-BpPWi3G3.js} +1 -1
  87. package/dist/{useIframeCapabilities-DBETvvPl.js → useIframeCapabilities-BkdeVdXC.js} +1 -1
  88. package/dist/{useLifecycle-j7D9uD1o.js → useLifecycle-Dum8WSXq.js} +3 -3
  89. package/dist/{useTheme-CRnjkku0.js → useTheme-CfeaVw5D.js} +6 -6
  90. package/dist/{vega-component-BeF9dfyO.js → vega-component-DgytCKrL.js} +147 -147
  91. package/dist/{vega-embed-container-BNHE18G9.js → vega-embed-container--LYZqguO.js} +2 -2
  92. package/dist/{vega-loader.browser-DNST6uVf.js → vega-loader.browser-B9Pz0EGP.js} +298 -507
  93. package/dist/{vennDiagram-4TSXK5OY-BSZD8JcZ.js → vennDiagram-4TSXK5OY-eJOrTqqC.js} +1 -1
  94. package/dist/{wardleyDiagram-VM6X3IG4-48cUWkfA.js → wardleyDiagram-VM6X3IG4-TILPvee6.js} +1 -1
  95. package/dist/{xychartDiagram-S5SC5T6Z-CswYgYeu.js → xychartDiagram-S5SC5T6Z-DUPvRwwJ.js} +2 -2
  96. package/package.json +12 -12
  97. package/src/__tests__/host-imports.test.ts +1 -0
  98. package/src/__tests__/mount.test.ts +0 -20
  99. package/src/components/app-config/ai-config.tsx +7 -2
  100. package/src/components/chat/__tests__/message-queue.test.tsx +17 -0
  101. package/src/components/chat/acp/__tests__/state.test.ts +2 -2
  102. package/src/components/chat/acp/blocks.tsx +2 -2
  103. package/src/components/chat/chat-components.tsx +2 -0
  104. package/src/components/chat/chat-panel.tsx +9 -8
  105. package/src/components/chat/chat-utils.ts +4 -8
  106. package/src/components/data-table/__tests__/chart-spec-model.test.ts +195 -195
  107. package/src/components/data-table/__tests__/column-explorer.test.tsx +27 -1
  108. package/src/components/data-table/__tests__/columns.test.tsx +105 -0
  109. package/src/components/data-table/__tests__/context-menu-interaction.test.tsx +130 -0
  110. package/src/components/data-table/__tests__/date-popover.test.tsx +72 -0
  111. package/src/components/data-table/__tests__/export-actions.test.tsx +105 -0
  112. package/src/components/data-table/__tests__/search-highlight.test.tsx +109 -0
  113. package/src/components/data-table/__tests__/url-detector.test.tsx +74 -0
  114. package/src/components/data-table/cell-selection/feature.ts +2 -2
  115. package/src/components/data-table/cell-selection/types.ts +2 -2
  116. package/src/components/data-table/charts/__tests__/chart-panel.test.tsx +74 -1
  117. package/src/components/data-table/charts/__tests__/spec-snapshot.test.ts +20 -20
  118. package/src/components/data-table/charts/__tests__/spec.test.ts +78 -52
  119. package/src/components/data-table/charts/__tests__/storage.test.ts +4 -1
  120. package/src/components/data-table/charts/chart-spec/spec.ts +68 -43
  121. package/src/components/data-table/charts/charts.tsx +40 -30
  122. package/src/components/data-table/charts/storage.ts +16 -5
  123. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +1 -1
  124. package/src/components/data-table/column-summary/chart-spec-model.tsx +23 -16
  125. package/src/components/data-table/column-summary/column-summary.tsx +2 -4
  126. package/src/components/data-table/column-visibility-dropdown.tsx +8 -13
  127. package/src/components/data-table/columns.tsx +45 -46
  128. package/src/components/data-table/context-menu.tsx +36 -20
  129. package/src/components/data-table/data-table.tsx +7 -1
  130. package/src/components/data-table/date-popover.tsx +6 -4
  131. package/src/components/data-table/export-actions.tsx +76 -48
  132. package/src/components/data-table/row-viewer-panel/row-viewer.tsx +2 -2
  133. package/src/components/data-table/search-highlight.tsx +79 -0
  134. package/src/components/data-table/types.ts +1 -0
  135. package/src/components/data-table/url-detector.tsx +49 -9
  136. package/src/components/datasources/__tests__/column-actions.test.tsx +97 -0
  137. package/src/components/datasources/__tests__/column-preview.test.tsx +63 -2
  138. package/src/components/datasources/__tests__/table-list.test.tsx +118 -0
  139. package/src/components/datasources/column-preview.tsx +8 -2
  140. package/src/components/datasources/datasources.tsx +47 -35
  141. package/src/components/debugger/debugger-code.tsx +5 -0
  142. package/src/components/dependency-graph/dependency-graph-tree.tsx +8 -8
  143. package/src/components/dependency-graph/elements.ts +24 -21
  144. package/src/components/dependency-graph/panels.tsx +2 -1
  145. package/src/components/dependency-graph/utils/__tests__/layout.test.ts +18 -11
  146. package/src/components/editor/SortableCell.tsx +1 -3
  147. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +111 -18
  148. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +24 -0
  149. package/src/components/editor/actions/pair-with-agent-modal.tsx +18 -15
  150. package/src/components/editor/ai/add-cell-with-ai.tsx +3 -3
  151. package/src/components/editor/ai/ai-completion-editor.tsx +1 -0
  152. package/src/components/editor/alerts/startup-logs-alert.tsx +1 -0
  153. package/src/components/editor/cell/CreateCellButton.tsx +8 -10
  154. package/src/components/editor/cell/DeleteButton.tsx +1 -0
  155. package/src/components/editor/cell/__tests__/useShouldShowInterrupt.test.ts +39 -0
  156. package/src/components/editor/cell/code/__tests__/language-toggle.test.tsx +54 -0
  157. package/src/components/editor/cell/code/cell-editor.tsx +1 -1
  158. package/src/components/editor/cell/code/language-toggle.tsx +8 -7
  159. package/src/components/editor/cell/useShouldShowInterrupt.ts +2 -12
  160. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +30 -1
  161. package/src/components/editor/chrome/panels/cache-panel.tsx +1 -0
  162. package/src/components/editor/chrome/panels/packages-panel.tsx +4 -7
  163. package/src/components/editor/chrome/wrapper/__tests__/attachment-status.test.tsx +12 -18
  164. package/src/components/editor/chrome/wrapper/__tests__/pending-ai-cells.test.tsx +58 -1
  165. package/src/components/editor/chrome/wrapper/footer-items/runtime-settings.tsx +1 -7
  166. package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +12 -2
  167. package/src/components/editor/chrome/wrapper/storage.ts +1 -1
  168. package/src/components/editor/connections/components.tsx +1 -1
  169. package/src/components/editor/controls/__tests__/command-palette.test.tsx +53 -0
  170. package/src/components/editor/controls/command-palette.tsx +22 -10
  171. package/src/components/editor/dynamic-favicon.tsx +21 -40
  172. package/src/components/editor/errors/__tests__/send-error-report-button.test.tsx +12 -23
  173. package/src/components/editor/file-tree/__tests__/file-explorer-interactions.test.tsx +6 -0
  174. package/src/components/editor/file-tree/__tests__/use-file-search.test.tsx +91 -0
  175. package/src/components/editor/file-tree/file-explorer.tsx +10 -5
  176. package/src/components/editor/file-tree/file-viewer.tsx +4 -2
  177. package/src/components/editor/file-tree/use-file-search.ts +35 -21
  178. package/src/components/editor/notebook-banner.tsx +1 -0
  179. package/src/components/editor/output/MarimoTracebackOutput.tsx +2 -2
  180. package/src/components/editor/output/ansi-reduce.ts +33 -20
  181. package/src/components/editor/output/console/ConsoleOutput.tsx +19 -25
  182. package/src/components/editor/package-alert.tsx +6 -4
  183. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +12 -6
  184. package/src/components/editor/renderers/vertical-layout/sidebar/toggle.tsx +7 -1
  185. package/src/components/home/components.tsx +17 -31
  186. package/src/components/icons/__tests__/large-spinner.test.tsx +39 -0
  187. package/src/components/icons/large-spinner.tsx +3 -14
  188. package/src/components/icons/spinner.tsx +1 -1
  189. package/src/components/mcp/mcp-status-indicator.tsx +1 -1
  190. package/src/components/pages/__tests__/home-page.test.tsx +116 -0
  191. package/src/components/pages/home-page.tsx +164 -91
  192. package/src/components/scratchpad/scratchpad.tsx +2 -2
  193. package/src/components/slides/reveal-component.tsx +4 -2
  194. package/src/components/slides/slide-cell-view.tsx +1 -1
  195. package/src/components/slides/slide-form.tsx +1 -0
  196. package/src/components/tracing/tracing.tsx +2 -2
  197. package/src/components/ui/alert-dialog.tsx +1 -1
  198. package/src/core/ai/context/providers/datasource.ts +6 -2
  199. package/src/core/ai/tools/base.ts +16 -7
  200. package/src/core/ai/tools/edit-notebook-tool.ts +47 -45
  201. package/src/core/ai/tools/registry.ts +13 -8
  202. package/src/core/ai/tools/sample-tool.ts +6 -7
  203. package/src/core/attachments/state.ts +5 -8
  204. package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +4 -0
  205. package/src/core/cells/__tests__/cell.test.ts +39 -0
  206. package/src/core/cells/__tests__/cells.test.ts +3 -1
  207. package/src/core/cells/__tests__/collapseConsoleOutputs.test.ts +54 -0
  208. package/src/core/cells/__tests__/notebook-outline.test.ts +113 -0
  209. package/src/core/cells/__tests__/session.test.ts +117 -36
  210. package/src/core/cells/cell.ts +14 -3
  211. package/src/core/cells/cells.ts +3 -1
  212. package/src/core/cells/pending-delete-service.ts +2 -6
  213. package/src/core/cells/session.ts +1 -1
  214. package/src/core/cells/types.ts +10 -1
  215. package/src/core/codemirror/__tests__/setup.test.ts +29 -29
  216. package/src/core/codemirror/cells/__tests__/extensions.test.ts +15 -0
  217. package/src/core/codemirror/cells/extensions.ts +7 -3
  218. package/src/core/codemirror/keymaps/vim.ts +2 -6
  219. package/src/core/codemirror/language/__tests__/sql.test.ts +22 -20
  220. package/src/core/codemirror/language/extension.ts +8 -8
  221. package/src/core/codemirror/language/languages/markdown.ts +8 -6
  222. package/src/core/codemirror/language/languages/python.ts +16 -10
  223. package/src/core/codemirror/language/languages/sql/sql.ts +9 -7
  224. package/src/core/codemirror/language/panel/panel.tsx +1 -0
  225. package/src/core/codemirror/language/types.ts +7 -7
  226. package/src/core/codemirror/rtc/extension.ts +24 -12
  227. package/src/core/codemirror/rtc/loro/awareness.ts +34 -19
  228. package/src/core/codemirror/rtc/loro/sync.ts +1 -0
  229. package/src/core/codemirror/utils.ts +1 -0
  230. package/src/core/datasets/__tests__/data-source-discovery.test.ts +4 -4
  231. package/src/core/datasets/data-source-discovery.ts +4 -6
  232. package/src/core/document/__tests__/codemirror.test.ts +483 -0
  233. package/src/core/document/__tests__/draft.test.ts +322 -0
  234. package/src/core/document/__tests__/fixtures.ts +92 -0
  235. package/src/core/document/__tests__/hooks.test.tsx +386 -0
  236. package/src/core/document/__tests__/lifecycle-scenarios.test.ts +61 -0
  237. package/src/core/document/__tests__/model.test.ts +158 -0
  238. package/src/core/document/__tests__/protocol-fixtures.ts +38 -0
  239. package/src/core/document/__tests__/recovery-scenarios.test.ts +230 -0
  240. package/src/core/document/__tests__/scenario-fixture.ts +42 -0
  241. package/src/core/document/__tests__/scenarios.test.ts +205 -0
  242. package/src/core/document/__tests__/state.test.ts +438 -0
  243. package/src/core/document/__tests__/submission.test.ts +203 -0
  244. package/src/core/document/__tests__/test-host.test.ts +92 -0
  245. package/src/core/document/__tests__/test-host.ts +247 -0
  246. package/src/core/document/__tests__/test-notebook.ts +139 -0
  247. package/src/core/document/__tests__/user.ts +61 -0
  248. package/src/core/document/codemirror.ts +311 -0
  249. package/src/core/document/draft.ts +472 -0
  250. package/src/core/document/hooks.tsx +118 -0
  251. package/src/core/document/index.ts +22 -0
  252. package/src/core/document/model.ts +52 -0
  253. package/src/core/document/select.ts +41 -0
  254. package/src/core/document/state.ts +374 -0
  255. package/src/core/document/sync.ts +363 -0
  256. package/src/core/host/AGENTS.md +12 -2
  257. package/src/core/host/__tests__/attachments.test.ts +56 -0
  258. package/src/core/host/__tests__/document.test.ts +126 -0
  259. package/src/core/host/__tests__/fixtures.ts +41 -0
  260. package/src/core/host/__tests__/notebook-client.test.ts +511 -132
  261. package/src/core/host/__tests__/static.test.ts +167 -0
  262. package/src/core/host/__tests__/wasm.test.ts +152 -0
  263. package/src/core/host/backend.ts +10 -0
  264. package/src/core/host/connection.ts +1 -40
  265. package/src/core/host/notebook-client.ts +204 -133
  266. package/src/core/host/resources/attachments.ts +22 -0
  267. package/src/core/host/resources/document.ts +101 -0
  268. package/src/core/host/static.ts +70 -0
  269. package/src/core/host/wasm.ts +92 -0
  270. package/src/core/hotkeys/actions.ts +2 -4
  271. package/src/core/islands/__tests__/bootstrap.test.ts +0 -26
  272. package/src/core/islands/bootstrap.ts +0 -1
  273. package/src/core/islands/components/__tests__/IslandControls.test.tsx +7 -5
  274. package/src/core/kernel/__tests__/RuntimeState.test.ts +1 -1
  275. package/src/core/network/connection.ts +4 -2
  276. package/src/core/network/useConnectionNotice.ts +8 -2
  277. package/src/core/runtime/__tests__/createWsUrl.test.ts +77 -7
  278. package/src/core/runtime/__tests__/runtime.test.ts +15 -58
  279. package/src/core/runtime/runtime.ts +25 -42
  280. package/src/core/runtime/types.ts +0 -2
  281. package/src/core/state/__tests__/jotai.test.tsx +108 -0
  282. package/src/core/state/jotai.ts +1 -1
  283. package/src/core/static/__tests__/files.test.ts +38 -10
  284. package/src/core/static/files.ts +2 -0
  285. package/src/core/wasm/bridge.ts +38 -10
  286. package/src/core/wasm/store.ts +3 -3
  287. package/src/core/wasm/worker/bootstrap.ts +2 -1
  288. package/src/core/wasm/worker/getMarimoWheel.ts +1 -1
  289. package/src/core/wasm/worker/types.ts +11 -0
  290. package/src/core/wasm/worker/worker.ts +48 -0
  291. package/src/core/websocket/__tests__/connection-state.test.ts +0 -12
  292. package/src/core/websocket/__tests__/useNotebookClient.hook.test.tsx +153 -70
  293. package/src/core/websocket/__tests__/useNotebookSession.hook.test.tsx +151 -428
  294. package/src/core/websocket/connection-state.ts +0 -10
  295. package/src/core/websocket/state.ts +7 -0
  296. package/src/core/websocket/transports/__tests__/notebook.test.ts +502 -0
  297. package/src/core/websocket/transports/notebook.ts +213 -0
  298. package/src/core/websocket/useNotebookClient.ts +38 -29
  299. package/src/core/websocket/useNotebookSession.tsx +1 -14
  300. package/src/css/globals.css +5 -0
  301. package/src/hooks/__tests__/useAsyncData.test.tsx +148 -0
  302. package/src/hooks/__tests__/useDebounce.test.tsx +51 -0
  303. package/src/hooks/__tests__/useDeepCompareMemoize.test.tsx +39 -0
  304. package/src/hooks/__tests__/useDelayElapsed.test.tsx +28 -0
  305. package/src/hooks/__tests__/useInternalStateWithSync.test.tsx +20 -0
  306. package/src/hooks/__tests__/useScript.test.tsx +77 -0
  307. package/src/hooks/__tests__/useStateForKey.test.tsx +257 -0
  308. package/src/hooks/useAsyncData.ts +3 -3
  309. package/src/hooks/useDataSourceDiscovery.ts +6 -4
  310. package/src/hooks/useDebounce.ts +6 -10
  311. package/src/hooks/useDeepCompareMemoize.ts +1 -1
  312. package/src/hooks/useDelayElapsed.ts +14 -10
  313. package/src/hooks/useElapsedTime.ts +3 -3
  314. package/src/hooks/useEventListener.ts +1 -2
  315. package/src/hooks/useInputHistory.ts +4 -7
  316. package/src/hooks/useInternalStateWithSync.ts +6 -6
  317. package/src/hooks/useResizeObserver.ts +4 -7
  318. package/src/hooks/useScript.ts +67 -70
  319. package/src/hooks/useStateForKey.ts +93 -0
  320. package/src/mount.tsx +0 -4
  321. package/src/plugins/__tests__/plugin-object-schemas.test.ts +104 -0
  322. package/src/plugins/core/registerReactComponent.tsx +1 -1
  323. package/src/plugins/impl/CodeEditorPlugin.tsx +1 -1
  324. package/src/plugins/impl/DataEditorPlugin.tsx +1 -1
  325. package/src/plugins/impl/DataTablePlugin.tsx +29 -33
  326. package/src/plugins/impl/DropdownPlugin.tsx +2 -6
  327. package/src/plugins/impl/FileBrowserPlugin.tsx +4 -16
  328. package/src/plugins/impl/FormPlugin.tsx +1 -1
  329. package/src/plugins/impl/RangeSliderPlugin.tsx +0 -1
  330. package/src/plugins/impl/RefreshPlugin.tsx +1 -0
  331. package/src/plugins/impl/SliderPlugin.tsx +6 -8
  332. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +117 -1
  333. package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +45 -0
  334. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +24 -3
  335. package/src/plugins/impl/anywidget/__tests__/registry.test.ts +2 -0
  336. package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +241 -2
  337. package/src/plugins/impl/anywidget/runtime.ts +21 -9
  338. package/src/plugins/impl/anywidget/widget-binding.ts +160 -82
  339. package/src/plugins/impl/chat/__tests__/chat-prompts.test.tsx +93 -0
  340. package/src/plugins/impl/chat/chat-ui.tsx +12 -10
  341. package/src/plugins/impl/code/any-language-editor.tsx +2 -2
  342. package/src/plugins/impl/data-editor/glide-data-editor.tsx +8 -5
  343. package/src/plugins/impl/data-editor/glide-utils.ts +3 -1
  344. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +1 -1
  345. package/src/plugins/impl/data-explorer/state/reducer.ts +1 -1
  346. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -2
  347. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +5 -3
  348. package/src/plugins/impl/panel/PanelPlugin.tsx +16 -17
  349. package/src/plugins/impl/panel/__tests__/utils.test.ts +39 -1
  350. package/src/plugins/impl/panel/utils.ts +17 -0
  351. package/src/plugins/impl/plotly/PlotlyPlugin.tsx +2 -5
  352. package/src/plugins/impl/plotly/selection.ts +25 -19
  353. package/src/plugins/impl/vega/VegaPlugin.tsx +2 -3
  354. package/src/plugins/impl/vega/make-selectable.ts +4 -7
  355. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  356. package/src/stories/__tests__/editor-story.test.tsx +33 -0
  357. package/src/stories/button.stories.tsx +1 -0
  358. package/src/stories/editor.stories.tsx +24 -17
  359. package/src/stories/form-wrapper.stories.tsx +2 -2
  360. package/src/stories/select.stories.tsx +2 -2
  361. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  362. package/src/utils/__tests__/arrays.test.ts +35 -0
  363. package/src/utils/__tests__/batch-requests.test.ts +3 -3
  364. package/src/utils/__tests__/numbers.test.ts +48 -1
  365. package/src/utils/__tests__/objects.test.ts +21 -0
  366. package/src/utils/arrays.ts +10 -0
  367. package/src/utils/blob.ts +1 -1
  368. package/src/utils/numbers.ts +28 -17
  369. package/src/utils/objects.ts +3 -7
  370. package/src/utils/once.ts +19 -19
  371. package/src/utils/tracer.ts +9 -5
  372. package/src/utils/zod-utils.ts +1 -3
  373. package/dist/any-language-editor-DZ_YTVus.js +0 -76
  374. package/dist/assets/__vite-browser-external-BXYkiFsk.js +0 -1
  375. package/dist/mermaid-HWGCJPDP-ByCsZnYF.js +0 -2
  376. package/dist/precisionRound-DMIVQrt2.js +0 -97
  377. package/src/core/host/__tests__/events.test.ts +0 -46
  378. package/src/core/host/__tests__/protocol.test.ts +0 -214
  379. package/src/core/host/events.ts +0 -60
  380. package/src/core/host/protocol.ts +0 -1943
  381. package/src/core/state/__tests__/jotai.test.ts +0 -25
  382. package/src/core/websocket/__tests__/createConnectionTransport.test.ts +0 -49
  383. package/src/core/websocket/transports/__tests__/basic.test.ts +0 -275
  384. package/src/core/websocket/transports/__tests__/sse.test.ts +0 -335
  385. package/src/core/websocket/transports/__tests__/transport.test.ts +0 -308
  386. package/src/core/websocket/transports/__tests__/ws.test.ts +0 -125
  387. package/src/core/websocket/transports/basic.ts +0 -102
  388. package/src/core/websocket/transports/create.ts +0 -31
  389. package/src/core/websocket/transports/sse.ts +0 -308
  390. package/src/core/websocket/transports/transport.ts +0 -50
  391. package/src/core/websocket/transports/ws.ts +0 -98
@@ -1,32 +1,32 @@
1
1
  import { a as e, i as t, n, r, t as i } from "./rolldown-runtime-Cb76FRpK.js";
2
- import { g as a, h as o, o as s, p as c, t as l } from "./button-CvjkwdSk.js";
2
+ import { g as a, h as o, o as s, p as c, t as l } from "./button-BxB3RDjN.js";
3
3
  import { t as u } from "./react-sHtZdjeP.js";
4
4
  import { t as d } from "./compiler-runtime-CldRdSsv.js";
5
- import { i as f } from "./copy-icon-Ft7t9bqz.js";
6
- import { d as p, h as m, i as h, t as g } from "./tooltip-BO1REbqs.js";
7
- import { a as _, c as v, i as y, o as b, r as x, s as S, t as C } from "./useLifecycle-j7D9uD1o.js";
8
- import { t as w } from "./check-EDwSwP89.js";
9
- import { C as T, S as ee, a as te, b as ne, c as re, i as ie, n as ae, o as oe, r as se, s as ce, t as le } from "./select-BButFi-d.js";
10
- import { C as ue, S as de, _ as fe, b as pe, g as me, h as E, o as he, t as ge, x as _e } from "./toDate-UtiwmnH2.js";
5
+ import { i as f } from "./copy-icon-CPoxUG7G.js";
6
+ import { d as p, h as m, i as h, t as g } from "./tooltip-CKO1pHJo.js";
7
+ import { a as _, c as v, i as y, o as b, r as x, s as S, t as C } from "./useLifecycle-Dum8WSXq.js";
8
+ import { t as w } from "./check-P35dc2dH.js";
9
+ import { C as T, S as ee, a as te, b as ne, c as re, i as ie, n as ae, o as oe, r as se, s as ce, t as le } from "./select-B0LRDH0g.js";
10
+ import { C as ue, S as de, _ as fe, b as pe, g as me, h as E, o as he, t as ge, x as _e } from "./toDate-DKH0_kMo.js";
11
11
  import { t as ve } from "./react-dom-DUmH0GXv.js";
12
12
  import { t as ye } from "./jsx-runtime-3BD1kT0s.js";
13
- import { C as be, Ct as xe, D as Se, F as D, L as O, M as Ce, S as we, St as Te, bt as Ee, j as De, wt as k, yt as Oe } from "./use-restore-focus-BEM7sFWl.js";
14
- import { c as ke, n as Ae } from "./toast-B9UMEi8u.js";
13
+ import { C as be, Ct as xe, D as Se, F as D, L as O, M as Ce, S as we, St as Te, bt as Ee, j as De, wt as k, yt as Oe } from "./use-restore-focus-DBCITLeF.js";
14
+ import { c as ke, n as Ae } from "./toast-CFWpihJU.js";
15
15
  import { t as je } from "./debounce-C3jyATpc.js";
16
- import { C as Me, E as A, S as Ne, _ as j, b as Pe, c as Fe, g as Ie, k as Le, l as Re, t as ze, x as Be, y as Ve } from "./useTheme-CRnjkku0.js";
16
+ import { C as Me, E as A, S as Ne, _ as j, b as Pe, c as Fe, g as Ie, k as Le, l as Re, t as ze, x as Be, y as Ve } from "./useTheme-CfeaVw5D.js";
17
17
  import { $ as He, At as Ue, B as We, Bt as Ge, Ct as Ke, E as qe, Ft as Je, H as Ye, I as Xe, L as Ze, Mt as Qe, Pt as $e, Rt as et, S as tt, St as nt, Tt as rt, U as it, Vt as at, X as ot, Z as st, b as ct, et as lt, f as ut, ht as dt, jt as ft, kt as pt, l as M, mt, tt as ht, u as gt, ut as _t, vt, w as yt, z as bt, zt as xt } from "./dist-DoE4XJBC.js";
18
18
  import { i as St, o as Ct, r as wt, s as Tt, t as Et, u as Dt } from "./dist-CN8zI-XC.js";
19
19
  import { t as N } from "./invariant-DLmrl-hA.js";
20
- import { a as Ot, i as kt, n as At, r as jt, s as Mt, u as Nt } from "./arrays-CN1djC4k.js";
21
- import { t as Pt } from "./objects-CzUgoMIF.js";
22
- import { n as Ft } from "./once-BtE-wKRL.js";
23
- import { t as It } from "./capabilities-CQ5IjhzL.js";
20
+ import { a as Ot, i as kt, n as At, r as jt, s as Mt, u as Nt } from "./arrays-R6JsImiT.js";
21
+ import { t as Pt } from "./objects-DCmMvZtn.js";
22
+ import { n as Ft } from "./once-eG8Vmvjd.js";
23
+ import { t as It } from "./capabilities-BgR0osfN.js";
24
24
  import { d as Lt, n as Rt, r as zt, u as Bt } from "./dist-CkTTIdBe.js";
25
25
  import { a as Vt, c as Ht, d as Ut, f as Wt, i as Gt, l as Kt, n as qt, o as Jt, p as Yt, r as P, s as Xt, t as Zt } from "./dist-diIx5qJW.js";
26
26
  import { n as Qt, r as $t } from "./dist-CrSP_H1M.js";
27
27
  import { a as en, i as tn, n as nn, o as rn, r as an } from "./dist-BorMD-uX.js";
28
28
  import { n as on } from "./stex-Btf3omL8.js";
29
- import { t as sn } from "./useAsyncData-Deh5kszT.js";
29
+ import { t as sn } from "./useAsyncData-D0mLJstx.js";
30
30
  import { t as cn } from "./purify.es-DMv5zIkJ.js";
31
31
  var ln = m("activity", [["path", {
32
32
  d: "M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",
@@ -762,7 +762,7 @@ function or(e) {
762
762
  }
763
763
  Wn(or, "getState");
764
764
  //#endregion
765
- //#region ../node_modules/.pnpm/jotai@2.20.3_@babel+core@7.29.0_@babel+template@7.28.6_@types+react@19.3.0_react@19.3.0/node_modules/jotai/esm/vanilla/utils.mjs
765
+ //#region ../node_modules/.pnpm/jotai@2.20.3_@babel+core@7.29.0_supports-color@10.0.0__@babel+template@7.28.6_@types+react@19.3.0_react@19.3.0/node_modules/jotai/esm/vanilla/utils.mjs
766
766
  var sr = /* @__PURE__ */ Symbol("");
767
767
  function cr(e, t) {
768
768
  return A(e, function(e, n, r) {
@@ -18123,7 +18123,7 @@ function wu(e) {
18123
18123
  }
18124
18124
  var Tu = new Cu(), Eu = et.define();
18125
18125
  async function Du(e, t) {
18126
- let { formatDialect: n } = await import("./esm-G4Fhsgng.js"), r = await Ou(Tu.getInternalDialect(t)), i = e.state.field(Py), o = qe(e.state);
18126
+ let { formatDialect: n } = await import("./esm-G4Fhsgng.js"), r = await Ou(Tu.getInternalDialect(t)), i = e.state.field(Ny), o = qe(e.state);
18127
18127
  if (i.type !== "sql") {
18128
18128
  a.error("Language adapter is not SQL");
18129
18129
  return;
@@ -20670,7 +20670,7 @@ var xf = class e {
20670
20670
  "redo"
20671
20671
  ];
20672
20672
  function Cf({ docChanged: e, transactions: t, predicate: n = () => !0, hasFocus: r = !1 }) {
20673
- return !e || !n() || t.some((e) => e.effects.some((e) => e.is(Eu))) ? !1 : t.some((e) => e.annotation(hd) === void 0 ? Sf.some((t) => e.isUserEvent(t)) || r : !1);
20673
+ return !e || !n() || t.some((e) => e.effects.some((e) => e.is(Eu))) ? !1 : t.some((e) => e.annotation(at.remote) || e.annotation(hd) !== void 0 ? !1 : Sf.some((t) => e.isUserEvent(t)) || r);
20674
20674
  }
20675
20675
  function wf({ predicate: e }) {
20676
20676
  return He.updateListener.of((t) => {
@@ -21896,30 +21896,30 @@ var gp = et.define(), _p = et.define(), vp = xt.define({
21896
21896
  isSupported(e) {
21897
21897
  return this.parser.isSupported(e);
21898
21898
  }
21899
- getExtension(e, t, n, r) {
21900
- let i = Qt().language.data, a, o = () => {
21901
- if (!a) return !0;
21902
- let e = a?.state.field(vp);
21899
+ getExtension({ hotkeys: e }) {
21900
+ let t = Qt().language.data, n, r = () => {
21901
+ if (!n) return !0;
21902
+ let e = n?.state.field(vp);
21903
21903
  return e === void 0 ? !1 : e.quotePrefix?.includes("f") ?? !1;
21904
21904
  };
21905
21905
  return [
21906
- ht.define((e) => (a = e, {})),
21906
+ ht.define((e) => (n = e, {})),
21907
21907
  Qt({
21908
21908
  base: $t,
21909
21909
  codeLanguages: ju,
21910
- extensions: [hp(ut.define(on).parser), op(en.parser, o)]
21910
+ extensions: [hp(ut.define(on).parser), op(en.parser, r)]
21911
21911
  }),
21912
- tp(n),
21913
- Rf.map((e) => i.of({ autocomplete: e })),
21912
+ tp(e),
21913
+ Rf.map((e) => t.of({ autocomplete: e })),
21914
21914
  tn().language.data.of({ autocomplete: jf({
21915
21915
  completion: Af,
21916
- predicate: o
21916
+ predicate: r
21917
21917
  }) }),
21918
21918
  zt({
21919
21919
  defaultKeymap: !1,
21920
21920
  activateOnTyping: !0
21921
21921
  }),
21922
- wf({ predicate: () => !o() })
21922
+ wf({ predicate: () => !r() })
21923
21923
  ];
21924
21924
  }
21925
21925
  }, bp = {
@@ -22135,7 +22135,7 @@ var Fp = A((e) => {
22135
22135
  let t = e($);
22136
22136
  return Pt.fromEntries(t.cellIds.inOrderIds.map((e) => {
22137
22137
  let n = t.cellHandles[e]?.current?.editorViewOrNull;
22138
- return [e, n ? Ry(n) : t.cellData[e]?.code ?? ""];
22138
+ return [e, n ? Ly(n) : t.cellData[e]?.code ?? ""];
22139
22139
  }));
22140
22140
  }), Ip = A((e) => e($).cellIds.inOrderIds), Lp = A((e) => zp(e(Ip), e(Cd))), Rp = A((e) => ({
22141
22141
  cellIds: e(Lp),
@@ -22523,7 +22523,7 @@ var vm = class {
22523
22523
  cellIds: e,
22524
22524
  codes: Pt.fromEntries(e.map((e) => {
22525
22525
  let r = n[e];
22526
- return [e, r ? Ry(r) : t[e] ?? ""];
22526
+ return [e, r ? Ly(r) : t[e] ?? ""];
22527
22527
  }))
22528
22528
  };
22529
22529
  }
@@ -22665,7 +22665,7 @@ var vm = class {
22665
22665
  a.warn("[lsp] No editor view for cell during rename", e), m.push(e);
22666
22666
  continue;
22667
22667
  }
22668
- Ry(t) !== r && (zy(t, r), h++);
22668
+ Ly(t) !== r && (Ry(t, r), h++);
22669
22669
  }
22670
22670
  return m.length > 0 && a.error(`[lsp] Rename partially failed: could not update ${m.length} cell(s)`, m), a.debug(`[lsp] Rename completed: updated ${h} cell(s)`), {
22671
22671
  ...o,
@@ -22936,21 +22936,19 @@ function Tm() {
22936
22936
  function Em() {
22937
22937
  return me() ? Tm() : Promise.resolve();
22938
22938
  }
22939
- A((e) => e(wm).state === Cm.CONNECTING);
22940
- var Dm = A((e) => e(wm).state === Cm.OPEN);
22941
- A((e) => {
22939
+ A((e) => e(wm).state === Cm.CONNECTING), A((e) => e(wm).state === Cm.OPEN), A((e) => {
22942
22940
  let t = e(wm);
22943
22941
  return t.state === Cm.OPEN || t.state === Cm.NOT_STARTED;
22944
22942
  }), A((e) => e(wm).state === Cm.CLOSED), A((e) => e(wm).state === Cm.NOT_STARTED);
22945
22943
  //#endregion
22946
22944
  //#region src/core/codemirror/lsp/log-messages.ts
22947
- var Om = /* @__PURE__ */ new Set([1, 2]);
22948
- function km(e, t) {
22945
+ var Dm = /* @__PURE__ */ new Set([1, 2]);
22946
+ function Om(e, t) {
22949
22947
  if (!("method" in t) || t.method !== "window/logMessage") return;
22950
22948
  let n = t.params;
22951
22949
  !Np(n) || typeof n.message != "string" || vx({ logs: [{
22952
22950
  timestamp: Date.now() / 1e3,
22953
- level: Om.has(n.type) ? "stderr" : "stdout",
22951
+ level: Dm.has(n.type) ? "stderr" : "stdout",
22954
22952
  message: n.message,
22955
22953
  source: {
22956
22954
  type: "lsp",
@@ -22960,7 +22958,7 @@ function km(e, t) {
22960
22958
  }
22961
22959
  //#endregion
22962
22960
  //#region src/core/codemirror/lsp/transports.ts
22963
- function Am(e, t) {
22961
+ function km(e, t) {
22964
22962
  let n = he(), r = new Sm({
22965
22963
  getWsUrl: () => n.getLSPURL(e).toString(),
22966
22964
  waitForConnection: async () => {
@@ -22968,27 +22966,27 @@ function Am(e, t) {
22968
22966
  },
22969
22967
  onReconnect: t
22970
22968
  });
22971
- return r.onMessage((t) => km(e, t)), r;
22969
+ return r.onMessage((t) => Om(e, t)), r;
22972
22970
  }
22973
22971
  et.define(), new pt();
22974
- function jm(e) {
22972
+ function Am(e) {
22975
22973
  return e.facet(ft.readOnly);
22976
22974
  }
22977
22975
  //#endregion
22978
22976
  //#region src/core/codemirror/placeholder/extensions.ts
22979
- function Mm(e) {
22977
+ function jm(e) {
22980
22978
  return [vt(e), dt.of([{
22981
22979
  key: "ArrowRight",
22982
22980
  preventDefault: !0,
22983
- run: (t) => Nm(t, e)
22981
+ run: (t) => Mm(t, e)
22984
22982
  }, {
22985
22983
  key: "Tab",
22986
22984
  preventDefault: !0,
22987
- run: (t) => Nm(t, e)
22985
+ run: (t) => Mm(t, e)
22988
22986
  }])];
22989
22987
  }
22990
- function Nm(e, t) {
22991
- if (jm(e.state)) return !1;
22988
+ function Mm(e, t) {
22989
+ if (Am(e.state)) return !1;
22992
22990
  let n = e.state.doc.length;
22993
22991
  return n === 0 && (e.dispatch({
22994
22992
  changes: {
@@ -23002,7 +23000,7 @@ function Nm(e, t) {
23002
23000
  }
23003
23001
  }), !0);
23004
23002
  }
23005
- function Pm(e) {
23003
+ function Nm(e) {
23006
23004
  let { beforeText: t, linkText: n, afterText: r, onClick: i } = e;
23007
23005
  return [vt((e) => {
23008
23006
  let a = document.createElement("span");
@@ -23025,9 +23023,9 @@ function Pm(e) {
23025
23023
  }
23026
23024
  //#endregion
23027
23025
  //#region src/core/codemirror/language/languages/python.ts
23028
- var Fm = Ft((e) => {
23026
+ var Pm = Ft((e) => {
23029
23027
  let t, n = {
23030
- transport: Am("pylsp", async () => {
23028
+ transport: km("pylsp", async () => {
23031
23029
  await t?.();
23032
23030
  }),
23033
23031
  rootUri: wp(),
@@ -23072,19 +23070,19 @@ var Fm = Ft((e) => {
23072
23070
  }
23073
23071
  } } }, c = new vm(new oc({ ...n }), s);
23074
23072
  return t = () => c.resyncAllDocuments(), c;
23075
- }), Im = Ft((e) => {
23073
+ }), Fm = Ft((e) => {
23076
23074
  let t, n = new vm(new oc({
23077
- transport: Am("ty", async () => {
23075
+ transport: km("ty", async () => {
23078
23076
  await t?.();
23079
23077
  }),
23080
23078
  rootUri: wp(),
23081
23079
  workspaceFolders: Tp(),
23082
- getWorkspaceConfiguration: (e) => [{ disableLanguageServices: !0 }]
23080
+ getWorkspaceConfiguration: () => [{ disableLanguageServices: !0 }]
23083
23081
  }), {});
23084
23082
  return t = () => n.resyncAllDocuments(), n;
23085
- }), Lm = Ft((e) => {
23083
+ }), Im = Ft((e) => {
23086
23084
  let t, n = new vm(new oc({
23087
- transport: Am("pyrefly", async () => {
23085
+ transport: km("pyrefly", async () => {
23088
23086
  await t?.();
23089
23087
  }),
23090
23088
  rootUri: wp(),
@@ -23092,16 +23090,16 @@ var Fm = Ft((e) => {
23092
23090
  initializationOptions: { pyrefly: { displayTypeErrors: e.diagnostics?.enabled ?? !1 ? "force-on" : "force-off" } }
23093
23091
  }), {});
23094
23092
  return t = () => n.resyncAllDocuments(), n;
23095
- }), Rm = Ft((e) => {
23093
+ }), Lm = Ft((e) => {
23096
23094
  let t, n = new vm(new oc({
23097
- transport: Am("basedpyright", async () => {
23095
+ transport: km("basedpyright", async () => {
23098
23096
  await t?.();
23099
23097
  }),
23100
23098
  rootUri: wp(),
23101
23099
  workspaceFolders: Tp()
23102
23100
  }), {});
23103
23101
  return t = () => n.resyncAllDocuments(), n;
23104
- }), zm = class {
23102
+ }), Rm = class {
23105
23103
  parser = new ld();
23106
23104
  type = "python";
23107
23105
  defaultCode = this.parser.defaultCode;
@@ -23121,7 +23119,7 @@ var Fm = Ft((e) => {
23121
23119
  isSupported(e) {
23122
23120
  return this.parser.isSupported(e);
23123
23121
  }
23124
- getExtension(e, t, n, r, i) {
23122
+ getExtension({ cellId: e, completionConfig: t, hotkeys: n, placeholderType: r, lspConfig: i }) {
23125
23123
  return [
23126
23124
  (() => {
23127
23125
  let r = {
@@ -23129,7 +23127,7 @@ var Fm = Ft((e) => {
23129
23127
  activateOnTyping: t.activate_on_typing,
23130
23128
  closeOnBlur: !1
23131
23129
  }, o = { hideOnChange: !0 }, s = [];
23132
- i?.pylsp?.enabled && Vd("pylsp") && s.push(Fm(i)), i?.ty?.enabled && Vd("ty") && s.push(Im(i)), i?.pyrefly?.enabled && Vd("pyrefly") && s.push(Lm(i)), i?.basedpyright?.enabled && Vd("basedpyright") && s.push(Rm(i));
23130
+ i?.pylsp?.enabled && Vd("pylsp") && s.push(Pm(i)), i?.ty?.enabled && Vd("ty") && s.push(Fm(i)), i?.pyrefly?.enabled && Vd("pyrefly") && s.push(Im(i)), i?.basedpyright?.enabled && Vd("basedpyright") && s.push(Lm(i));
23133
23131
  let c = t.signature_hint_on_typing, l = c ? /(\w+|\w+\.|\/)$/ : /(\w+|\w+\.|\(|\/|,)$/;
23134
23132
  if (s.length > 0) {
23135
23133
  let t = s.length === 1 ? s[0] : new kp(s), u = (e) => {
@@ -23164,13 +23162,13 @@ var Fm = Ft((e) => {
23164
23162
  override: [Af]
23165
23163
  }), kf];
23166
23164
  })(),
23167
- Hm(),
23168
- Bm(r)
23165
+ Vm(),
23166
+ zm(r)
23169
23167
  ];
23170
23168
  }
23171
23169
  };
23172
- function Bm(e) {
23173
- return e === "marimo-import" ? $e.highest(Mm("import marimo as mo")) : e === "ai" ? Pm({
23170
+ function zm(e) {
23171
+ return e === "marimo-import" ? $e.highest(jm("import marimo as mo")) : e === "ai" ? Nm({
23174
23172
  beforeText: "Start coding or ",
23175
23173
  linkText: "generate",
23176
23174
  afterText: " with AI.",
@@ -23179,44 +23177,44 @@ function Bm(e) {
23179
23177
  }
23180
23178
  }) : [];
23181
23179
  }
23182
- var Vm = en.configure({ props: [yt.add({
23180
+ var Bm = en.configure({ props: [yt.add({
23183
23181
  ParenthesizedExpression: tt,
23184
23182
  ArgList: tt
23185
23183
  })] });
23186
- function Hm() {
23187
- return new gt(Vm, [Vm.data.of({ autocomplete: an }), Vm.data.of({ autocomplete: nn })]);
23184
+ function Vm() {
23185
+ return new gt(Bm, [Bm.data.of({ autocomplete: an }), Bm.data.of({ autocomplete: nn })]);
23188
23186
  }
23189
23187
  //#endregion
23190
23188
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/namespace-utils.js
23191
- function Um(e) {
23192
- return typeof e == "object" && !Array.isArray(e) && !Wm(e);
23189
+ function Hm(e) {
23190
+ return typeof e == "object" && !Array.isArray(e) && !Um(e);
23193
23191
  }
23194
- function Wm(e) {
23192
+ function Um(e) {
23195
23193
  if (typeof e != "object" || Array.isArray(e) || !("self" in e) || !("children" in e)) return !1;
23196
23194
  let t = e.self;
23197
23195
  return typeof t == "object" && !!t && !Array.isArray(t) && typeof t.label == "string";
23198
23196
  }
23199
- function Gm(e) {
23197
+ function Wm(e) {
23200
23198
  return Array.isArray(e);
23201
23199
  }
23202
- function Km(e, t, n, r) {
23200
+ function Gm(e, t, n, r) {
23203
23201
  let i = e.length;
23204
- if (t === "string" || t === "completion" && r && Gm(r)) return "column";
23202
+ if (t === "string" || t === "completion" && r && Wm(r)) return "column";
23205
23203
  if (t === "namespace" && n) {
23206
- if (Gm(n)) return "table";
23207
- if (Um(n)) return Object.values(n).some((e) => Gm(e) || Wm(e) && Gm(e.children)) ? i <= 1 ? "database" : "schema" : i === 0 ? "database" : "namespace";
23204
+ if (Wm(n)) return "table";
23205
+ if (Hm(n)) return Object.values(n).some((e) => Wm(e) || Um(e) && Wm(e.children)) ? i <= 1 ? "database" : "schema" : i === 0 ? "database" : "namespace";
23208
23206
  }
23209
- if (t === "completion" && n) return Gm(n) ? "table" : (Um(n) && Object.values(n).some((e) => Gm(e) || Wm(e) && Gm(e.children)), i <= 1 ? "database" : "schema");
23207
+ if (t === "completion" && n) return Wm(n) ? "table" : (Hm(n) && Object.values(n).some((e) => Wm(e) || Um(e) && Wm(e.children)), i <= 1 ? "database" : "schema");
23210
23208
  switch (i) {
23211
23209
  case 0: return "database";
23212
23210
  case 1: return "schema";
23213
23211
  default: return "namespace";
23214
23212
  }
23215
23213
  }
23216
- function qm(e, t, n = {}) {
23214
+ function Km(e, t, n = {}) {
23217
23215
  let { maxDepth: r = 10 } = n;
23218
- if ((typeof t == "string" ? t === "" : t.length === 0) && Wm(e)) {
23219
- let t = Km([], "completion", e.children);
23216
+ if ((typeof t == "string" ? t === "" : t.length === 0) && Um(e)) {
23217
+ let t = Gm([], "completion", e.children);
23220
23218
  return {
23221
23219
  completion: e.self,
23222
23220
  path: [],
@@ -23226,12 +23224,12 @@ function qm(e, t, n = {}) {
23226
23224
  };
23227
23225
  }
23228
23226
  let i = (typeof t == "string" ? t.split(".") : t).filter((e) => e.length > 0);
23229
- return i.length === 0 || i.length > r ? null : Jm(e, i, [], n);
23227
+ return i.length === 0 || i.length > r ? null : qm(e, i, [], n);
23230
23228
  }
23231
- function Jm(e, t, n, r, i) {
23229
+ function qm(e, t, n, r, i) {
23232
23230
  if (t.length === 0) {
23233
- if (Wm(e)) {
23234
- let t = Km(n, "completion", e.children, i);
23231
+ if (Um(e)) {
23232
+ let t = Gm(n, "completion", e.children, i);
23235
23233
  return {
23236
23234
  completion: e.self,
23237
23235
  path: n,
@@ -23243,23 +23241,23 @@ function Jm(e, t, n, r, i) {
23243
23241
  return {
23244
23242
  path: n,
23245
23243
  type: "namespace",
23246
- semanticType: Km(n, "namespace", e, i),
23244
+ semanticType: Gm(n, "namespace", e, i),
23247
23245
  namespace: e
23248
23246
  };
23249
23247
  }
23250
23248
  let [a, ...o] = t, { caseSensitive: s = !1 } = r;
23251
23249
  if (!a) return null;
23252
- if (Um(e)) {
23250
+ if (Hm(e)) {
23253
23251
  let t = s ? Object.keys(e).find((e) => e === a) : Object.keys(e).find((e) => e.toLowerCase() === a.toLowerCase());
23254
23252
  if (t) {
23255
23253
  let i = e[t];
23256
- if (i) return Jm(i, o, [...n, t], r, e);
23254
+ if (i) return qm(i, o, [...n, t], r, e);
23257
23255
  }
23258
- } else if (Wm(e)) return Jm(e.children, t, n, r, e);
23259
- else if (Gm(e)) {
23256
+ } else if (Um(e)) return qm(e.children, t, n, r, e);
23257
+ else if (Wm(e)) {
23260
23258
  for (let t of e) if (typeof t == "string") {
23261
23259
  if ((s ? t === a : t.toLowerCase() === a.toLowerCase()) && o.length === 0) {
23262
- let r = Km([...n, t], "string", void 0, e);
23260
+ let r = Gm([...n, t], "string", void 0, e);
23263
23261
  return {
23264
23262
  value: t,
23265
23263
  path: [...n, t],
@@ -23268,7 +23266,7 @@ function Jm(e, t, n, r, i) {
23268
23266
  };
23269
23267
  }
23270
23268
  } else if ((s ? t.label === a : t.label.toLowerCase() === a.toLowerCase()) && o.length === 0) {
23271
- let r = Km([...n, t.label], "completion", void 0, e);
23269
+ let r = Gm([...n, t.label], "completion", void 0, e);
23272
23270
  return {
23273
23271
  completion: t,
23274
23272
  path: [...n, t.label],
@@ -23279,20 +23277,20 @@ function Jm(e, t, n, r, i) {
23279
23277
  }
23280
23278
  return null;
23281
23279
  }
23282
- function Ym(e, t, n = {}) {
23280
+ function Jm(e, t, n = {}) {
23283
23281
  let r = [];
23284
23282
  if (t.includes(".")) {
23285
- let r = t.lastIndexOf("."), i = t.substring(0, r), a = t.substring(r + 1), o = qm(e, i, n);
23286
- if (o?.namespace) return Xm(o.namespace, a, o.path, n);
23287
- } else return Xm(e, t, [], n);
23283
+ let r = t.lastIndexOf("."), i = t.substring(0, r), a = t.substring(r + 1), o = Km(e, i, n);
23284
+ if (o?.namespace) return Ym(o.namespace, a, o.path, n);
23285
+ } else return Ym(e, t, [], n);
23288
23286
  return r;
23289
23287
  }
23290
- function Xm(e, t, n, r) {
23288
+ function Ym(e, t, n, r) {
23291
23289
  let i = [], { caseSensitive: a = !1, allowPartialMatch: o = !0 } = r;
23292
- if (Um(e)) {
23290
+ if (Hm(e)) {
23293
23291
  for (let [r, s] of Object.entries(e)) if (o ? a ? r.startsWith(t) : r.toLowerCase().startsWith(t.toLowerCase()) : a ? r === t : r.toLowerCase() === t.toLowerCase()) {
23294
- if (Wm(s)) {
23295
- let t = Km([...n, r], "completion", s.children, e);
23292
+ if (Um(s)) {
23293
+ let t = Gm([...n, r], "completion", s.children, e);
23296
23294
  i.push({
23297
23295
  completion: s.self,
23298
23296
  path: [...n, r],
@@ -23301,7 +23299,7 @@ function Xm(e, t, n, r) {
23301
23299
  namespace: s.children
23302
23300
  });
23303
23301
  } else {
23304
- let t = Km([...n, r], "namespace", s, e);
23302
+ let t = Gm([...n, r], "namespace", s, e);
23305
23303
  i.push({
23306
23304
  path: [...n, r],
23307
23305
  type: "namespace",
@@ -23310,9 +23308,9 @@ function Xm(e, t, n, r) {
23310
23308
  });
23311
23309
  }
23312
23310
  }
23313
- } else if (Wm(e)) {
23311
+ } else if (Um(e)) {
23314
23312
  if (o ? a ? e.self.label.startsWith(t) : e.self.label.toLowerCase().startsWith(t.toLowerCase()) : a ? e.self.label === t : e.self.label.toLowerCase() === t.toLowerCase()) {
23315
- let t = Km([...n, e.self.label], "completion", e.children);
23313
+ let t = Gm([...n, e.self.label], "completion", e.children);
23316
23314
  i.push({
23317
23315
  completion: e.self,
23318
23316
  path: [...n, e.self.label],
@@ -23321,11 +23319,11 @@ function Xm(e, t, n, r) {
23321
23319
  namespace: e.children
23322
23320
  });
23323
23321
  }
23324
- i.push(...Xm(e.children, t, n, r));
23325
- } else if (Gm(e)) {
23322
+ i.push(...Ym(e.children, t, n, r));
23323
+ } else if (Wm(e)) {
23326
23324
  for (let r of e) if (typeof r == "string") {
23327
23325
  if (o ? a ? r.startsWith(t) : r.toLowerCase().startsWith(t.toLowerCase()) : a ? r === t : r.toLowerCase() === t.toLowerCase()) {
23328
- let t = Km([...n, r], "string", void 0, e);
23326
+ let t = Gm([...n, r], "string", void 0, e);
23329
23327
  i.push({
23330
23328
  value: r,
23331
23329
  path: [...n, r],
@@ -23334,7 +23332,7 @@ function Xm(e, t, n, r) {
23334
23332
  });
23335
23333
  }
23336
23334
  } else if (o ? a ? r.label.startsWith(t) : r.label.toLowerCase().startsWith(t.toLowerCase()) : a ? r.label === t : r.label.toLowerCase() === t.toLowerCase()) {
23337
- let t = Km([...n, r.label], "completion", void 0, e);
23335
+ let t = Gm([...n, r.label], "completion", void 0, e);
23338
23336
  i.push({
23339
23337
  completion: r,
23340
23338
  path: [...n, r.label],
@@ -23345,49 +23343,49 @@ function Xm(e, t, n, r) {
23345
23343
  }
23346
23344
  return i;
23347
23345
  }
23348
- function Zm(e, t, n = {}) {
23346
+ function Xm(e, t, n = {}) {
23349
23347
  let r = [], { maxDepth: i = 10 } = n;
23350
- Qm(e, [], r, i);
23348
+ Zm(e, [], r, i);
23351
23349
  let { caseSensitive: a = !1 } = n;
23352
23350
  return r.filter((e) => e.path.some((e) => a ? e === t : e.toLowerCase() === t.toLowerCase())).sort((e, n) => {
23353
23351
  let r = a ? e.path[e.path.length - 1] === t : e.path[e.path.length - 1]?.toLowerCase() === t.toLowerCase(), i = a ? n.path[n.path.length - 1] === t : n.path[n.path.length - 1]?.toLowerCase() === t.toLowerCase();
23354
23352
  return r && !i ? -1 : !r && i ? 1 : e.path.length - n.path.length;
23355
23353
  });
23356
23354
  }
23357
- function Qm(e, t, n, r) {
23355
+ function Zm(e, t, n, r) {
23358
23356
  if (!(t.length >= r)) {
23359
- if (Um(e)) for (let [i, a] of Object.entries(e)) {
23357
+ if (Hm(e)) for (let [i, a] of Object.entries(e)) {
23360
23358
  let o = [...t, i];
23361
- if (Wm(a)) {
23362
- let t = Km(o, "completion", a.children, e);
23359
+ if (Um(a)) {
23360
+ let t = Gm(o, "completion", a.children, e);
23363
23361
  n.push({
23364
23362
  completion: a.self,
23365
23363
  path: o,
23366
23364
  type: "completion",
23367
23365
  semanticType: t,
23368
23366
  namespace: a.children
23369
- }), Qm(a.children, o, n, r);
23367
+ }), Zm(a.children, o, n, r);
23370
23368
  } else {
23371
- let t = Km(o, "namespace", a, e);
23369
+ let t = Gm(o, "namespace", a, e);
23372
23370
  n.push({
23373
23371
  path: o,
23374
23372
  type: "namespace",
23375
23373
  semanticType: t,
23376
23374
  namespace: a
23377
- }), Qm(a, o, n, r);
23375
+ }), Zm(a, o, n, r);
23378
23376
  }
23379
23377
  }
23380
- else if (Wm(e)) {
23381
- let i = Km(t, "completion", e.children);
23378
+ else if (Um(e)) {
23379
+ let i = Gm(t, "completion", e.children);
23382
23380
  n.push({
23383
23381
  completion: e.self,
23384
23382
  path: t,
23385
23383
  type: "completion",
23386
23384
  semanticType: i,
23387
23385
  namespace: e.children
23388
- }), Qm(e.children, t, n, r);
23389
- } else if (Gm(e)) for (let r of e) if (typeof r == "string") {
23390
- let i = Km([...t, r], "string", void 0, e);
23386
+ }), Zm(e.children, t, n, r);
23387
+ } else if (Wm(e)) for (let r of e) if (typeof r == "string") {
23388
+ let i = Gm([...t, r], "string", void 0, e);
23391
23389
  n.push({
23392
23390
  value: r,
23393
23391
  path: [...t, r],
@@ -23395,7 +23393,7 @@ function Qm(e, t, n, r) {
23395
23393
  semanticType: i
23396
23394
  });
23397
23395
  } else {
23398
- let i = Km([...t, r.label], "completion", void 0, e);
23396
+ let i = Gm([...t, r.label], "completion", void 0, e);
23399
23397
  n.push({
23400
23398
  completion: r,
23401
23399
  path: [...t, r.label],
@@ -23405,48 +23403,48 @@ function Qm(e, t, n, r) {
23405
23403
  }
23406
23404
  }
23407
23405
  }
23408
- function $m(e, t, n = {}) {
23409
- let { enableFuzzySearch: r = !1 } = n, i = qm(e, t, n);
23406
+ function Qm(e, t, n = {}) {
23407
+ let { enableFuzzySearch: r = !1 } = n, i = Km(e, t, n);
23410
23408
  if (i) return i;
23411
- let a = Ym(e, t, n);
23409
+ let a = Jm(e, t, n);
23412
23410
  if (a.length > 0) return a[0] || null;
23413
23411
  if (r) {
23414
- let r = Zm(e, t, n);
23412
+ let r = Xm(e, t, n);
23415
23413
  if (r.length > 0) return r[0] || null;
23416
23414
  }
23417
23415
  return null;
23418
23416
  }
23419
23417
  //#endregion
23420
23418
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/schema-facet.js
23421
- var eh = Qe.define({ combine: (e) => e[0] ?? null });
23422
- function th(e, t) {
23423
- let n = e ?? t.state.facet(eh);
23419
+ var $m = Qe.define({ combine: (e) => e[0] ?? null });
23420
+ function eh(e, t) {
23421
+ let n = e ?? t.state.facet($m);
23424
23422
  return n == null ? null : typeof n == "function" ? n(t) : n;
23425
23423
  }
23426
23424
  //#endregion
23427
23425
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/completion-utils.js
23428
- function nh(e, t) {
23429
- let n = e ?? t.state.facet(eh);
23426
+ function th(e, t) {
23427
+ let n = e ?? t.state.facet($m);
23430
23428
  return n == null ? null : typeof n == "function" ? t.view ? n(t.view) : null : n;
23431
23429
  }
23432
- function rh(e) {
23430
+ function nh(e) {
23433
23431
  if (e == null) return null;
23434
- let t = Wm(e) ? e.children : e;
23435
- return Gm(t) ? t : null;
23432
+ let t = Um(e) ? e.children : e;
23433
+ return Wm(t) ? t : null;
23436
23434
  }
23437
- function ih(e, t) {
23438
- let n = rh(qm(e, t, { caseSensitive: !1 })?.namespace);
23435
+ function rh(e, t) {
23436
+ let n = nh(Km(e, t, { caseSensitive: !1 })?.namespace);
23439
23437
  if (n) return n;
23440
23438
  let r = (typeof t == "string" ? t.split(".") : t).map((e) => e.toLowerCase()), i = r[r.length - 1];
23441
23439
  if (!i) return null;
23442
- let a = Zm(e, i).filter((e) => {
23443
- if (rh(e.namespace) === null || e.path.length < r.length) return !1;
23440
+ let a = Xm(e, i).filter((e) => {
23441
+ if (nh(e.namespace) === null || e.path.length < r.length) return !1;
23444
23442
  let t = e.path.slice(-r.length).map((e) => e.toLowerCase());
23445
23443
  return r.every((e, n) => t[n] === e);
23446
23444
  });
23447
- return a.length === 1 ? rh(a[0]?.namespace) : null;
23445
+ return a.length === 1 ? nh(a[0]?.namespace) : null;
23448
23446
  }
23449
- function ah(e, t, n) {
23447
+ function ih(e, t, n) {
23450
23448
  if (typeof e == "string") return n === void 0 ? {
23451
23449
  label: e,
23452
23450
  type: "property",
@@ -23466,17 +23464,17 @@ function ah(e, t, n) {
23466
23464
  }
23467
23465
  //#endregion
23468
23466
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/utils.js
23469
- var oh = (e) => {
23467
+ var ah = (e) => {
23470
23468
  let t;
23471
23469
  return async () => (t ||= e(), await t);
23472
- }, sh = class {
23470
+ }, oh = class {
23473
23471
  opts;
23474
23472
  parser = null;
23475
23473
  offsetRecord = {};
23476
23474
  constructor(e = {}) {
23477
23475
  this.opts = e;
23478
23476
  }
23479
- getParser = oh(async () => {
23477
+ getParser = ah(async () => {
23480
23478
  if (this.parser) return this.parser;
23481
23479
  let t = await import("./node-sql-parser-BiZOJ-FS.js").then((t) => /* @__PURE__ */ e(t.default, 1)), { Parser: n } = t.default || t;
23482
23480
  return this.parser = new n(), this.parser;
@@ -23500,13 +23498,13 @@ var oh = (e) => {
23500
23498
  }
23501
23499
  async sanitizeSql(e, t) {
23502
23500
  if (t?.ignoreBrackets) {
23503
- let { sql: t, offsetRecord: n } = uh(e);
23501
+ let { sql: t, offsetRecord: n } = lh(e);
23504
23502
  return this.offsetRecord = n, t;
23505
23503
  }
23506
23504
  return e;
23507
23505
  }
23508
23506
  async parseWithDuckDBSupport(e, t) {
23509
- let n = await this.getParser(), r = ch(e).trimStart().toLowerCase();
23507
+ let n = await this.getParser(), r = sh(e).trimStart().toLowerCase();
23510
23508
  if (r.startsWith("from") || r.includes("macro")) return {
23511
23509
  success: !0,
23512
23510
  errors: []
@@ -23584,24 +23582,24 @@ var oh = (e) => {
23584
23582
  }
23585
23583
  }
23586
23584
  };
23587
- function ch(e, t = ["/*", "--"]) {
23585
+ function sh(e, t = ["/*", "--"]) {
23588
23586
  let n = [];
23589
23587
  if (t.includes("/*") && n.push("/\\*[\\s\\S]*?\\*/"), t.includes("--") && n.push("--[^\\n]*"), n.length === 0) return e;
23590
23588
  let r = RegExp(`^\\s*(${n.join("|")})\\s*`, ""), i = e, a = "";
23591
23589
  for (; i !== a;) a = i, i = i.replace(r, "");
23592
23590
  return i;
23593
23591
  }
23594
- var lh = 2;
23595
- function uh(e) {
23592
+ var ch = 2;
23593
+ function lh(e) {
23596
23594
  let t = {};
23597
23595
  return {
23598
- sql: e.replace(/("[^"\\]*(?:\\.[^"\\]*)*")|('[^'\\]*(?:\\.[^'\\]*)*')|(\{[^}]*\})/g, (e, n, r, i, a) => n || r ? e : i ? (t[a] = lh, `'${i}'`) : e),
23596
+ sql: e.replace(/("[^"\\]*(?:\\.[^"\\]*)*")|('[^'\\]*(?:\\.[^'\\]*)*')|(\{[^}]*\})/g, (e, n, r, i, a) => n || r ? e : i ? (t[a] = ch, `'${i}'`) : e),
23599
23597
  offsetRecord: t
23600
23598
  };
23601
23599
  }
23602
23600
  //#endregion
23603
23601
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/query-context.js
23604
- function dh() {
23602
+ function uh() {
23605
23603
  return {
23606
23604
  tables: [],
23607
23605
  ctes: [],
@@ -23609,79 +23607,79 @@ function dh() {
23609
23607
  selectAliases: []
23610
23608
  };
23611
23609
  }
23612
- function fh(e) {
23610
+ function dh(e) {
23613
23611
  return typeof e == "object" && !!e && !Array.isArray(e);
23614
23612
  }
23615
- function ph(e) {
23613
+ function fh(e) {
23616
23614
  return Array.isArray(e) ? e : [];
23617
23615
  }
23618
- function mh(e) {
23616
+ function ph(e) {
23619
23617
  let t = e[0], n = e[e.length - 1];
23620
23618
  return e.length >= 2 && (t === "\"" && n === "\"" || t === "'" && n === "'" || t === "`" && n === "`" || t === "[" && n === "]") ? e.slice(1, -1) : e;
23621
23619
  }
23622
- function hh(e) {
23623
- return typeof e == "string" ? e : fh(e) && typeof e.value == "string" ? e.value : null;
23620
+ function mh(e) {
23621
+ return typeof e == "string" ? e : dh(e) && typeof e.value == "string" ? e.value : null;
23624
23622
  }
23625
- function gh(e) {
23626
- if (!fh(e) || e.type !== "column_ref") return null;
23623
+ function hh(e) {
23624
+ if (!dh(e) || e.type !== "column_ref") return null;
23627
23625
  let t = e.column;
23628
23626
  if (typeof t == "string") return t;
23629
- if (fh(t)) {
23630
- let e = t.expr, n = fh(e) ? e.value : t.value;
23627
+ if (dh(t)) {
23628
+ let e = t.expr, n = dh(e) ? e.value : t.value;
23631
23629
  if (typeof n == "string") return n;
23632
23630
  }
23633
23631
  return null;
23634
23632
  }
23635
- function _h(e) {
23636
- let t = ph(e.columns).map((e) => hh(e) ?? gh(e) ?? hh(e.column)).filter((e) => typeof e == "string");
23633
+ function gh(e) {
23634
+ let t = fh(e.columns).map((e) => mh(e) ?? hh(e) ?? mh(e.column)).filter((e) => typeof e == "string");
23637
23635
  if (t.length > 0) return t;
23638
- let n = e.stmt, r = fh(n) ? n.ast ?? n : null;
23639
- if (!fh(r) || r.type !== "select") return [];
23636
+ let n = e.stmt, r = dh(n) ? n.ast ?? n : null;
23637
+ if (!dh(r) || r.type !== "select") return [];
23640
23638
  let i = [];
23641
- for (let e of ph(r.columns)) if (typeof e.as == "string") i.push(e.as);
23639
+ for (let e of fh(r.columns)) if (typeof e.as == "string") i.push(e.as);
23642
23640
  else {
23643
- let t = gh(e.expr);
23641
+ let t = hh(e.expr);
23644
23642
  t && t !== "*" && i.push(t);
23645
23643
  }
23646
23644
  return i;
23647
23645
  }
23648
- function vh(e, t) {
23646
+ function _h(e, t) {
23649
23647
  if (typeof e.table != "string" || e.table.length === 0) return;
23650
23648
  let n = [
23651
23649
  e.db ?? e.catalog,
23652
23650
  e.schema,
23653
23651
  e.table
23654
- ].filter((e) => typeof e == "string" && e.length > 0).map(mh), r = typeof e.as == "string" ? mh(e.as) : void 0, i = `${n.join(".").toLowerCase()}::${r?.toLowerCase() ?? ""}`;
23652
+ ].filter((e) => typeof e == "string" && e.length > 0).map(ph), r = typeof e.as == "string" ? ph(e.as) : void 0, i = `${n.join(".").toLowerCase()}::${r?.toLowerCase() ?? ""}`;
23655
23653
  t.seenTables.has(i) || (t.seenTables.add(i), t.tables.push({
23656
- name: mh(e.table),
23654
+ name: ph(e.table),
23657
23655
  path: n,
23658
23656
  ...r ? { alias: r } : {}
23659
23657
  }));
23660
23658
  }
23661
- function yh(e, t, n) {
23659
+ function vh(e, t, n) {
23662
23660
  if (Array.isArray(e)) {
23663
- for (let r of e) yh(r, t, n);
23661
+ for (let r of e) vh(r, t, n);
23664
23662
  return;
23665
23663
  }
23666
- if (!(!fh(e) || n.has(e))) {
23664
+ if (!(!dh(e) || n.has(e))) {
23667
23665
  n.add(e);
23668
- for (let n of ph(e.with)) {
23669
- let e = hh(n.name);
23666
+ for (let n of fh(e.with)) {
23667
+ let e = mh(n.name);
23670
23668
  e && !t.seenCtes.has(e.toLowerCase()) && (t.seenCtes.add(e.toLowerCase()), t.ctes.push({
23671
- name: mh(e),
23672
- columns: _h(n).map(mh),
23669
+ name: ph(e),
23670
+ columns: gh(n).map(ph),
23673
23671
  from: -1,
23674
23672
  to: -1
23675
23673
  }));
23676
23674
  }
23677
- for (let n of ["from", "table"]) for (let r of ph(e[n])) vh(r, t);
23678
- for (let [r, i] of Object.entries(e)) r !== "loc" && r !== "tableList" && r !== "columnList" && yh(i, t, n);
23675
+ for (let n of ["from", "table"]) for (let r of fh(e[n])) _h(r, t);
23676
+ for (let [r, i] of Object.entries(e)) r !== "loc" && r !== "tableList" && r !== "columnList" && vh(i, t, n);
23679
23677
  }
23680
23678
  }
23681
- function bh(e, t) {
23682
- if (e.type === "select") for (let n of ph(e.columns)) typeof n.as == "string" && t.selectAliases.push(mh(n.as));
23679
+ function yh(e, t) {
23680
+ if (e.type === "select") for (let n of fh(e.columns)) typeof n.as == "string" && t.selectAliases.push(ph(n.as));
23683
23681
  }
23684
- function xh(e, t) {
23682
+ function bh(e, t) {
23685
23683
  let n = t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), r = `(?:"${n}"|\`${n}\`|\\[${n}\\]|\\b${n})`, i = RegExp(`(${r})\\s*(?:\\([^)]*\\)\\s*)?AS\\s*\\(`, "i").exec(e);
23686
23684
  return !i || i.index < 0 || !i[1] ? {
23687
23685
  from: -1,
@@ -23691,8 +23689,8 @@ function xh(e, t) {
23691
23689
  to: i.index + i[1].length
23692
23690
  };
23693
23691
  }
23694
- var Sh = /* @__PURE__ */ new Set(/* @__PURE__ */ "as.on.using.where.join.inner.left.right.full.cross.outer.natural.lateral.group.order.limit.offset.having.union.intersect.except.select.set.values.when.then.and.or.not.in.is.asc.desc.fetch.window.qualify.returning.with".split(".")), Ch = String.raw`(?:[\w$]+|"[^"]+"|\`[^\`]+\`|\[[^\]]+\])`, wh = `(?!(?:${[...Sh].join("|")})\\b)`, Th = new RegExp(String.raw`\b(?:from|join)\s+(${Ch}(?:\.${Ch})*)(?:\s+(?:as\s+)?${wh}(${Ch}))?`, "gi");
23695
- function Eh(e) {
23692
+ var xh = /* @__PURE__ */ new Set(/* @__PURE__ */ "as.on.using.where.join.inner.left.right.full.cross.outer.natural.lateral.group.order.limit.offset.having.union.intersect.except.select.set.values.when.then.and.or.not.in.is.asc.desc.fetch.window.qualify.returning.with".split(".")), Sh = String.raw`(?:[\w$]+|"[^"]+"|\`[^\`]+\`|\[[^\]]+\])`, Ch = `(?!(?:${[...xh].join("|")})\\b)`, wh = new RegExp(String.raw`\b(?:from|join)\s+(${Sh}(?:\.${Sh})*)(?:\s+(?:as\s+)?${Ch}(${Sh}))?`, "gi");
23693
+ function Th(e) {
23696
23694
  let t = e.split(""), n = 0;
23697
23695
  for (; n < e.length;) {
23698
23696
  let r = e[n], i = e[n + 1];
@@ -23729,45 +23727,45 @@ function Eh(e) {
23729
23727
  }
23730
23728
  return t.join("");
23731
23729
  }
23732
- function Dh(e) {
23730
+ function Eh(e) {
23733
23731
  let t = {
23734
23732
  tables: [],
23735
23733
  ctes: [],
23736
23734
  selectAliases: [],
23737
23735
  seenTables: /* @__PURE__ */ new Set(),
23738
23736
  seenCtes: /* @__PURE__ */ new Set()
23739
- }, n = Eh(e);
23740
- Oh(n, t), Th.lastIndex = 0;
23741
- let r = Th.exec(n);
23737
+ }, n = Th(e);
23738
+ Dh(n, t), wh.lastIndex = 0;
23739
+ let r = wh.exec(n);
23742
23740
  for (; r !== null;) {
23743
23741
  let e = r[1], i = r[2];
23744
23742
  if (e) {
23745
- let n = e.split(".").map(mh), r = n[n.length - 1] ?? "", a = i && !Sh.has(i.toLowerCase()) ? mh(i) : void 0, o = `${n.join(".").toLowerCase()}::${a?.toLowerCase() ?? ""}`;
23743
+ let n = e.split(".").map(ph), r = n[n.length - 1] ?? "", a = i && !xh.has(i.toLowerCase()) ? ph(i) : void 0, o = `${n.join(".").toLowerCase()}::${a?.toLowerCase() ?? ""}`;
23746
23744
  r && !t.seenTables.has(o) && (t.seenTables.add(o), t.tables.push({
23747
23745
  name: r,
23748
23746
  path: n,
23749
23747
  ...a ? { alias: a } : {}
23750
23748
  }));
23751
23749
  }
23752
- r = Th.exec(n);
23750
+ r = wh.exec(n);
23753
23751
  }
23754
- return jh(t);
23752
+ return Ah(t);
23755
23753
  }
23756
- function Oh(e, t) {
23757
- let n = /\bWITH\s+(?:RECURSIVE\s+)?/gi, r = new RegExp(String.raw`^(${Ch})\s*(?:\(([^)]*)\)\s*)?AS\s*\(`, "i"), i = n.exec(e);
23754
+ function Dh(e, t) {
23755
+ let n = /\bWITH\s+(?:RECURSIVE\s+)?/gi, r = new RegExp(String.raw`^(${Sh})\s*(?:\(([^)]*)\)\s*)?AS\s*\(`, "i"), i = n.exec(e);
23758
23756
  for (; i !== null;) {
23759
23757
  let a = i.index + i[0].length;
23760
23758
  for (;;) {
23761
- let n = r.exec(e.slice(a)), i = n?.[1], o = i ? mh(i) : void 0;
23759
+ let n = r.exec(e.slice(a)), i = n?.[1], o = i ? ph(i) : void 0;
23762
23760
  if (!n || !i || !o) break;
23763
23761
  let s = a + n[0].length, c = s, l = 1;
23764
23762
  for (; c < e.length && l > 0;) e[c] === "(" ? l++ : e[c] === ")" && l--, c++;
23765
23763
  if (!t.seenCtes.has(o.toLowerCase())) {
23766
23764
  t.seenCtes.add(o.toLowerCase());
23767
- let r = (n[2] ?? "").split(",").map((e) => mh(e.trim())).filter((e) => e.length > 0);
23765
+ let r = (n[2] ?? "").split(",").map((e) => ph(e.trim())).filter((e) => e.length > 0);
23768
23766
  t.ctes.push({
23769
23767
  name: o,
23770
- columns: r.length > 0 ? r : Ah(e.slice(s, Math.max(s, c - 1))),
23768
+ columns: r.length > 0 ? r : kh(e.slice(s, Math.max(s, c - 1))),
23771
23769
  from: a,
23772
23770
  to: a + i.length
23773
23771
  });
@@ -23779,19 +23777,19 @@ function Oh(e, t) {
23779
23777
  i = n.exec(e);
23780
23778
  }
23781
23779
  }
23782
- function kh(e) {
23780
+ function Oh(e) {
23783
23781
  let t = [], n = 0, r = "";
23784
23782
  for (let i of e) i === "(" ? n++ : i === ")" && (n = Math.max(0, n - 1)), i === "," && n === 0 ? (t.push(r), r = "") : r += i;
23785
23783
  return t.push(r), t;
23786
23784
  }
23787
- function Ah(e) {
23785
+ function kh(e) {
23788
23786
  let t = /^\s*SELECT\s+(?:DISTINCT\s+)?([\s\S]*?)\s+FROM\s/i.exec(e);
23789
23787
  if (!t || !t[1]) return [];
23790
23788
  let n = [];
23791
- for (let e of kh(t[1])) {
23792
- let t = e.trim(), r = new RegExp(String.raw`\s+AS\s+(${Ch})$`, "i").exec(t);
23789
+ for (let e of Oh(t[1])) {
23790
+ let t = e.trim(), r = new RegExp(String.raw`\s+AS\s+(${Sh})$`, "i").exec(t);
23793
23791
  if (r?.[1]) {
23794
- n.push(mh(r[1]));
23792
+ n.push(ph(r[1]));
23795
23793
  continue;
23796
23794
  }
23797
23795
  if (/^(?:[\w$]+\.)*[\w$]+$/.test(t)) {
@@ -23801,7 +23799,7 @@ function Ah(e) {
23801
23799
  }
23802
23800
  return n;
23803
23801
  }
23804
- function jh(e) {
23802
+ function Ah(e) {
23805
23803
  let t = /* @__PURE__ */ new Map();
23806
23804
  for (let n of e.tables) if (n.alias) {
23807
23805
  let e = n.alias.toLowerCase();
@@ -23814,14 +23812,14 @@ function jh(e) {
23814
23812
  selectAliases: e.selectAliases
23815
23813
  };
23816
23814
  }
23817
- async function Mh(e, t, n) {
23818
- if (!e.trim()) return dh();
23815
+ async function jh(e, t, n) {
23816
+ if (!e.trim()) return uh();
23819
23817
  let r = null;
23820
23818
  try {
23821
23819
  let i = await t.parse(e, n);
23822
23820
  i.success && i.ast != null && (r = i.ast);
23823
23821
  } catch {}
23824
- if (r == null) return Dh(e);
23822
+ if (r == null) return Eh(e);
23825
23823
  try {
23826
23824
  let t = {
23827
23825
  tables: [],
@@ -23830,29 +23828,29 @@ async function Mh(e, t, n) {
23830
23828
  seenTables: /* @__PURE__ */ new Set(),
23831
23829
  seenCtes: /* @__PURE__ */ new Set()
23832
23830
  }, n = Array.isArray(r) ? r : [r];
23833
- for (let e of n) fh(e) && bh(e, t);
23834
- yh(r, t, /* @__PURE__ */ new Set());
23835
- let i = Eh(e);
23831
+ for (let e of n) dh(e) && yh(e, t);
23832
+ vh(r, t, /* @__PURE__ */ new Set());
23833
+ let i = Th(e);
23836
23834
  for (let e of t.ctes) {
23837
- let t = xh(i, e.name);
23835
+ let t = bh(i, e.name);
23838
23836
  e.from = t.from, e.to = t.to;
23839
23837
  }
23840
- return jh(t);
23838
+ return Ah(t);
23841
23839
  } catch {
23842
- return Dh(e);
23840
+ return Eh(e);
23843
23841
  }
23844
23842
  }
23845
- var Nh = class {
23843
+ var Mh = class {
23846
23844
  parser;
23847
23845
  cache = /* @__PURE__ */ new Map();
23848
23846
  MAX_CACHE_SIZE = 20;
23849
- constructor(e = new sh()) {
23847
+ constructor(e = new oh()) {
23850
23848
  this.parser = e;
23851
23849
  }
23852
23850
  async getContext(e, t) {
23853
23851
  let n = this.cache.get(e);
23854
23852
  if (n) return n;
23855
- let r = await Mh(e, this.parser, t);
23853
+ let r = await jh(e, this.parser, t);
23856
23854
  if (this.cache.set(e, r), this.cache.size > this.MAX_CACHE_SIZE) {
23857
23855
  let e = this.cache.keys().next().value;
23858
23856
  e !== void 0 && this.cache.delete(e);
@@ -23862,7 +23860,7 @@ var Nh = class {
23862
23860
  clearCache() {
23863
23861
  this.cache.clear();
23864
23862
  }
23865
- }, Ph = class {
23863
+ }, Nh = class {
23866
23864
  parser;
23867
23865
  cache = /* @__PURE__ */ new Map();
23868
23866
  MAX_CACHE_SIZE = 10;
@@ -23994,53 +23992,53 @@ var Nh = class {
23994
23992
  };
23995
23993
  //#endregion
23996
23994
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/alias-completion-source.js
23997
- function Fh(e = {}) {
23998
- let t = e.parser ?? new sh(), n = e.contextAnalyzer ?? new Nh(t), r = new Ph(t);
23995
+ function Ph(e = {}) {
23996
+ let t = e.parser ?? new oh(), n = e.contextAnalyzer ?? new Mh(t), r = new Nh(t);
23999
23997
  return async (t) => {
24000
23998
  let i = t.matchBefore(/(?:[\w$]+|"[^"]+"|`[^`]+`|\[[^\]]+\])\.[\w$]*/);
24001
23999
  if (!i || t.state.sliceDoc(Math.max(0, i.from - 1), i.from) === ".") return null;
24002
- let a = i.text.lastIndexOf("."), o = mh(i.text.slice(0, a)), s = await r.getStatementAtPosition(t.state, t.pos), c = s ? t.state.sliceDoc(s.from, s.to) : t.state.doc.toString(), l = await n.getContext(c, { state: t.state }), u = l.aliases.get(o.toLowerCase());
24000
+ let a = i.text.lastIndexOf("."), o = ph(i.text.slice(0, a)), s = await r.getStatementAtPosition(t.state, t.pos), c = s ? t.state.sliceDoc(s.from, s.to) : t.state.doc.toString(), l = await n.getContext(c, { state: t.state }), u = l.aliases.get(o.toLowerCase());
24003
24001
  if (!u) return null;
24004
24002
  let d = null, f = l.ctes.find((e) => e.name.toLowerCase() === u.toLowerCase());
24005
24003
  if (f && f.columns.length > 0) d = f.columns;
24006
24004
  else if (!f) {
24007
- let n = nh(e.schema, t);
24008
- n != null && (d = ih(n, u));
24005
+ let n = th(e.schema, t);
24006
+ n != null && (d = rh(n, u));
24009
24007
  }
24010
24008
  if (!d || d.length === 0) return null;
24011
24009
  let p = `column of ${u}`;
24012
24010
  return {
24013
24011
  from: i.from + a + 1,
24014
- options: d.map((e) => ah(e, p)),
24012
+ options: d.map((e) => ih(e, p)),
24015
24013
  validFor: /^[\w$]*$/
24016
24014
  };
24017
24015
  };
24018
24016
  }
24019
24017
  //#endregion
24020
24018
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/column-completion-source.js
24021
- var Ih = 1, Lh = /\b(?:from|join|into|update|table)\s+$/i, Rh = /\bfrom\s+[\w$."`[\]]+(?:\s+(?:as\s+)?[\w$"`[\]]+)?(?:\s*,\s*[\w$."`[\]]+(?:\s+(?:as\s+)?[\w$"`[\]]+)?)*\s*,\s*$/i;
24022
- function zh(e = {}) {
24023
- let t = e.parser ?? new sh(), n = e.contextAnalyzer ?? new Nh(t), r = new Ph(t);
24019
+ var Fh = 1, Ih = /\b(?:from|join|into|update|table)\s+$/i, Lh = /\bfrom\s+[\w$."`[\]]+(?:\s+(?:as\s+)?[\w$"`[\]]+)?(?:\s*,\s*[\w$."`[\]]+(?:\s+(?:as\s+)?[\w$"`[\]]+)?)*\s*,\s*$/i;
24020
+ function Rh(e = {}) {
24021
+ let t = e.parser ?? new oh(), n = e.contextAnalyzer ?? new Mh(t), r = new Nh(t);
24024
24022
  return async (t) => {
24025
24023
  let i = t.matchBefore(/[\w$]*/);
24026
24024
  if (!i || i.from === i.to && !t.explicit || t.state.sliceDoc(Math.max(0, i.from - 1), i.from) === ".") return null;
24027
24025
  let a = t.state.sliceDoc(Math.max(0, i.from - 256), i.from);
24028
- if (Lh.test(a) || Rh.test(a)) return null;
24029
- let o = await r.getStatementAtPosition(t.state, t.pos), s = o?.from ?? 0, c = o ? t.state.sliceDoc(o.from, o.to) : t.state.doc.toString(), l = Eh(c), u = Math.max(s, i.from - 1) - s, d = i.to - s;
24026
+ if (Ih.test(a) || Lh.test(a)) return null;
24027
+ let o = await r.getStatementAtPosition(t.state, t.pos), s = o?.from ?? 0, c = o ? t.state.sliceDoc(o.from, o.to) : t.state.doc.toString(), l = Th(c), u = Math.max(s, i.from - 1) - s, d = i.to - s;
24030
24028
  if (l.slice(u, d) !== c.slice(u, d)) return null;
24031
24029
  let f = await n.getContext(c, { state: t.state });
24032
24030
  if (f.tables.length === 0) return null;
24033
- let p = nh(e.schema, t), m = [], h = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Set();
24031
+ let p = th(e.schema, t), m = [], h = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Set();
24034
24032
  for (let e of f.tables) {
24035
24033
  let t = e.path.join(".").toLowerCase();
24036
24034
  if (g.has(t)) continue;
24037
24035
  g.add(t);
24038
24036
  let n = f.ctes.find((t) => t.name.toLowerCase() === e.name.toLowerCase()), r = null;
24039
- if (n ? r = n.columns.length > 0 ? n.columns : null : p != null && (r = ih(p, e.path)), !r) continue;
24037
+ if (n ? r = n.columns.length > 0 ? n.columns : null : p != null && (r = rh(p, e.path)), !r) continue;
24040
24038
  let i = `column of ${e.name}`;
24041
24039
  for (let e of r) {
24042
24040
  let t = (typeof e == "string" ? e : e.label).toLowerCase();
24043
- h.has(t) || (h.add(t), m.push(ah(e, i, Ih)));
24041
+ h.has(t) || (h.add(t), m.push(ih(e, i, Fh)));
24044
24042
  }
24045
24043
  }
24046
24044
  return m.length === 0 ? null : {
@@ -24052,30 +24050,30 @@ function zh(e = {}) {
24052
24050
  }
24053
24051
  //#endregion
24054
24052
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/references.js
24055
- var Bh = /[\w$]/, Vh = /"[^"]*"|`[^`]*`|\[[^\]]*\]/g;
24056
- function Hh(e, t) {
24053
+ var zh = /[\w$]/, Bh = /"[^"]*"|`[^`]*`|\[[^\]]*\]/g;
24054
+ function Vh(e, t) {
24057
24055
  let n = e.doc.lineAt(t), r = n.text, i = t - n.from;
24058
- Vh.lastIndex = 0;
24059
- let a = Vh.exec(r);
24056
+ Bh.lastIndex = 0;
24057
+ let a = Bh.exec(r);
24060
24058
  for (; a !== null && a.index <= i;) {
24061
24059
  let e = a.index + a[0].length;
24062
24060
  if (i <= e) return {
24063
24061
  from: n.from + a.index,
24064
24062
  to: n.from + e,
24065
- text: mh(a[0])
24063
+ text: ph(a[0])
24066
24064
  };
24067
- a = Vh.exec(r);
24065
+ a = Bh.exec(r);
24068
24066
  }
24069
24067
  let o = i, s = i;
24070
- for (; o > 0 && Bh.test(r[o - 1] ?? "");) o--;
24071
- for (; s < r.length && Bh.test(r[s] ?? "");) s++;
24068
+ for (; o > 0 && zh.test(r[o - 1] ?? "");) o--;
24069
+ for (; s < r.length && zh.test(r[s] ?? "");) s++;
24072
24070
  return o === s ? null : {
24073
24071
  from: n.from + o,
24074
24072
  to: n.from + s,
24075
24073
  text: r.slice(o, s)
24076
24074
  };
24077
24075
  }
24078
- async function Uh(e, t, n) {
24076
+ async function Hh(e, t, n) {
24079
24077
  let r = await e.analyzeDocument(t), i = null;
24080
24078
  for (let e of r) {
24081
24079
  if (n >= e.from && n <= e.to) return e;
@@ -24083,15 +24081,15 @@ async function Uh(e, t, n) {
24083
24081
  }
24084
24082
  return i;
24085
24083
  }
24086
- function Wh(e) {
24084
+ function Uh(e) {
24087
24085
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
24088
24086
  }
24089
- function Gh(e, t = {}) {
24090
- let n = Wh(e);
24087
+ function Wh(e, t = {}) {
24088
+ let n = Uh(e);
24091
24089
  return `(?:"${n}"|\`${n}\`|\\[${n}\\]|${t.allowLeadingDot ? "(?<![\\w$])" : "(?<![\\w$.])"}${n}(?![\\w$]))`;
24092
24090
  }
24093
- function Kh(e, t, n = {}) {
24094
- let r = new RegExp(Gh(t), "gi"), i = [], a = r.exec(e);
24091
+ function Gh(e, t, n = {}) {
24092
+ let r = new RegExp(Wh(t), "gi"), i = [], a = r.exec(e);
24095
24093
  for (; a !== null;) {
24096
24094
  let t = a.index + a[0].length;
24097
24095
  (!n.followedByDot || e[t] === ".") && i.push({
@@ -24101,19 +24099,19 @@ function Kh(e, t, n = {}) {
24101
24099
  }
24102
24100
  return i;
24103
24101
  }
24104
- function qh(e) {
24102
+ function Kh(e) {
24105
24103
  let t = [], n = 0;
24106
24104
  for (let r = 0; r < e.length; r++) e[r] === ")" && (n = Math.max(0, n - 1)), t[r] = n, e[r] === "(" && n++;
24107
24105
  return t;
24108
24106
  }
24109
- var Jh = /\b(select|from|where|having|qualify|on|set|values|by|join|limit|offset|union|intersect|except|window)\b/gi;
24110
- function Yh(e) {
24111
- Jh.lastIndex = 0;
24112
- let t = null, n = Jh.exec(e);
24113
- for (; n !== null;) t = (n[1] ?? "").toLowerCase(), n = Jh.exec(e);
24107
+ var qh = /\b(select|from|where|having|qualify|on|set|values|by|join|limit|offset|union|intersect|except|window)\b/gi;
24108
+ function Jh(e) {
24109
+ qh.lastIndex = 0;
24110
+ let t = null, n = qh.exec(e);
24111
+ for (; n !== null;) t = (n[1] ?? "").toLowerCase(), n = qh.exec(e);
24114
24112
  return t;
24115
24113
  }
24116
- function Xh(e, t) {
24114
+ function Yh(e, t) {
24117
24115
  let n = t - 1;
24118
24116
  for (;;) {
24119
24117
  for (; n >= 0 && /\s/.test(e[n] ?? "");) n--;
@@ -24124,34 +24122,34 @@ function Xh(e, t) {
24124
24122
  let r = t === "]" ? "[" : t;
24125
24123
  for (n--; n >= 0 && e[n] !== r;) n--;
24126
24124
  n--;
24127
- } else for (; n >= 0 && Bh.test(e[n] ?? "");) n--;
24125
+ } else for (; n >= 0 && zh.test(e[n] ?? "");) n--;
24128
24126
  continue;
24129
24127
  }
24130
24128
  break;
24131
24129
  }
24132
24130
  if (n < 0) return !1;
24133
- if (e[n] === ",") return Yh(e.slice(0, n)) === "from";
24131
+ if (e[n] === ",") return Jh(e.slice(0, n)) === "from";
24134
24132
  let r = /([A-Za-z_]+)$/.exec(e.slice(0, n + 1))?.[1]?.toLowerCase();
24135
24133
  return r === "from" || r === "join";
24136
24134
  }
24137
- function Zh(e) {
24135
+ function Xh(e) {
24138
24136
  let t = /* @__PURE__ */ new Map();
24139
24137
  for (let n of e) t.has(n.from) || t.set(n.from, n);
24140
24138
  return [...t.values()].sort((e, t) => e.from - t.from);
24141
24139
  }
24142
- function Qh(e, t) {
24140
+ function Zh(e, t) {
24143
24141
  return e.some((e) => e.from <= t.from && t.to <= e.to);
24144
24142
  }
24145
- function $h(e, t, n) {
24146
- let r = Eh(e), i = n.text.toLowerCase(), a = t.selectAliases.some((e) => e.toLowerCase() === i), o = t.ctes.find((e) => e.name.toLowerCase() === i);
24143
+ function Qh(e, t, n) {
24144
+ let r = Th(e), i = n.text.toLowerCase(), a = t.selectAliases.some((e) => e.toLowerCase() === i), o = t.ctes.find((e) => e.name.toLowerCase() === i);
24147
24145
  if (o) {
24148
24146
  let e = t.aliases.get(i);
24149
24147
  if (e && e.toLowerCase() !== i || a || o.from < 0) return null;
24150
24148
  let s = {
24151
24149
  from: o.from,
24152
24150
  to: o.to
24153
- }, c = Zh([s, ...Kh(r, o.name).filter((e) => r[e.to] === "." || Xh(r, e.from))]);
24154
- return Qh(c, n) ? {
24151
+ }, c = Xh([s, ...Gh(r, o.name).filter((e) => r[e.to] === "." || Yh(r, e.from))]);
24152
+ return Zh(c, n) ? {
24155
24153
  kind: "cte",
24156
24154
  name: o.name,
24157
24155
  definition: s,
@@ -24162,14 +24160,14 @@ function $h(e, t, n) {
24162
24160
  if (a) return null;
24163
24161
  let e = t.tables.filter((e) => e.alias?.toLowerCase() === i);
24164
24162
  if (e.length !== 1 || !e[0]) return null;
24165
- let o = e[0], s = o.alias ?? n.text, c = Gh(o.name, { allowLeadingDot: !0 }), l = RegExp(`${c}\\s+(?:AS\\s+)?(${Gh(s)})`, "gi"), u = l.exec(r);
24166
- for (; u !== null && !Xh(r, u.index);) u = l.exec(r);
24163
+ let o = e[0], s = o.alias ?? n.text, c = Wh(o.name, { allowLeadingDot: !0 }), l = RegExp(`${c}\\s+(?:AS\\s+)?(${Wh(s)})`, "gi"), u = l.exec(r);
24164
+ for (; u !== null && !Yh(r, u.index);) u = l.exec(r);
24167
24165
  if (!u || u[1] == null) return null;
24168
24166
  let d = {
24169
24167
  from: u.index + u[0].length - u[1].length,
24170
24168
  to: u.index + u[0].length
24171
- }, f = Zh([d, ...Kh(r, s, { followedByDot: !0 })]);
24172
- return Qh(f, n) ? {
24169
+ }, f = Xh([d, ...Gh(r, s, { followedByDot: !0 })]);
24170
+ return Zh(f, n) ? {
24173
24171
  kind: "table-alias",
24174
24172
  name: s,
24175
24173
  definition: d,
@@ -24178,7 +24176,7 @@ function $h(e, t, n) {
24178
24176
  }
24179
24177
  let s = t.selectAliases.find((e) => e.toLowerCase() === i);
24180
24178
  if (s) {
24181
- let e = qh(r), t = (t) => e[t] === 0, i = eg(r, /\bFROM\b/gi, t), a = i ? i.index : r.length, o = RegExp(`\\bAS\\s+(${Gh(s)})`, "gi"), c = null, l = o.exec(r);
24179
+ let e = Kh(r), t = (t) => e[t] === 0, i = $h(r, /\bFROM\b/gi, t), a = i ? i.index : r.length, o = RegExp(`\\bAS\\s+(${Wh(s)})`, "gi"), c = null, l = o.exec(r);
24182
24180
  for (; l !== null;) {
24183
24181
  let e = l.index + l[0].length - (l[1]?.length ?? 0);
24184
24182
  if (t(l.index) && e < a) {
@@ -24191,8 +24189,8 @@ function $h(e, t, n) {
24191
24189
  l = o.exec(r);
24192
24190
  }
24193
24191
  if (!c) return null;
24194
- let u = rg(r, t), d = Kh(r, s).filter((e) => u.some((t) => e.from >= t.from && e.to <= t.to)), f = Zh([c, ...d]);
24195
- return Qh(f, n) ? {
24192
+ let u = ng(r, t), d = Gh(r, s).filter((e) => u.some((t) => e.from >= t.from && e.to <= t.to)), f = Xh([c, ...d]);
24193
+ return Zh(f, n) ? {
24196
24194
  kind: "select-alias",
24197
24195
  name: s,
24198
24196
  definition: c,
@@ -24201,7 +24199,7 @@ function $h(e, t, n) {
24201
24199
  }
24202
24200
  return null;
24203
24201
  }
24204
- function eg(e, t, n) {
24202
+ function $h(e, t, n) {
24205
24203
  let r = t.exec(e);
24206
24204
  for (; r !== null;) {
24207
24205
  if (n(r.index)) return r;
@@ -24209,45 +24207,45 @@ function eg(e, t, n) {
24209
24207
  }
24210
24208
  return null;
24211
24209
  }
24212
- var tg = /\b(?:GROUP\s+BY|ORDER\s+BY|HAVING|QUALIFY)\b/gi, ng = /\b(?:GROUP\s+BY|ORDER\s+BY|HAVING|QUALIFY|LIMIT|OFFSET|FETCH|WINDOW|UNION|INTERSECT|EXCEPT)\b/gi;
24213
- function rg(e, t) {
24210
+ var eg = /\b(?:GROUP\s+BY|ORDER\s+BY|HAVING|QUALIFY)\b/gi, tg = /\b(?:GROUP\s+BY|ORDER\s+BY|HAVING|QUALIFY|LIMIT|OFFSET|FETCH|WINDOW|UNION|INTERSECT|EXCEPT)\b/gi;
24211
+ function ng(e, t) {
24214
24212
  let n = [];
24215
- tg.lastIndex = 0;
24216
- let r = tg.exec(e);
24213
+ eg.lastIndex = 0;
24214
+ let r = eg.exec(e);
24217
24215
  for (; r !== null;) {
24218
24216
  if (t(r.index)) {
24219
24217
  let i = r.index + r[0].length;
24220
- ng.lastIndex = i;
24221
- let a = e.length, o = ng.exec(e);
24218
+ tg.lastIndex = i;
24219
+ let a = e.length, o = tg.exec(e);
24222
24220
  for (; o !== null;) {
24223
24221
  if (t(o.index)) {
24224
24222
  a = o.index;
24225
24223
  break;
24226
24224
  }
24227
- o = ng.exec(e);
24225
+ o = tg.exec(e);
24228
24226
  }
24229
24227
  n.push({
24230
24228
  from: i,
24231
24229
  to: a
24232
24230
  });
24233
24231
  }
24234
- r = tg.exec(e);
24232
+ r = eg.exec(e);
24235
24233
  }
24236
24234
  return n;
24237
24235
  }
24238
- var ig = class {
24236
+ var rg = class {
24239
24237
  structureAnalyzer;
24240
24238
  contextAnalyzer;
24241
24239
  constructor(e = {}) {
24242
- let t = e.parser ?? new sh();
24243
- this.structureAnalyzer = e.structureAnalyzer ?? new Ph(t), this.contextAnalyzer = e.contextAnalyzer ?? new Nh(t);
24240
+ let t = e.parser ?? new oh();
24241
+ this.structureAnalyzer = e.structureAnalyzer ?? new Nh(t), this.contextAnalyzer = e.contextAnalyzer ?? new Mh(t);
24244
24242
  }
24245
24243
  async resolve(e, t) {
24246
- let n = Hh(e, t);
24244
+ let n = Vh(e, t);
24247
24245
  if (!n) return null;
24248
- let r = await Uh(this.structureAnalyzer, e, t);
24246
+ let r = await Hh(this.structureAnalyzer, e, t);
24249
24247
  if (!r || n.from < r.from || n.to > r.to) return null;
24250
- let i = e.sliceDoc(r.from, r.to), a = $h(i, await this.contextAnalyzer.getContext(i, { state: e }), {
24248
+ let i = e.sliceDoc(r.from, r.to), a = Qh(i, await this.contextAnalyzer.getContext(i, { state: e }), {
24251
24249
  from: n.from - r.from,
24252
24250
  to: n.to - r.from,
24253
24251
  text: n.text
@@ -24263,54 +24261,54 @@ var ig = class {
24263
24261
  references: a.references.map(o)
24264
24262
  };
24265
24263
  }
24266
- }, ag = /([\w$]+|"[^"]+"|`[^`]+`|\[[^\]]+\])$/;
24267
- function og(e) {
24264
+ }, ig = /([\w$]+|"[^"]+"|`[^`]+`|\[[^\]]+\])$/;
24265
+ function ag(e) {
24268
24266
  return /\b(?:from|join)\s+$/i.test(e);
24269
24267
  }
24270
- function sg(e) {
24268
+ function og(e) {
24271
24269
  return /^[A-Za-z_][\w$]*$/.test(e);
24272
24270
  }
24273
- function cg(e) {
24271
+ function sg(e) {
24274
24272
  return {
24275
24273
  label: e.name,
24276
24274
  type: "variable",
24277
24275
  info: `Common Table Expression: ${e.name}`,
24278
24276
  boost: 10,
24279
- ...sg(e.name) ? {} : { apply: `"${e.name}"` }
24277
+ ...og(e.name) ? {} : { apply: `"${e.name}"` }
24280
24278
  };
24281
24279
  }
24282
- function lg(e) {
24280
+ function cg(e) {
24283
24281
  return e.columns.map((t) => ({
24284
24282
  label: t,
24285
24283
  type: "property",
24286
24284
  detail: `column of ${e.name}`,
24287
24285
  boost: 5,
24288
- ...sg(t) ? {} : { apply: `"${t}"` }
24286
+ ...og(t) ? {} : { apply: `"${t}"` }
24289
24287
  }));
24290
24288
  }
24291
- function ug(e = {}) {
24292
- let t = e.parser ?? new sh(), n = e.contextAnalyzer ?? new Nh(t), r = e.structureAnalyzer ?? new Ph(t);
24289
+ function lg(e = {}) {
24290
+ let t = e.parser ?? new oh(), n = e.contextAnalyzer ?? new Mh(t), r = e.structureAnalyzer ?? new Nh(t);
24293
24291
  return async (e) => {
24294
24292
  let t = e.matchBefore(/[\w$]*/);
24295
24293
  if (!t) return null;
24296
24294
  let i = e.state.sliceDoc(Math.max(0, t.from - 1), t.from) === ".";
24297
24295
  if (t.from === t.to && !e.explicit && !i) return null;
24298
- let a = await Uh(r, e.state, e.pos), o = a ? e.state.sliceDoc(a.from, a.to) : e.state.doc.toString(), s = await n.getContext(o, { state: e.state });
24296
+ let a = await Hh(r, e.state, e.pos), o = a ? e.state.sliceDoc(a.from, a.to) : e.state.doc.toString(), s = await n.getContext(o, { state: e.state });
24299
24297
  if (s.ctes.length === 0) return null;
24300
24298
  if (i) {
24301
- let n = e.state.doc.lineAt(t.from), r = e.state.sliceDoc(n.from, t.from - 1), i = ag.exec(r);
24299
+ let n = e.state.doc.lineAt(t.from), r = e.state.sliceDoc(n.from, t.from - 1), i = ig.exec(r);
24302
24300
  if (!i || !i[1] || r.slice(0, r.length - i[1].length).endsWith(".")) return null;
24303
- let a = mh(i[1]).toLowerCase(), o = s.ctes.find((e) => e.name.toLowerCase() === a);
24301
+ let a = ph(i[1]).toLowerCase(), o = s.ctes.find((e) => e.name.toLowerCase() === a);
24304
24302
  return !o || o.columns.length === 0 ? null : {
24305
24303
  from: t.from,
24306
- options: lg(o),
24304
+ options: cg(o),
24307
24305
  validFor: /^[\w$]*$/
24308
24306
  };
24309
24307
  }
24310
- let c = s.ctes.map(cg);
24311
- if (!og(e.state.sliceDoc(Math.max(0, t.from - 64), t.from))) {
24308
+ let c = s.ctes.map(sg);
24309
+ if (!ag(e.state.sliceDoc(Math.max(0, t.from - 64), t.from))) {
24312
24310
  let e = new Set(s.tables.map((e) => e.name.toLowerCase())), t = /* @__PURE__ */ new Set();
24313
- for (let n of s.ctes) if (e.has(n.name.toLowerCase())) for (let e of lg(n)) {
24311
+ for (let n of s.ctes) if (e.has(n.name.toLowerCase())) for (let e of cg(n)) {
24314
24312
  let n = e.label.toLowerCase();
24315
24313
  t.has(n) || (t.add(n), c.push(e));
24316
24314
  }
@@ -24324,59 +24322,59 @@ function ug(e = {}) {
24324
24322
  }
24325
24323
  //#endregion
24326
24324
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/diagnostics.js
24327
- var dg = 750;
24328
- function fg(e, t) {
24325
+ var ug = 750;
24326
+ function dg(e, t) {
24329
24327
  if (t >= e.length) return e.length;
24330
24328
  let n = e.lineAt(t), r = n.text.slice(t - n.from).match(/^[\w"'`.]+/);
24331
24329
  return r ? t + r[0].length : Math.min(t + 1, e.length);
24332
24330
  }
24333
- function pg(e, t) {
24331
+ function fg(e, t) {
24334
24332
  let n = t.line(Math.min(e.line, t.lines)), r = Math.min(n.from + Math.max(0, e.column - 1), t.length);
24335
24333
  return {
24336
24334
  from: r,
24337
- to: fg(t, r),
24335
+ to: dg(t, r),
24338
24336
  severity: e.severity,
24339
24337
  message: e.message,
24340
24338
  source: "sql-parser"
24341
24339
  };
24342
24340
  }
24343
- function mg(e, t, n) {
24341
+ function pg(e, t, n) {
24344
24342
  let r;
24345
24343
  return r = e.line <= 1 ? t.from + Math.max(0, e.column - 1) : n.line(Math.min(t.lineFrom + e.line - 1, n.lines)).from + Math.max(0, e.column - 1), r = Math.max(t.from, Math.min(r, t.to)), {
24346
24344
  from: r,
24347
- to: Math.max(r, Math.min(fg(n, r), t.to)),
24345
+ to: Math.max(r, Math.min(dg(n, r), t.to)),
24348
24346
  severity: e.severity,
24349
24347
  message: e.message,
24350
24348
  source: "sql-parser"
24351
24349
  };
24352
24350
  }
24353
- function hg(e = {}) {
24354
- return wt(gg(e), { delay: e.delay || dg });
24351
+ function mg(e = {}) {
24352
+ return wt(hg(e), { delay: e.delay || ug });
24355
24353
  }
24356
- function gg(e = {}) {
24357
- let t = e.parser || new sh(), n = e.perStatement !== !1, r = e.structureAnalyzer || new Ph(t);
24354
+ function hg(e = {}) {
24355
+ let t = e.parser || new oh(), n = e.perStatement !== !1, r = e.structureAnalyzer || new Nh(t);
24358
24356
  return async (e) => {
24359
24357
  let i = e.state.doc, a = i.toString();
24360
- return a.trim() ? n ? (await r.analyzeDocument(e.state)).flatMap((e) => e.errors.map((t) => mg(t, e, i))) : (await t.validateSql(a, { state: e.state })).map((e) => pg(e, i)) : [];
24358
+ return a.trim() ? n ? (await r.analyzeDocument(e.state)).flatMap((e) => e.errors.map((t) => pg(t, e, i))) : (await t.validateSql(a, { state: e.state })).map((e) => fg(e, i)) : [];
24361
24359
  };
24362
24360
  }
24363
24361
  //#endregion
24364
24362
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/hover.js
24365
- function _g(e, t) {
24363
+ function gg(e, t) {
24366
24364
  if (t.size === 0) return {};
24367
- if (Um(e)) {
24365
+ if (Hm(e)) {
24368
24366
  let n = {};
24369
24367
  for (let [r, i] of Object.entries(e)) if (Array.from(t).some((e) => e.toLowerCase() === r.toLowerCase())) n[r] = i;
24370
- else if (Um(i)) {
24371
- let e = _g(i, t);
24368
+ else if (Hm(i)) {
24369
+ let e = gg(i, t);
24372
24370
  Object.keys(e).length > 0 && (n[r] = e);
24373
24371
  }
24374
24372
  return n;
24375
24373
  }
24376
24374
  return e;
24377
24375
  }
24378
- function vg(e = {}) {
24379
- let { schema: t, keywords: n = {}, enableKeywords: r = !0, enableTables: i = !0, enableColumns: a = !0, enableFuzzySearch: o = !0, parser: s = new sh(), tooltipRender: c, tooltipRenderers: l = {} } = e, u = new Ph(s), d = e.contextAnalyzer ?? new Nh(s), f = null;
24376
+ function _g(e = {}) {
24377
+ let { schema: t, keywords: n = {}, enableKeywords: r = !0, enableTables: i = !0, enableColumns: a = !0, enableFuzzySearch: o = !0, parser: s = new oh(), tooltipRender: c, tooltipRenderers: l = {} } = e, u = new Nh(s), d = e.contextAnalyzer ?? new Mh(s), f = null;
24380
24378
  return async (e, s, p) => {
24381
24379
  let { from: m, to: h, text: g } = e.state.doc.lineAt(s), _ = s, v = s;
24382
24380
  f === null && (f = typeof n == "function" ? n(e) : Promise.resolve(n));
@@ -24391,7 +24389,7 @@ function vg(e = {}) {
24391
24389
  if (_ === s && p < 0 || v === s && p > 0) return null;
24392
24390
  let b = g.slice(_ - m, v - m).toLowerCase();
24393
24391
  if (!b || b.length === 0) return null;
24394
- let x = th(t, e) ?? {}, S = null;
24392
+ let x = eh(t, e) ?? {}, S = null;
24395
24393
  `${b}`;
24396
24394
  let C = Object.hasOwn(y, b) ? y[b] : void 0;
24397
24395
  if (!S && r && C && (S = {
@@ -24404,8 +24402,8 @@ function vg(e = {}) {
24404
24402
  info: C
24405
24403
  }
24406
24404
  }), !S && (i || a) && x) {
24407
- let t = await u.getStatementAtPosition(e.state, s), n = t ? e.state.doc.sliceString(t.from, t.to) : e.state.doc.toString(), r = await d.getContext(n, { state: e.state }), [c = "", ...l] = b.split("."), f = r.aliases.get(c), p = f ? [f, ...l].join(".").toLowerCase() : b, m = new Set(r.tables.map((e) => e.name.toLowerCase())), h = _g(x, m), g = $m(h, p, { enableFuzzySearch: o });
24408
- if (!g && m.size === 0 && (g = $m(x, p, { enableFuzzySearch: o })), g) {
24405
+ let t = await u.getStatementAtPosition(e.state, s), n = t ? e.state.doc.sliceString(t.from, t.to) : e.state.doc.toString(), r = await d.getContext(n, { state: e.state }), [c = "", ...l] = b.split("."), f = r.aliases.get(c), p = f ? [f, ...l].join(".").toLowerCase() : b, m = new Set(r.tables.map((e) => e.name.toLowerCase())), h = gg(x, m), g = Qm(h, p, { enableFuzzySearch: o });
24406
+ if (!g && m.size === 0 && (g = Qm(x, p, { enableFuzzySearch: o })), g) {
24409
24407
  let { semanticType: e } = g;
24410
24408
  (e === "table" && !i || e === "column" && !a) && (g = null);
24411
24409
  }
@@ -24434,10 +24432,10 @@ function vg(e = {}) {
24434
24432
  if (t) return { dom: t };
24435
24433
  }
24436
24434
  let t = null;
24437
- if (w.tooltipType === "keyword" && w.keywordData) t = l.keyword ? l.keyword(w.keywordData) : Cg(w.keywordData);
24435
+ if (w.tooltipType === "keyword" && w.keywordData) t = l.keyword ? l.keyword(w.keywordData) : Sg(w.keywordData);
24438
24436
  else if (w.tooltipType === "namespace" && w.namespaceData) {
24439
24437
  let e = w.namespaceData, { semanticType: n } = e.item;
24440
- n === "table" && l.table ? t = l.table(e) : n === "column" && l.column ? t = l.column(e) : (n === "database" || n === "schema" || n === "namespace") && l.namespace ? t = l.namespace(e) : (t = xg(e.item), e.aliasFor && (t = `<div class="sql-hover-alias"><code>${bg(e.word.split(".")[0] ?? "")}</code> is an alias for <code>${bg(e.aliasFor)}</code></div>` + t));
24438
+ n === "table" && l.table ? t = l.table(e) : n === "column" && l.column ? t = l.column(e) : (n === "database" || n === "schema" || n === "namespace") && l.namespace ? t = l.namespace(e) : (t = bg(e.item), e.aliasFor && (t = `<div class="sql-hover-alias"><code>${yg(e.word.split(".")[0] ?? "")}</code> is an alias for <code>${yg(e.aliasFor)}</code></div>` + t));
24441
24439
  }
24442
24440
  if (!t) return { dom: document.createElement("div") };
24443
24441
  let n = document.createElement("div");
@@ -24446,25 +24444,25 @@ function vg(e = {}) {
24446
24444
  };
24447
24445
  };
24448
24446
  }
24449
- function yg(e = {}) {
24447
+ function vg(e = {}) {
24450
24448
  let { hoverTime: t = 300 } = e;
24451
- return mt(vg(e), { hoverTime: t });
24449
+ return mt(_g(e), { hoverTime: t });
24452
24450
  }
24453
- function bg(e) {
24451
+ function yg(e) {
24454
24452
  return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
24455
24453
  }
24456
- function xg(e) {
24454
+ function bg(e) {
24457
24455
  let t = e.path.join("."), n = e.completion?.label || e.value || e.path[e.path.length - 1] || "unknown", r = `<div class="sql-hover-${e.semanticType}">`;
24458
24456
  switch (r += `<div class="sql-hover-header"><strong>${n}</strong> <span class="sql-hover-type">${e.semanticType}</span></div>`, e.semanticType) {
24459
24457
  case "database":
24460
24458
  if (r += `<div class="sql-hover-description">Database${e.completion?.detail ? `: ${e.completion.detail}` : ""}</div>`, e.namespace) {
24461
- let t = Sg(e.namespace);
24459
+ let t = xg(e.namespace);
24462
24460
  t > 0 && (r += `<div class="sql-hover-children">Contains ${t} schema${t === 1 ? "" : "s"}</div>`);
24463
24461
  }
24464
24462
  break;
24465
24463
  case "schema":
24466
24464
  if (r += `<div class="sql-hover-description">Schema${e.completion?.detail ? `: ${e.completion.detail}` : ""}</div>`, t && (r += `<div class="sql-hover-path"><strong>Path:</strong> <code>${t}</code></div>`), e.namespace) {
24467
- let t = Sg(e.namespace);
24465
+ let t = xg(e.namespace);
24468
24466
  t > 0 && (r += `<div class="sql-hover-children">Contains ${t} table${t === 1 ? "" : "s"}</div>`);
24469
24467
  }
24470
24468
  break;
@@ -24473,7 +24471,7 @@ function xg(e) {
24473
24471
  let t = e.path;
24474
24472
  t.length > 1 && (r += `<div class="sql-hover-path"><strong>Schema:</strong> <code>${t.slice(0, -1).join(".")}</code></div>`);
24475
24473
  }
24476
- if (e.namespace && Gm(e.namespace)) {
24474
+ if (e.namespace && Wm(e.namespace)) {
24477
24475
  let t = e.namespace;
24478
24476
  if (t.length > 0) {
24479
24477
  r += `<div class="sql-hover-columns"><strong>Columns (${t.length}):</strong><br>`;
@@ -24489,16 +24487,16 @@ function xg(e) {
24489
24487
  }
24490
24488
  break;
24491
24489
  default: if (r += `<div class="sql-hover-description">Namespace${e.completion?.detail ? `: ${e.completion.detail}` : ""}</div>`, t && (r += `<div class="sql-hover-path"><strong>Path:</strong> <code>${t}</code></div>`), e.namespace) {
24492
- let t = Sg(e.namespace);
24490
+ let t = xg(e.namespace);
24493
24491
  t > 0 && (r += `<div class="sql-hover-children">Contains ${t} item${t === 1 ? "" : "s"}</div>`);
24494
24492
  }
24495
24493
  }
24496
24494
  return e.completion?.info && typeof e.completion.info == "string" && (r += `<div class="sql-hover-info">${e.completion.info}</div>`), r += "</div>", r;
24497
24495
  }
24498
- function Sg(e) {
24499
- return Array.isArray(e) ? e.length : typeof e == "object" && e ? "self" in e && "children" in e ? 1 + Sg(e.children) : Object.keys(e).length : 0;
24496
+ function xg(e) {
24497
+ return Array.isArray(e) ? e.length : typeof e == "object" && e ? "self" in e && "children" in e ? 1 + xg(e.children) : Object.keys(e).length : 0;
24500
24498
  }
24501
- function Cg(e) {
24499
+ function Sg(e) {
24502
24500
  let { keyword: t, info: n } = e, r = "<div class=\"sql-hover-keyword\">";
24503
24501
  if (r += `<div class="sql-hover-header"><strong>${t.toUpperCase()}</strong> <span class="sql-hover-type">keyword</span></div>`, r += `<div class="sql-hover-description">${n.description}</div>`, n.syntax && (r += `<div class="sql-hover-syntax"><strong>Syntax:</strong> <code>${n.syntax}</code></div>`), n.example && (r += `<div class="sql-hover-example"><strong>Example:</strong><br><code>${n.example}</code></div>`), n.metadata && typeof n.metadata == "object" && Object.keys(n.metadata).length > 0) {
24504
24502
  r += "<div class=\"sql-hover-metadata\">";
@@ -24507,7 +24505,7 @@ function Cg(e) {
24507
24505
  }
24508
24506
  return r += "</div>", r;
24509
24507
  }
24510
- function wg(e) {
24508
+ function Cg(e) {
24511
24509
  let { tableName: t, columns: n, metadata: r } = e, i = "<div class=\"sql-hover-table\">";
24512
24510
  if (i += `<div class="sql-hover-header"><strong>${t}</strong> <span class="sql-hover-type">table</span></div>`, i += `<div class="sql-hover-description">Table with ${n.length} column${n.length === 1 ? "" : "s"}</div>`, n.length > 0) {
24513
24511
  i += "<div class=\"sql-hover-columns\"><strong>Columns:</strong><br>";
@@ -24521,7 +24519,7 @@ function wg(e) {
24521
24519
  }
24522
24520
  return i += "</div>", i;
24523
24521
  }
24524
- function Tg(e) {
24522
+ function wg(e) {
24525
24523
  let { tableName: t, columnName: n, schema: r, metadata: i } = e, a = "<div class=\"sql-hover-column\">";
24526
24524
  a += `<div class="sql-hover-header"><strong>${n}</strong> <span class="sql-hover-type">column</span></div>`, a += `<div class="sql-hover-description">Column in table <code>${t}</code></div>`;
24527
24525
  let o = r[t];
@@ -24540,12 +24538,12 @@ function Tg(e) {
24540
24538
  }
24541
24539
  return a += "</div>", a;
24542
24540
  }
24543
- var Eg = {
24544
- keyword: Cg,
24545
- table: wg,
24546
- column: Tg,
24547
- namespace: xg
24548
- }, Dg = (e = "light") => {
24541
+ var Tg = {
24542
+ keyword: Sg,
24543
+ table: Cg,
24544
+ column: wg,
24545
+ namespace: bg
24546
+ }, Eg = (e = "light") => {
24549
24547
  let t = e === "dark" ? {
24550
24548
  tooltipBg: "#1f2937",
24551
24549
  tooltipBorder: "#374151",
@@ -24669,32 +24667,32 @@ var Eg = {
24669
24667
  };
24670
24668
  //#endregion
24671
24669
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/navigation-extension.js
24672
- function Og(e) {
24673
- return e.resolver ?? new ig(e);
24670
+ function Dg(e) {
24671
+ return e.resolver ?? new rg(e);
24674
24672
  }
24675
- var kg = He.baseTheme({
24673
+ var Og = He.baseTheme({
24676
24674
  ".cm-sqlReference": { backgroundColor: "rgba(96, 165, 250, 0.18)" },
24677
24675
  ".cm-sqlReference.cm-sqlDefinition": { backgroundColor: "rgba(96, 165, 250, 0.35)" },
24678
24676
  ".cm-sqlGotoTarget": {
24679
24677
  textDecoration: "underline",
24680
24678
  cursor: "pointer"
24681
24679
  }
24682
- }), Ag = st.mark({ class: "cm-sqlReference" }), jg = st.mark({ class: "cm-sqlReference cm-sqlDefinition" }), Mg = st.mark({ class: "cm-sqlGotoTarget" });
24683
- function Ng(e) {
24684
- return st.set(e.references.map((t) => (t.from === e.definition.from ? jg : Ag).range(t.from, t.to)), !0);
24680
+ }), kg = st.mark({ class: "cm-sqlReference" }), Ag = st.mark({ class: "cm-sqlReference cm-sqlDefinition" }), jg = st.mark({ class: "cm-sqlGotoTarget" });
24681
+ function Mg(e) {
24682
+ return st.set(e.references.map((t) => (t.from === e.definition.from ? Ag : kg).range(t.from, t.to)), !0);
24685
24683
  }
24686
- var Pg = et.define(), Fg = xt.define({
24684
+ var Ng = et.define(), Pg = xt.define({
24687
24685
  create: () => st.none,
24688
24686
  update(e, t) {
24689
- for (let e of t.effects) if (e.is(Pg)) return e.value;
24687
+ for (let e of t.effects) if (e.is(Ng)) return e.value;
24690
24688
  return t.docChanged ? e.map(t.changes) : e;
24691
24689
  },
24692
24690
  provide: (e) => He.decorations.from(e)
24693
24691
  });
24694
- function Ig(e = {}) {
24695
- let t = Og(e), n = e.highlightDelay ?? 150;
24692
+ function Fg(e = {}) {
24693
+ let t = Dg(e), n = e.highlightDelay ?? 150;
24696
24694
  return [
24697
- Fg,
24695
+ Pg,
24698
24696
  ht.fromClass(class {
24699
24697
  view;
24700
24698
  timer = null;
@@ -24714,21 +24712,21 @@ function Ig(e = {}) {
24714
24712
  let e = this.generation, n = this.view.state, r = n.selection.main, i = st.none;
24715
24713
  if (r.empty) try {
24716
24714
  let e = await t.resolve(n, r.head);
24717
- e && (i = Ng(e));
24715
+ e && (i = Mg(e));
24718
24716
  } catch {}
24719
24717
  if (e !== this.generation) return;
24720
- let a = this.view.state.field(Fg, !1);
24721
- (i.size !== 0 || a != null && a.size !== 0) && this.view.dispatch({ effects: Pg.of(i) });
24718
+ let a = this.view.state.field(Pg, !1);
24719
+ (i.size !== 0 || a != null && a.size !== 0) && this.view.dispatch({ effects: Ng.of(i) });
24722
24720
  }
24723
24721
  destroy() {
24724
24722
  this.generation++, this.timer != null && clearTimeout(this.timer);
24725
24723
  }
24726
24724
  }),
24727
- kg
24725
+ Og
24728
24726
  ];
24729
24727
  }
24730
- async function Lg(e, t, n = {}) {
24731
- let r = e.state, i = t ?? r.selection.main.head, a = await Og(n).resolve(r, i);
24728
+ async function Ig(e, t, n = {}) {
24729
+ let r = e.state, i = t ?? r.selection.main.head, a = await Dg(n).resolve(r, i);
24732
24730
  return !a || e.state !== r ? !1 : (e.dispatch({
24733
24731
  selection: {
24734
24732
  anchor: a.definition.from,
@@ -24738,18 +24736,18 @@ async function Lg(e, t, n = {}) {
24738
24736
  userEvent: "select"
24739
24737
  }), !0);
24740
24738
  }
24741
- var Rg = et.define(), zg = xt.define({
24739
+ var Lg = et.define(), Rg = xt.define({
24742
24740
  create: () => st.none,
24743
24741
  update(e, t) {
24744
- for (let e of t.effects) if (e.is(Rg)) return e.value;
24742
+ for (let e of t.effects) if (e.is(Lg)) return e.value;
24745
24743
  return t.docChanged ? e.map(t.changes) : e;
24746
24744
  },
24747
24745
  provide: (e) => He.decorations.from(e)
24748
24746
  });
24749
- function Bg(e = {}) {
24750
- let t = Og(e);
24747
+ function zg(e = {}) {
24748
+ let t = Dg(e);
24751
24749
  return [
24752
- zg,
24750
+ Rg,
24753
24751
  ht.fromClass(class {
24754
24752
  view;
24755
24753
  hovered = null;
@@ -24765,12 +24763,12 @@ function Bg(e = {}) {
24765
24763
  clear() {
24766
24764
  if (this.hovered) {
24767
24765
  this.hovered = null;
24768
- let e = this.view.state.field(zg, !1);
24769
- e && e.size > 0 && this.view.dispatch({ effects: Rg.of(st.none) });
24766
+ let e = this.view.state.field(Rg, !1);
24767
+ e && e.size > 0 && this.view.dispatch({ effects: Lg.of(st.none) });
24770
24768
  }
24771
24769
  }
24772
24770
  async hover(e) {
24773
- let n = Hh(this.view.state, e);
24771
+ let n = Vh(this.view.state, e);
24774
24772
  if (!n) {
24775
24773
  this.clear();
24776
24774
  return;
@@ -24786,7 +24784,7 @@ function Bg(e = {}) {
24786
24784
  try {
24787
24785
  let a = await t.resolve(i, e);
24788
24786
  if (this.hovered !== r || this.view.state !== i) return;
24789
- r.result = a, this.view.dispatch({ effects: Rg.of(a ? st.set([Mg.range(n.from, n.to)]) : st.none) });
24787
+ r.result = a, this.view.dispatch({ effects: Lg.of(a ? st.set([jg.range(n.from, n.to)]) : st.none) });
24790
24788
  } catch {}
24791
24789
  }
24792
24790
  destroy() {
@@ -24826,15 +24824,15 @@ function Bg(e = {}) {
24826
24824
  }), !0) : !1;
24827
24825
  }
24828
24826
  } }),
24829
- kg
24827
+ Og
24830
24828
  ];
24831
24829
  }
24832
- var Vg = (e) => typeof window < "u" && typeof window.prompt == "function" ? window.prompt(`Rename '${e}' to:`, e) : null, Hg = /^[A-Za-z_][\w$]*$/, Ug = /* @__PURE__ */ new Set(/* @__PURE__ */ "all.and.as.asc.between.by.case.cross.delete.desc.distinct.else.end.except.exists.fetch.from.full.group.having.in.inner.insert.intersect.into.is.join.lateral.left.like.limit.natural.not.null.offset.on.or.order.outer.qualify.recursive.right.select.set.table.then.union.update.using.values.when.where.window.with".split("."));
24833
- async function Wg(e, t = {}) {
24834
- let n = e.state, r = await Og(t).resolve(n, n.selection.main.head);
24830
+ var Bg = (e) => typeof window < "u" && typeof window.prompt == "function" ? window.prompt(`Rename '${e}' to:`, e) : null, Vg = /^[A-Za-z_][\w$]*$/, Hg = /* @__PURE__ */ new Set(/* @__PURE__ */ "all.and.as.asc.between.by.case.cross.delete.desc.distinct.else.end.except.exists.fetch.from.full.group.having.in.inner.insert.intersect.into.is.join.lateral.left.like.limit.natural.not.null.offset.on.or.order.outer.qualify.recursive.right.select.set.table.then.union.update.using.values.when.where.window.with".split("."));
24831
+ async function Ug(e, t = {}) {
24832
+ let n = e.state, r = await Dg(t).resolve(n, n.selection.main.head);
24835
24833
  if (!r) return !1;
24836
- let i = await (t.prompt ?? Vg)(r.name);
24837
- return !i || i === r.name || !Hg.test(i) || Ug.has(i.toLowerCase()) || e.state !== n ? !1 : (e.dispatch({
24834
+ let i = await (t.prompt ?? Bg)(r.name);
24835
+ return !i || i === r.name || !Vg.test(i) || Hg.has(i.toLowerCase()) || e.state !== n ? !1 : (e.dispatch({
24838
24836
  changes: r.references.map((e) => ({
24839
24837
  from: e.from,
24840
24838
  to: e.to,
@@ -24843,36 +24841,36 @@ async function Wg(e, t = {}) {
24843
24841
  userEvent: "rename"
24844
24842
  }), !0);
24845
24843
  }
24846
- function Gg(e = {}) {
24844
+ function Wg(e = {}) {
24847
24845
  let t = {
24848
24846
  ...e,
24849
- resolver: Og(e)
24847
+ resolver: Dg(e)
24850
24848
  }, n = e.gotoDefinitionKeys ?? ["F12", "Mod-b"], r = e.renameKey ?? "F2";
24851
24849
  return dt.of([...n.map((e) => ({
24852
24850
  key: e,
24853
- run: (e) => (Lg(e, void 0, t), !0)
24851
+ run: (e) => (Ig(e, void 0, t), !0)
24854
24852
  })), {
24855
24853
  key: r,
24856
- run: (e) => (Wg(e, t), !0)
24854
+ run: (e) => (Ug(e, t), !0)
24857
24855
  }]);
24858
24856
  }
24859
- function Kg(e = {}) {
24857
+ function Gg(e = {}) {
24860
24858
  let t = {
24861
24859
  ...e,
24862
- resolver: Og(e)
24863
- }, n = [Ig(t), Bg(t)];
24864
- return e.keymap && n.push(Gg(t)), n;
24860
+ resolver: Dg(e)
24861
+ }, n = [Fg(t), zg(t)];
24862
+ return e.keymap && n.push(Wg(t)), n;
24865
24863
  }
24866
24864
  //#endregion
24867
24865
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/semantic-diagnostics.js
24868
- var qg = 750;
24869
- function Jg(e) {
24866
+ var Kg = 750;
24867
+ function qg(e) {
24870
24868
  return typeof e == "object" && !!e && !Array.isArray(e) && e.type === "select";
24871
24869
  }
24872
- function Yg(e) {
24870
+ function Jg(e) {
24873
24871
  return Array.isArray(e) ? e : [];
24874
24872
  }
24875
- function Xg(e) {
24873
+ function Yg(e) {
24876
24874
  return {
24877
24875
  sources: [],
24878
24876
  columnRefs: [],
@@ -24881,23 +24879,23 @@ function Xg(e) {
24881
24879
  hasUsingJoin: !1
24882
24880
  };
24883
24881
  }
24884
- function Zg(e, t, n) {
24885
- let r = Yg(e.with);
24882
+ function Xg(e, t, n) {
24883
+ let r = Jg(e.with);
24886
24884
  for (let e of r) {
24887
24885
  let n = e.name, r = typeof n == "string" ? n : n?.value;
24888
24886
  typeof r == "string" && t.add(r.toLowerCase());
24889
24887
  }
24890
24888
  for (let e of r) {
24891
24889
  let r = e.stmt, i = r?.ast ?? r;
24892
- Jg(i) && e_(i, t, n, !1);
24890
+ qg(i) && $g(i, t, n, !1);
24893
24891
  }
24894
24892
  }
24895
- function Qg(e, t, n, r) {
24896
- e.using != null && (t.hasUsingJoin = !0), typeof e.join == "string" && e.join.toLowerCase().includes("natural") && (t.hasUsingJoin = !0), e.on != null && $g(e.on, t, n, r);
24893
+ function Zg(e, t, n, r) {
24894
+ e.using != null && (t.hasUsingJoin = !0), typeof e.join == "string" && e.join.toLowerCase().includes("natural") && (t.hasUsingJoin = !0), e.on != null && Qg(e.on, t, n, r);
24897
24895
  let i = e.expr;
24898
24896
  if (i != null) {
24899
24897
  let a = i.ast ?? i;
24900
- Jg(a) && e_(a, n, r, !1), t.sources.push({
24898
+ qg(a) && $g(a, n, r, !1), t.sources.push({
24901
24899
  path: "",
24902
24900
  name: "",
24903
24901
  alias: typeof e.as == "string" ? e.as : null,
@@ -24921,10 +24919,10 @@ function Qg(e, t, n, r) {
24921
24919
  });
24922
24920
  }
24923
24921
  }
24924
- function $g(e, t, n, r) {
24922
+ function Qg(e, t, n, r) {
24925
24923
  if (typeof e != "object" || !e) return;
24926
24924
  if (Array.isArray(e)) {
24927
- for (let i of e) $g(i, t, n, r);
24925
+ for (let i of e) Qg(i, t, n, r);
24928
24926
  return;
24929
24927
  }
24930
24928
  let i = e;
@@ -24932,78 +24930,78 @@ function $g(e, t, n, r) {
24932
24930
  t.columnRefs.push(i);
24933
24931
  return;
24934
24932
  }
24935
- if (Jg(i)) {
24936
- e_(i, n, r, !0);
24933
+ if (qg(i)) {
24934
+ $g(i, n, r, !0);
24937
24935
  return;
24938
24936
  }
24939
- if (Jg(i.ast)) {
24940
- e_(i.ast, n, r, !0);
24937
+ if (qg(i.ast)) {
24938
+ $g(i.ast, n, r, !0);
24941
24939
  return;
24942
24940
  }
24943
- for (let [e, a] of Object.entries(i)) e !== "loc" && e !== "tableList" && e !== "columnList" && $g(a, t, n, r);
24941
+ for (let [e, a] of Object.entries(i)) e !== "loc" && e !== "tableList" && e !== "columnList" && Qg(a, t, n, r);
24944
24942
  }
24945
- function e_(e, t, n, r) {
24943
+ function $g(e, t, n, r) {
24946
24944
  let i = new Set(t);
24947
- Zg(e, i, n);
24948
- let a = Xg(!r);
24945
+ Xg(e, i, n);
24946
+ let a = Yg(!r);
24949
24947
  n.push(a);
24950
- for (let t of Yg(e.from)) Qg(t, a, i, n);
24951
- for (let t of Yg(e.columns)) typeof t.as == "string" && a.selectAliases.add(t.as.toLowerCase());
24952
- for (let [t, r] of Object.entries(e)) t !== "with" && t !== "from" && t !== "loc" && $g(r, a, i, n);
24948
+ for (let t of Jg(e.from)) Zg(t, a, i, n);
24949
+ for (let t of Jg(e.columns)) typeof t.as == "string" && a.selectAliases.add(t.as.toLowerCase());
24950
+ for (let [t, r] of Object.entries(e)) t !== "with" && t !== "from" && t !== "loc" && Qg(r, a, i, n);
24953
24951
  }
24954
- function t_(e, t) {
24952
+ function e_(e, t) {
24955
24953
  let n = /* @__PURE__ */ new Set();
24956
24954
  switch (e.type) {
24957
24955
  case "select":
24958
- e_(e, n, t, !1);
24956
+ $g(e, n, t, !1);
24959
24957
  return;
24960
24958
  case "update": {
24961
- Zg(e, n, t);
24962
- let r = Xg(!0);
24959
+ Xg(e, n, t);
24960
+ let r = Yg(!0);
24963
24961
  t.push(r);
24964
- for (let i of Yg(e.table)) Qg(i, r, n, t);
24965
- for (let i of Yg(e.from)) Qg(i, r, n, t);
24966
- for (let i of Yg(e.set)) i.column != null && r.columnRefs.push({
24962
+ for (let i of Jg(e.table)) Zg(i, r, n, t);
24963
+ for (let i of Jg(e.from)) Zg(i, r, n, t);
24964
+ for (let i of Jg(e.set)) i.column != null && r.columnRefs.push({
24967
24965
  type: "column_ref",
24968
24966
  table: i.table ?? null,
24969
24967
  column: i.column
24970
- }), $g(i.value, r, n, t);
24971
- for (let [i, a] of Object.entries(e)) i !== "with" && i !== "table" && i !== "from" && i !== "set" && i !== "loc" && $g(a, r, n, t);
24968
+ }), Qg(i.value, r, n, t);
24969
+ for (let [i, a] of Object.entries(e)) i !== "with" && i !== "table" && i !== "from" && i !== "set" && i !== "loc" && Qg(a, r, n, t);
24972
24970
  return;
24973
24971
  }
24974
24972
  case "delete": {
24975
- Zg(e, n, t);
24976
- let r = Xg(!0);
24973
+ Xg(e, n, t);
24974
+ let r = Yg(!0);
24977
24975
  t.push(r);
24978
- for (let i of Yg(e.from)) Qg(i, r, n, t);
24979
- for (let [i, a] of Object.entries(e)) i !== "with" && i !== "table" && i !== "from" && i !== "loc" && $g(a, r, n, t);
24976
+ for (let i of Jg(e.from)) Zg(i, r, n, t);
24977
+ for (let [i, a] of Object.entries(e)) i !== "with" && i !== "table" && i !== "from" && i !== "loc" && Qg(a, r, n, t);
24980
24978
  return;
24981
24979
  }
24982
24980
  case "insert":
24983
24981
  case "replace": {
24984
- Zg(e, n, t);
24985
- let r = Xg(!1);
24982
+ Xg(e, n, t);
24983
+ let r = Yg(!1);
24986
24984
  t.push(r);
24987
- for (let i of Yg(e.table)) Qg(i, r, n, t);
24988
- for (let [i, a] of Object.entries(e)) i !== "with" && i !== "table" && i !== "columns" && i !== "loc" && (Jg(a) ? e_(a, n, t, !1) : $g(a, r, n, t));
24985
+ for (let i of Jg(e.table)) Zg(i, r, n, t);
24986
+ for (let [i, a] of Object.entries(e)) i !== "with" && i !== "table" && i !== "columns" && i !== "loc" && (qg(a) ? $g(a, n, t, !1) : Qg(a, r, n, t));
24989
24987
  return;
24990
24988
  }
24991
24989
  case "create":
24992
24990
  case "alter":
24993
24991
  case "drop": {
24994
- let r = Xg(!1);
24992
+ let r = Yg(!1);
24995
24993
  t.push(r);
24996
- for (let [i, a] of Object.entries(e)) i !== "table" && i !== "loc" && (Jg(a) ? e_(a, n, t, !1) : $g(a, r, n, t));
24994
+ for (let [i, a] of Object.entries(e)) i !== "table" && i !== "loc" && (qg(a) ? $g(a, n, t, !1) : Qg(a, r, n, t));
24997
24995
  return;
24998
24996
  }
24999
24997
  default: {
25000
- let r = Xg(!1);
24998
+ let r = Yg(!1);
25001
24999
  t.push(r);
25002
- for (let [i, a] of Object.entries(e)) i !== "loc" && $g(a, r, n, t);
25000
+ for (let [i, a] of Object.entries(e)) i !== "loc" && Qg(a, r, n, t);
25003
25001
  }
25004
25002
  }
25005
25003
  }
25006
- function n_(e) {
25004
+ function t_(e) {
25007
25005
  let t = e.column;
25008
25006
  if (typeof t == "string") return t;
25009
25007
  if (typeof t == "object" && t) {
@@ -25012,27 +25010,27 @@ function n_(e) {
25012
25010
  }
25013
25011
  return null;
25014
25012
  }
25015
- function r_(e) {
25013
+ function n_(e) {
25016
25014
  return typeof e.table != "string" || e.table.length === 0 ? null : typeof e.db == "string" && e.db.length > 0 ? `${e.db}.${e.table}` : e.table;
25017
25015
  }
25018
- function i_(e) {
25016
+ function r_(e) {
25019
25017
  if (e == null) return null;
25020
- let t = Wm(e) ? e.children : e;
25021
- return Gm(t) ? t.map((e) => typeof e == "string" ? e : e.label) : null;
25018
+ let t = Um(e) ? e.children : e;
25019
+ return Wm(t) ? t.map((e) => typeof e == "string" ? e : e.label) : null;
25022
25020
  }
25023
- function a_(e, t) {
25024
- let n = qm(e, t, { caseSensitive: !1 });
25021
+ function i_(e, t) {
25022
+ let n = Km(e, t, { caseSensitive: !1 });
25025
25023
  if (n) return {
25026
25024
  exists: !0,
25027
- columns: i_(n.namespace)
25025
+ columns: r_(n.namespace)
25028
25026
  };
25029
25027
  let r = t.split(".").map((e) => e.toLowerCase()), i = r[r.length - 1];
25030
25028
  if (!i) return {
25031
25029
  exists: !1,
25032
25030
  columns: null
25033
25031
  };
25034
- let a = Zm(e, i).filter((e) => {
25035
- if (i_(e.namespace) === null || e.path.length < r.length) return !1;
25032
+ let a = Xm(e, i).filter((e) => {
25033
+ if (r_(e.namespace) === null || e.path.length < r.length) return !1;
25036
25034
  let t = e.path.slice(-r.length).map((e) => e.toLowerCase());
25037
25035
  return r.every((e, n) => t[n] === e);
25038
25036
  });
@@ -25041,16 +25039,16 @@ function a_(e, t) {
25041
25039
  columns: null
25042
25040
  } : {
25043
25041
  exists: !0,
25044
- columns: a.length === 1 ? i_(a[0]?.namespace) : null
25042
+ columns: a.length === 1 ? r_(a[0]?.namespace) : null
25045
25043
  };
25046
25044
  }
25047
- function o_(e, t) {
25045
+ function a_(e, t) {
25048
25046
  let n = t.toLowerCase();
25049
25047
  return e.some((e) => e.toLowerCase() === n);
25050
25048
  }
25051
- function s_(e, t) {
25049
+ function o_(e, t) {
25052
25050
  let n = [];
25053
- t_(e, n);
25051
+ e_(e, n);
25054
25052
  let r = /* @__PURE__ */ new Map(), i = (e) => {
25055
25053
  let t = `${e.kind}::${e.identifier.toLowerCase()}`;
25056
25054
  r.has(t) || r.set(t, e);
@@ -25062,7 +25060,7 @@ function s_(e, t) {
25062
25060
  exists: !0,
25063
25061
  columns: null
25064
25062
  };
25065
- let n = a_(t, e.path);
25063
+ let n = i_(t, e.path);
25066
25064
  return {
25067
25065
  source: e,
25068
25066
  exists: n.exists,
@@ -25075,12 +25073,12 @@ function s_(e, t) {
25075
25073
  message: `Unknown table '${e.path}'`
25076
25074
  });
25077
25075
  for (let t of e.columnRefs) {
25078
- let r = n_(t);
25076
+ let r = t_(t);
25079
25077
  if (!r || r === "*") continue;
25080
- let a = r_(t);
25078
+ let a = n_(t);
25081
25079
  if (a) {
25082
25080
  let e = a.toLowerCase(), t = n.find((t) => t.source.alias?.toLowerCase() === e) ?? n.find((t) => t.source.name.toLowerCase() === e || t.source.path.toLowerCase() === e);
25083
- t?.columns && !o_(t.columns, r) && i({
25081
+ t?.columns && !a_(t.columns, r) && i({
25084
25082
  kind: "unknownColumn",
25085
25083
  identifier: r,
25086
25084
  message: `Column '${r}' not found in table '${t.source.path || a}'`
@@ -25088,7 +25086,7 @@ function s_(e, t) {
25088
25086
  continue;
25089
25087
  }
25090
25088
  if (!e.checkUnqualified || e.selectAliases.has(r.toLowerCase())) continue;
25091
- let o = n.filter((e) => e.columns !== null && o_(e.columns, r));
25089
+ let o = n.filter((e) => e.columns !== null && a_(e.columns, r));
25092
25090
  if (o.length >= 2 && !e.hasUsingJoin) {
25093
25091
  i({
25094
25092
  kind: "ambiguousColumn",
@@ -25107,7 +25105,7 @@ function s_(e, t) {
25107
25105
  }
25108
25106
  return [...r.values()];
25109
25107
  }
25110
- function c_(e, t) {
25108
+ function s_(e, t) {
25111
25109
  let n = e.toLowerCase(), r = t.toLowerCase(), i = n.indexOf(r);
25112
25110
  for (; i !== -1;) {
25113
25111
  let e = i > 0 ? n[i - 1] ?? "" : "", t = n[i + r.length] ?? "";
@@ -25116,8 +25114,8 @@ function c_(e, t) {
25116
25114
  }
25117
25115
  return -1;
25118
25116
  }
25119
- function l_(e, t, n, r) {
25120
- let i = n.sliceString(t.from, t.to), a = c_(i, e.identifier), o = a === -1 ? t.from : t.from + a;
25117
+ function c_(e, t, n, r) {
25118
+ let i = n.sliceString(t.from, t.to), a = s_(i, e.identifier), o = a === -1 ? t.from : t.from + a;
25121
25119
  return {
25122
25120
  from: o,
25123
25121
  to: Math.min(a === -1 ? t.from + (i.match(/^[\w"'`.]+/)?.[0].length ?? 1) : o + e.identifier.length, t.to),
@@ -25126,18 +25124,18 @@ function l_(e, t, n, r) {
25126
25124
  source: "sql-schema"
25127
25125
  };
25128
25126
  }
25129
- function u_(e) {
25130
- return Gm(e) ? e.length === 0 : Um(e) ? Object.keys(e).length === 0 : !1;
25127
+ function l_(e) {
25128
+ return Wm(e) ? e.length === 0 : Hm(e) ? Object.keys(e).length === 0 : !1;
25131
25129
  }
25132
- function d_(e = {}) {
25133
- let t = e.parser || new sh(), n = e.structureAnalyzer || new Ph(t), r = {
25130
+ function u_(e = {}) {
25131
+ let t = e.parser || new oh(), n = e.structureAnalyzer || new Nh(t), r = {
25134
25132
  unknownTable: e.severity?.unknownTable ?? "warning",
25135
25133
  unknownColumn: e.severity?.unknownColumn ?? "warning",
25136
25134
  ambiguousColumn: e.severity?.ambiguousColumn ?? "warning"
25137
25135
  };
25138
25136
  return async (i) => {
25139
- let a = th(e.schema, i);
25140
- if (a == null || u_(a)) return [];
25137
+ let a = eh(e.schema, i);
25138
+ if (a == null || l_(a)) return [];
25141
25139
  let o = i.state.doc;
25142
25140
  if (!o.toString().trim()) return [];
25143
25141
  let s = [], c = await n.analyzeDocument(i.state);
@@ -25146,20 +25144,20 @@ function d_(e = {}) {
25146
25144
  let n = await t.parse(e.content, { state: i.state });
25147
25145
  if (!n.success || n.ast == null) continue;
25148
25146
  let c = Array.isArray(n.ast) ? n.ast : [n.ast];
25149
- for (let t of c) for (let n of s_(t, a)) {
25147
+ for (let t of c) for (let n of o_(t, a)) {
25150
25148
  let t = r[n.kind];
25151
- t !== "off" && s.push(l_(n, e, o, t));
25149
+ t !== "off" && s.push(c_(n, e, o, t));
25152
25150
  }
25153
25151
  }
25154
25152
  return s;
25155
25153
  };
25156
25154
  }
25157
- function f_(e = {}) {
25158
- return wt(d_(e), { delay: e.delay || qg });
25155
+ function d_(e = {}) {
25156
+ return wt(u_(e), { delay: e.delay || Kg });
25159
25157
  }
25160
25158
  //#endregion
25161
25159
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/structure-extension.js
25162
- var p_ = et.define(), m_ = xt.define({
25160
+ var f_ = et.define(), p_ = xt.define({
25163
25161
  create() {
25164
25162
  return {
25165
25163
  currentStatement: null,
@@ -25169,11 +25167,11 @@ var p_ = et.define(), m_ = xt.define({
25169
25167
  };
25170
25168
  },
25171
25169
  update(e, t) {
25172
- for (let e of t.effects) if (e.is(p_)) return e.value;
25170
+ for (let e of t.effects) if (e.is(f_)) return e.value;
25173
25171
  return e;
25174
25172
  }
25175
25173
  });
25176
- function h_(e, t) {
25174
+ function m_(e, t) {
25177
25175
  let { isCurrent: n, isValid: r, isFocused: i } = t, a = e.backgroundColor || "#3b82f6";
25178
25176
  !r && e.showInvalid !== !1 && (a = e.errorBackgroundColor || "#ef4444");
25179
25177
  let o = n ? "1" : (e.inactiveOpacity ?? .3).toString(), s;
@@ -25182,7 +25180,7 @@ function h_(e, t) {
25182
25180
  opacity: s
25183
25181
  };
25184
25182
  }
25185
- var g_ = class extends lt {
25183
+ var h_ = class extends lt {
25186
25184
  config;
25187
25185
  isCurrent;
25188
25186
  isValid;
@@ -25193,7 +25191,7 @@ var g_ = class extends lt {
25193
25191
  toDOM() {
25194
25192
  let e = document.createElement("div");
25195
25193
  e.className = "cm-sql-gutter-marker";
25196
- let { backgroundColor: t, opacity: n } = h_(this.config, {
25194
+ let { backgroundColor: t, opacity: n } = m_(this.config, {
25197
25195
  isCurrent: this.isCurrent,
25198
25196
  isValid: this.isValid,
25199
25197
  isFocused: this.isFocused
@@ -25211,10 +25209,10 @@ var g_ = class extends lt {
25211
25209
  return this.isCurrent === e.isCurrent && this.isValid === e.isValid && this.isFocused === e.isFocused && this.config === e.config;
25212
25210
  }
25213
25211
  };
25214
- function __(e, t) {
25212
+ function g_(e, t) {
25215
25213
  let n = Je.empty;
25216
25214
  if (t.whenHide?.(e)) return n;
25217
- let r = e.state.field(m_, !1);
25215
+ let r = e.state.field(p_, !1);
25218
25216
  if (!r) return n;
25219
25217
  let { currentStatement: i, allStatements: a, isFocused: o } = r;
25220
25218
  try {
@@ -25223,7 +25221,7 @@ function __(e, t) {
25223
25221
  if (c.lineTo < r || c.lineFrom > s) continue;
25224
25222
  let a = i?.from === c.from && i?.to === c.to;
25225
25223
  if (!c.isValid && t.showInvalid === !1) continue;
25226
- let l = new g_(t, a, c.isValid, o), u = Math.max(c.lineFrom, r), d = Math.min(c.lineTo, s);
25224
+ let l = new h_(t, a, c.isValid, o), u = Math.max(c.lineFrom, r), d = Math.min(c.lineTo, s);
25227
25225
  for (let t = u; t <= d; t++) try {
25228
25226
  if (t < 1 || t > e.state.doc.lines) continue;
25229
25227
  let r = e.state.doc.line(t);
@@ -25237,21 +25235,21 @@ function __(e, t) {
25237
25235
  }
25238
25236
  return n;
25239
25237
  }
25240
- async function v_(e, t) {
25238
+ async function __(e, t) {
25241
25239
  let { state: n } = e, r = n.selection.main.head, i = await t.analyzeDocument(n), a = {
25242
25240
  currentStatement: await t.getStatementAtPosition(n, r),
25243
25241
  allStatements: i,
25244
25242
  cursorPosition: r,
25245
25243
  isFocused: e.hasFocus
25246
25244
  };
25247
- e.dispatch({ effects: p_.of(a) });
25245
+ e.dispatch({ effects: f_.of(a) });
25248
25246
  }
25249
- function y_(e) {
25250
- return ht.define((t) => (v_(t, e), { update(t) {
25251
- !t.docChanged && !t.selectionSet && !t.focusChanged || v_(t.view, e);
25247
+ function v_(e) {
25248
+ return ht.define((t) => (__(t, e), { update(t) {
25249
+ !t.docChanged && !t.selectionSet && !t.focusChanged || __(t.view, e);
25252
25250
  } }));
25253
25251
  }
25254
- function b_(e) {
25252
+ function y_(e) {
25255
25253
  let t = e.width || 3;
25256
25254
  return He.baseTheme({
25257
25255
  ".cm-sql-gutter": {
@@ -25274,35 +25272,35 @@ function b_(e) {
25274
25272
  }
25275
25273
  });
25276
25274
  }
25277
- function x_(e) {
25275
+ function b_(e) {
25278
25276
  return _t({
25279
25277
  class: `cm-sql-gutter ${e.className || ""}`,
25280
- markers: (t) => __(t, e)
25278
+ markers: (t) => g_(t, e)
25281
25279
  });
25282
25280
  }
25283
- function S_(e = {}) {
25281
+ function x_(e = {}) {
25284
25282
  return [
25285
- m_,
25286
- y_(new Ph(e.parser || new sh())),
25287
- b_(e),
25288
- x_(e)
25283
+ p_,
25284
+ v_(new Nh(e.parser || new oh())),
25285
+ y_(e),
25286
+ b_(e)
25289
25287
  ];
25290
25288
  }
25291
25289
  //#endregion
25292
25290
  //#region ../node_modules/.pnpm/@marimo-team+codemirror-sql@0.3.0_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9._ea1055731b2d7fd34c5d3340d30da00f/node_modules/@marimo-team/codemirror-sql/dist/sql/extension.js
25293
- function C_(e = {}) {
25291
+ function S_(e = {}) {
25294
25292
  let t = [], { schema: n, enableLinting: r = !0, enableSemanticLinting: i = !0, enableGutterMarkers: a = !0, enableHover: o = !0, enableNavigation: s = !0, linterConfig: c, semanticLinterConfig: l, gutterConfig: u, hoverConfig: d, navigationConfig: f } = e;
25295
- if (n != null && t.push(eh.of(n)), r && t.push(hg(c)), i) {
25293
+ if (n != null && t.push($m.of(n)), r && t.push(mg(c)), i) {
25296
25294
  let e = l?.parser ?? c?.parser, n = l?.structureAnalyzer ?? (l?.parser == null ? c?.structureAnalyzer : void 0);
25297
- t.push(f_({
25295
+ t.push(d_({
25298
25296
  ...l,
25299
25297
  parser: e,
25300
25298
  structureAnalyzer: n
25301
25299
  }));
25302
25300
  }
25303
- if (a && t.push(S_(u)), o && (t.push(yg(d)), t.push(d?.theme ?? Dg())), s) {
25301
+ if (a && t.push(x_(u)), o && (t.push(vg(d)), t.push(d?.theme ?? Eg())), s) {
25304
25302
  let e = f?.parser ?? c?.parser, n = f?.structureAnalyzer ?? (f?.parser == null ? c?.structureAnalyzer : void 0);
25305
- t.push(...Kg({
25303
+ t.push(...Gg({
25306
25304
  ...f,
25307
25305
  parser: e,
25308
25306
  structureAnalyzer: n
@@ -25312,7 +25310,7 @@ function C_(e = {}) {
25312
25310
  }
25313
25311
  //#endregion
25314
25312
  //#region src/core/network/CachingRequestRegistry.ts
25315
- var w_ = class e {
25313
+ var C_ = class e {
25316
25314
  delegate;
25317
25315
  toKey;
25318
25316
  cache;
@@ -25338,7 +25336,7 @@ var w_ = class e {
25338
25336
  reject(e, t) {
25339
25337
  this.delegate.reject(e, t);
25340
25338
  }
25341
- }, T_ = new Xd("data-source-discovery-result", async (e) => {
25339
+ }, w_ = new Xd("data-source-discovery-result", async (e) => {
25342
25340
  await nl().discoverDataSources({ requestId: e });
25343
25341
  });
25344
25342
  new Xd("sql-table-preview", async (e, t) => {
@@ -25357,32 +25355,32 @@ new Xd("sql-table-preview", async (e, t) => {
25357
25355
  ...t
25358
25356
  });
25359
25357
  });
25360
- var E_ = new w_(new Xd("validate-sql", async (e, t) => {
25358
+ var T_ = new C_(new Xd("validate-sql", async (e, t) => {
25361
25359
  await nl().validateSQL({
25362
25360
  requestId: e,
25363
25361
  ...t
25364
25362
  });
25365
- }), { maxSize: 3 }), D_ = A(/* @__PURE__ */ new Map());
25366
- function O_(e) {
25367
- let t = j.get(D_), n = new Map(t);
25368
- n.delete(e), j.set(D_, n);
25363
+ }), { maxSize: 3 }), E_ = A(/* @__PURE__ */ new Map());
25364
+ function D_(e) {
25365
+ let t = j.get(E_), n = new Map(t);
25366
+ n.delete(e), j.set(E_, n);
25369
25367
  }
25370
- function k_() {
25371
- j.set(D_, /* @__PURE__ */ new Map());
25368
+ function O_() {
25369
+ j.set(E_, /* @__PURE__ */ new Map());
25372
25370
  }
25373
- function A_({ cellId: e, errorMessage: t, dialect: n }) {
25374
- let r = j.get(D_), i = new Map(r), a = n === "DuckDB" ? j_(t) : M_(t);
25375
- i.set(e, a), j.set(D_, i);
25371
+ function k_({ cellId: e, errorMessage: t, dialect: n }) {
25372
+ let r = j.get(E_), i = new Map(r), a = n === "DuckDB" ? A_(t) : j_(t);
25373
+ i.set(e, a), j.set(E_, i);
25376
25374
  }
25377
- function j_(e) {
25378
- let { errorType: t, errorMessage: n } = M_(e), r = n, i, a = n.indexOf("LINE ");
25375
+ function A_(e) {
25376
+ let { errorType: t, errorMessage: n } = j_(e), r = n, i, a = n.indexOf("LINE ");
25379
25377
  return a !== -1 && (i = n.slice(Math.max(0, a)).trim(), r = n.slice(0, Math.max(0, a)).trim()), {
25380
25378
  errorType: t,
25381
25379
  errorMessage: r,
25382
25380
  codeblock: i
25383
25381
  };
25384
25382
  }
25385
- function M_(e) {
25383
+ function j_(e) {
25386
25384
  return {
25387
25385
  errorType: e.split(":")[0].trim(),
25388
25386
  errorMessage: e.split(":").slice(1).join(":").trim()
@@ -25390,26 +25388,26 @@ function M_(e) {
25390
25388
  }
25391
25389
  //#endregion
25392
25390
  //#region src/core/codemirror/language/languages/sql/completion-sources.tsx
25393
- function N_(e) {
25391
+ function M_(e) {
25394
25392
  return e.field(vp);
25395
25393
  }
25396
- function P_() {
25394
+ function N_() {
25397
25395
  return (e) => {
25398
- let t = N_(e.state).engine, n = Tu.getCompletionSource(t);
25396
+ let t = M_(e.state).engine, n = Tu.getCompletionSource(t);
25399
25397
  return n && Wt(n)(e) || null;
25400
25398
  };
25401
25399
  }
25402
- function F_() {
25400
+ function P_() {
25403
25401
  return (e) => {
25404
- let t = N_(e.state).engine, n = Tu.getDialect(t);
25402
+ let t = M_(e.state).engine, n = Tu.getDialect(t);
25405
25403
  return e.matchBefore(/\.\w*/) ? null : Ut(n, !0, (e, t) => ({
25406
25404
  label: e,
25407
25405
  type: t,
25408
25406
  info: async () => {
25409
- let t = (await I_())[e.toLocaleLowerCase()];
25407
+ let t = (await F_())[e.toLocaleLowerCase()];
25410
25408
  if (!t) return null;
25411
25409
  let n = document.createElement("div");
25412
- return n.innerHTML = Eg.keyword({
25410
+ return n.innerHTML = Tg.keyword({
25413
25411
  keyword: e,
25414
25412
  info: t
25415
25413
  }), n;
@@ -25417,31 +25415,31 @@ function F_() {
25417
25415
  }))(e);
25418
25416
  };
25419
25417
  }
25420
- var I_ = Ft(async () => {
25418
+ var F_ = Ft(async () => {
25421
25419
  let e = await import("./common-keywords-8jMJIC1L.js"), t = await import("./duckdb-keywords-BGArYVVK.js");
25422
25420
  return {
25423
25421
  ...e.default.keywords,
25424
25422
  ...t.default.keywords
25425
25423
  };
25426
- }), L_ = wr("marimo:notebook-sql-mode", "default", Ed);
25427
- function R_() {
25428
- let e = (0, Tr.c)(3), [t, n] = Ne(L_), r;
25424
+ }), I_ = wr("marimo:notebook-sql-mode", "default", Ed);
25425
+ function L_() {
25426
+ let e = (0, Tr.c)(3), [t, n] = Ne(I_), r;
25429
25427
  return e[0] !== n || e[1] !== t ? (r = {
25430
25428
  sqlMode: t,
25431
25429
  setSQLMode: n
25432
25430
  }, e[0] = n, e[1] = t, e[2] = r) : r = e[2], r;
25433
25431
  }
25434
- function z_() {
25435
- return j.get(L_);
25432
+ function R_() {
25433
+ return j.get(I_);
25436
25434
  }
25437
25435
  //#endregion
25438
25436
  //#region src/core/codemirror/language/languages/sql/sql.ts
25439
- var B_ = cl, V_ = "DuckDB", H_ = new pt();
25440
- function U_() {
25437
+ var z_ = cl, B_ = "DuckDB", V_ = new pt();
25438
+ function H_() {
25441
25439
  let { latestEngineSelected: e, connectionsMap: t } = j.get(Al);
25442
25440
  return e === null ? [...t.values()].reverse().find((e) => !hl.has(e.name) && e.source !== "iceberg")?.name ?? "__marimo_duckdb" : e;
25443
25441
  }
25444
- var W_ = class {
25442
+ var U_ = class {
25445
25443
  parser = new dd();
25446
25444
  type = "sql";
25447
25445
  sqlModeEnabled;
@@ -25451,16 +25449,16 @@ var W_ = class {
25451
25449
  get defaultMetadata() {
25452
25450
  return {
25453
25451
  ...this.parser.defaultMetadata,
25454
- engine: U_() || "__marimo_duckdb"
25452
+ engine: H_() || "__marimo_duckdb"
25455
25453
  };
25456
25454
  }
25457
25455
  get defaultCode() {
25458
- let e = U_();
25456
+ let e = H_();
25459
25457
  return e && e !== "__marimo_duckdb" ? `_df = mo.sql(f"""SELECT * FROM """, engine=${e})` : this.parser.defaultCode;
25460
25458
  }
25461
25459
  static fromQuery = (e) => dd.fromQuery(e);
25462
25460
  transformIn(e) {
25463
- this.parser.defaultMetadata.engine = U_() || "__marimo_duckdb";
25461
+ this.parser.defaultMetadata.engine = H_() || "__marimo_duckdb";
25464
25462
  let t = this.parser.transformIn(e), n = t.metadata;
25465
25463
  return n.engine && n.engine !== "__marimo_duckdb" && Nl(n.engine), [
25466
25464
  t.code,
@@ -25475,9 +25473,9 @@ var W_ = class {
25475
25473
  isSupported(e) {
25476
25474
  return this.parser.isSupported(e);
25477
25475
  }
25478
- getExtension(e, t, n, r, i) {
25479
- let a = G_(), o = [
25480
- H_.of(Yt({ dialect: B_ })),
25476
+ getExtension({ lspConfig: e }) {
25477
+ let t = W_(), n = [
25478
+ V_.of(Yt({ dialect: z_ })),
25481
25479
  dt.of([{
25482
25480
  key: "Tab",
25483
25481
  run: (e) => Rt(e) || Dt(e),
@@ -25487,29 +25485,29 @@ var W_ = class {
25487
25485
  defaultKeymap: !1,
25488
25486
  activateOnTyping: !0,
25489
25487
  override: [
25490
- P_(),
25488
+ N_(),
25491
25489
  sp,
25492
- F_(),
25493
- a.cteCompletionSource,
25494
- a.aliasCompletionSource,
25495
- a.columnCompletionSource
25490
+ P_(),
25491
+ t.cteCompletionSource,
25492
+ t.aliasCompletionSource,
25493
+ t.columnCompletionSource
25496
25494
  ]
25497
25495
  })
25498
25496
  ];
25499
- if (i?.diagnostics?.sql_linter ?? !1) {
25500
- let e = j.get(ze), t = new Y_({ getParserOptions: (e) => ({ database: rv(e) ?? V_ }) });
25501
- o.push(C_({
25502
- schema: tv,
25497
+ if (e?.diagnostics?.sql_linter ?? !1) {
25498
+ let e = j.get(ze), r = new J_({ getParserOptions: (e) => ({ database: nv(e) ?? B_ }) });
25499
+ n.push(S_({
25500
+ schema: ev,
25503
25501
  enableLinting: !0,
25504
25502
  linterConfig: {
25505
25503
  delay: 250,
25506
- parser: t,
25504
+ parser: r,
25507
25505
  perStatement: !1
25508
25506
  },
25509
25507
  enableSemanticLinting: !0,
25510
25508
  semanticLinterConfig: {
25511
- parser: a.parser,
25512
- structureAnalyzer: a.structureAnalyzer,
25509
+ parser: t.parser,
25510
+ structureAnalyzer: t.structureAnalyzer,
25513
25511
  severity: {
25514
25512
  unknownTable: "off",
25515
25513
  unknownColumn: "warning",
@@ -25521,58 +25519,58 @@ var W_ = class {
25521
25519
  backgroundColor: "#3b82f6",
25522
25520
  errorBackgroundColor: "#ef4444",
25523
25521
  hideWhenNotFocused: !0,
25524
- parser: t
25522
+ parser: r
25525
25523
  },
25526
25524
  hoverConfig: {
25527
25525
  hoverTime: 300,
25528
25526
  enableKeywords: !0,
25529
25527
  enableTables: !0,
25530
25528
  enableColumns: !0,
25531
- parser: a.parser,
25532
- contextAnalyzer: a.contextAnalyzer,
25533
- theme: Dg(e)
25529
+ parser: t.parser,
25530
+ contextAnalyzer: t.contextAnalyzer,
25531
+ theme: Eg(e)
25534
25532
  },
25535
25533
  enableNavigation: !0,
25536
25534
  navigationConfig: {
25537
- contextAnalyzer: a.contextAnalyzer,
25535
+ contextAnalyzer: t.contextAnalyzer,
25538
25536
  keymap: !1,
25539
- parser: a.parser,
25540
- structureAnalyzer: a.structureAnalyzer
25537
+ parser: t.parser,
25538
+ structureAnalyzer: t.structureAnalyzer
25541
25539
  }
25542
25540
  }), He.updateListener.of((e) => {
25543
- e.focusChanged && t.setFocusState(e.view.hasFocus);
25541
+ e.focusChanged && r.setFocusState(e.view.hasFocus);
25544
25542
  }));
25545
25543
  }
25546
- return this.sqlModeEnabled && o.push(ov()), o;
25544
+ return this.sqlModeEnabled && n.push(av()), n;
25547
25545
  }
25548
25546
  };
25549
- function G_() {
25550
- let e = new sh({ getParserOptions: (e) => ({ database: K_(e) }) }), t = new q_(e), n = new J_(e);
25547
+ function W_() {
25548
+ let e = new oh({ getParserOptions: (e) => ({ database: G_(e) }) }), t = new K_(e), n = new q_(e);
25551
25549
  return {
25552
25550
  parser: e,
25553
25551
  contextAnalyzer: t,
25554
25552
  structureAnalyzer: n,
25555
- cteCompletionSource: ug({
25553
+ cteCompletionSource: lg({
25556
25554
  parser: e,
25557
25555
  contextAnalyzer: t,
25558
25556
  structureAnalyzer: n
25559
25557
  }),
25560
- aliasCompletionSource: Fh({
25561
- schema: tv,
25558
+ aliasCompletionSource: Ph({
25559
+ schema: ev,
25562
25560
  parser: e,
25563
25561
  contextAnalyzer: t
25564
25562
  }),
25565
- columnCompletionSource: zh({
25566
- schema: tv,
25563
+ columnCompletionSource: Rh({
25564
+ schema: ev,
25567
25565
  parser: e,
25568
25566
  contextAnalyzer: t
25569
25567
  })
25570
25568
  };
25571
25569
  }
25572
- function K_(e) {
25573
- return rv(e) ?? V_;
25570
+ function G_(e) {
25571
+ return nv(e) ?? B_;
25574
25572
  }
25575
- var q_ = class extends Nh {
25573
+ var K_ = class extends Mh {
25576
25574
  analyzers = /* @__PURE__ */ new Map();
25577
25575
  analysisParser;
25578
25576
  constructor(e) {
@@ -25585,10 +25583,10 @@ var q_ = class extends Nh {
25585
25583
  for (let e of this.analyzers.values()) e.clearCache();
25586
25584
  }
25587
25585
  getAnalyzer(e) {
25588
- let t = K_(e), n = this.analyzers.get(t);
25589
- return n || (n = new Nh(this.analysisParser), this.analyzers.set(t, n)), n;
25586
+ let t = G_(e), n = this.analyzers.get(t);
25587
+ return n || (n = new Mh(this.analysisParser), this.analyzers.set(t, n)), n;
25590
25588
  }
25591
- }, J_ = class extends Ph {
25589
+ }, q_ = class extends Nh {
25592
25590
  analyzers = /* @__PURE__ */ new Map();
25593
25591
  analysisParser;
25594
25592
  constructor(e) {
@@ -25607,10 +25605,10 @@ var q_ = class extends Nh {
25607
25605
  for (let e of this.analyzers.values()) e.clearCache();
25608
25606
  }
25609
25607
  getAnalyzer(e) {
25610
- let t = K_(e), n = this.analyzers.get(t);
25611
- return n || (n = new Ph(this.analysisParser), this.analyzers.set(t, n)), n;
25608
+ let t = G_(e), n = this.analyzers.get(t);
25609
+ return n || (n = new Nh(this.analysisParser), this.analyzers.set(t, n)), n;
25612
25610
  }
25613
- }, Y_ = class extends sh {
25611
+ }, J_ = class extends oh {
25614
25612
  validationTimeout = null;
25615
25613
  pendingValidationResolve = null;
25616
25614
  VALIDATION_DELAY_MS = 300;
@@ -25629,7 +25627,7 @@ var q_ = class extends Nh {
25629
25627
  return;
25630
25628
  }
25631
25629
  try {
25632
- let r = await sv(e, t, n, hl.has(t) ? z_() : "default");
25630
+ let r = await ov(e, t, n, hl.has(t) ? R_() : "default");
25633
25631
  if (r.error) {
25634
25632
  a.error("Failed to validate SQL", { error: r.error }), this.resolvePendingValidation([]);
25635
25633
  return;
@@ -25642,55 +25640,55 @@ var q_ = class extends Nh {
25642
25640
  });
25643
25641
  }
25644
25642
  async validateSql(e, t) {
25645
- let n = ev(t.state), r = iv(n.engine);
25646
- return this.isFocused ? X_(n.engine, r) ? this.validateWithDelay(e, n.engine, r ?? V_) : super.validateSql(e, t) : [];
25643
+ let n = $_(t.state), r = rv(n.engine);
25644
+ return this.isFocused ? Y_(n.engine, r) ? this.validateWithDelay(e, n.engine, r ?? B_) : super.validateSql(e, t) : [];
25647
25645
  }
25648
25646
  async parse(e, t) {
25649
- let n = ev(t.state).engine;
25650
- return X_(n, iv(n)) ? {
25647
+ let n = $_(t.state).engine;
25648
+ return Y_(n, rv(n)) ? {
25651
25649
  success: !0,
25652
25650
  errors: []
25653
25651
  } : super.parse(e, t);
25654
25652
  }
25655
25653
  };
25656
- function X_(e, t) {
25654
+ function Y_(e, t) {
25657
25655
  return e === "__marimo_duckdb" || t === "DuckDB";
25658
25656
  }
25657
+ function X_(e, t) {
25658
+ e.dispatch({ effects: V_.reconfigure(Yt({ dialect: t })) });
25659
+ }
25659
25660
  function Z_(e, t) {
25660
- e.dispatch({ effects: H_.reconfigure(Yt({ dialect: t })) });
25661
+ X_(e, Tu.getDialect(t));
25661
25662
  }
25662
- function Q_(e, t) {
25663
- Z_(e, Tu.getDialect(t));
25663
+ function Q_(e) {
25664
+ let t = $_(e.state).engine;
25665
+ X_(e, Tu.getDialect(t));
25664
25666
  }
25665
25667
  function $_(e) {
25666
- let t = ev(e.state).engine;
25667
- Z_(e, Tu.getDialect(t));
25668
- }
25669
- function ev(e) {
25670
25668
  return e.field(vp);
25671
25669
  }
25672
- function tv(e) {
25673
- let t = ev(e.state).engine, n = Tu.getCompletionSource(t);
25670
+ function ev(e) {
25671
+ let t = $_(e.state).engine, n = Tu.getCompletionSource(t);
25674
25672
  if (!n?.schema) return {};
25675
25673
  let r = n.schema;
25676
- if (!nv(r)) return r;
25674
+ if (!tv(r)) return r;
25677
25675
  let i = n.defaultSchema, a = i ? r[i] : void 0;
25678
- return a && !Array.isArray(a) && typeof a == "object" && "children" in a && nv(a.children) ? {
25676
+ return a && !Array.isArray(a) && typeof a == "object" && "children" in a && tv(a.children) ? {
25679
25677
  ...r,
25680
25678
  ...Object.fromEntries(Object.entries(a.children).filter(([e]) => !Object.hasOwn(r, e)))
25681
25679
  } : r;
25682
25680
  }
25683
- function nv(e) {
25681
+ function tv(e) {
25684
25682
  if (Array.isArray(e)) return !1;
25685
25683
  if (!("self" in e) || !("children" in e)) return !0;
25686
25684
  let t = e.self;
25687
25685
  return !(typeof t == "object" && t && !Array.isArray(t) && "label" in t && typeof t.label == "string");
25688
25686
  }
25689
- function rv(e) {
25690
- let t = ev(e).engine;
25691
- return iv(t);
25687
+ function nv(e) {
25688
+ let t = $_(e).engine;
25689
+ return rv(t);
25692
25690
  }
25693
- function iv(e) {
25691
+ function rv(e) {
25694
25692
  let t = Tu.getInternalDialect(e)?.toLowerCase();
25695
25693
  if (!t || !ul(t)) return null;
25696
25694
  switch (t) {
@@ -25729,45 +25727,45 @@ function iv(e) {
25729
25727
  default: return T(t), null;
25730
25728
  }
25731
25729
  }
25732
- var av = 300;
25733
- function ov() {
25730
+ var iv = 300;
25731
+ function av() {
25734
25732
  return ht.define((e) => {
25735
25733
  let t, n = null, r = e.state.facet(il);
25736
25734
  return {
25737
25735
  update(e) {
25738
25736
  if (!e.docChanged) return;
25739
- let i = z_();
25737
+ let i = R_();
25740
25738
  if (i === "default") return;
25741
- let o = ev(e.state).engine;
25739
+ let o = $_(e.state).engine;
25742
25740
  if (!hl.has(o)) return;
25743
25741
  let s = e.state.doc.toString();
25744
25742
  t && window.clearTimeout(t), t = window.setTimeout(async () => {
25745
25743
  if (n !== s) {
25746
25744
  if (n = s, s === "") {
25747
- O_(r);
25745
+ D_(r);
25748
25746
  return;
25749
25747
  }
25750
25748
  try {
25751
- let e = iv(o), t = (await sv(s, o, e, i)).validate_result;
25752
- t?.error_message ? A_({
25749
+ let e = rv(o), t = (await ov(s, o, e, i)).validate_result;
25750
+ t?.error_message ? k_({
25753
25751
  cellId: r,
25754
25752
  errorMessage: t.error_message,
25755
25753
  dialect: e
25756
- }) : O_(r);
25754
+ }) : D_(r);
25757
25755
  } catch (e) {
25758
25756
  a.error("Failed to validate SQL", { error: e });
25759
25757
  }
25760
25758
  }
25761
- }, av);
25759
+ }, iv);
25762
25760
  },
25763
25761
  destroy() {
25764
- t && window.clearTimeout(t), O_(r);
25762
+ t && window.clearTimeout(t), D_(r);
25765
25763
  }
25766
25764
  };
25767
25765
  });
25768
25766
  }
25769
- async function sv(e, t, n, r) {
25770
- let i = await E_.request({
25767
+ async function ov(e, t, n, r) {
25768
+ let i = await T_.request({
25771
25769
  onlyParse: r === "default",
25772
25770
  engine: t,
25773
25771
  dialect: n,
@@ -25778,17 +25776,17 @@ async function sv(e, t, n, r) {
25778
25776
  }
25779
25777
  //#endregion
25780
25778
  //#region src/core/codemirror/language/LanguageAdapters.ts
25781
- var cv = Ft(() => new zm()), lv = Ft(() => new yp()), uv = Ft(() => new W_()), dv = {
25779
+ var sv = Ft(() => new Rm()), cv = Ft(() => new yp()), lv = Ft(() => new U_()), uv = {
25782
25780
  get python() {
25783
- return cv();
25781
+ return sv();
25784
25782
  },
25785
25783
  get markdown() {
25786
- return lv();
25784
+ return cv();
25787
25785
  },
25788
25786
  get sql() {
25789
- return uv();
25787
+ return lv();
25790
25788
  }
25791
- }, fv = F.forwardRef((e, t) => {
25789
+ }, dv = F.forwardRef((e, t) => {
25792
25790
  let n = (0, Tr.c)(13), r, i;
25793
25791
  n[0] === e ? (r = n[1], i = n[2]) : ({className: r, ...i} = e, n[0] = e, n[1] = r, n[2] = i);
25794
25792
  let a;
@@ -25808,27 +25806,27 @@ var cv = Ft(() => new zm()), lv = Ft(() => new yp()), uv = Ft(() => new W_()), d
25808
25806
  children: c
25809
25807
  }), n[8] = i, n[9] = t, n[10] = a, n[11] = c, n[12] = l) : l = n[12], l;
25810
25808
  });
25811
- fv.displayName = $n.displayName;
25812
- var pv = /* @__PURE__ */ new Set(/* @__PURE__ */ "__*.marimo.app.False.None.True.__peg_parser__.and.as.assert.async.await.break.class.continue.def.del.elif.else.except.finally.for.from.global.if.import.in.is.lambda.nonlocal.not.or.pass.raise.return.try.while.with.yield.None.setup".split("."));
25813
- function mv(e, t = !0) {
25809
+ dv.displayName = $n.displayName;
25810
+ var fv = /* @__PURE__ */ new Set(/* @__PURE__ */ "__*.marimo.app.False.None.True.__peg_parser__.and.as.assert.async.await.break.class.continue.def.del.elif.else.except.finally.for.from.global.if.import.in.is.lambda.nonlocal.not.or.pass.raise.return.try.while.with.yield.None.setup".split("."));
25811
+ function pv(e, t = !0) {
25814
25812
  return e = e.trim(), e ? (/^\d/.test(e) && (e = `_${e}`), e = e.replaceAll(/\W/g, "_"), t ? e.toLowerCase() : e) : "_";
25815
25813
  }
25816
- function hv(e, t) {
25817
- let n = new Set(t), r = e, i = (e) => !n.has(e) && !pv.has(e);
25814
+ function mv(e, t) {
25815
+ let n = new Set(t), r = e, i = (e) => !n.has(e) && !fv.has(e);
25818
25816
  if (i(e)) return e;
25819
25817
  let a = 1;
25820
25818
  for (; !i(r);) r = `${e}_${a}`, a++;
25821
25819
  return r;
25822
25820
  }
25823
- function gv(e, t) {
25824
- return _v(e) ? `cell-${t}` : e;
25821
+ function hv(e, t) {
25822
+ return gv(e) ? `cell-${t}` : e;
25825
25823
  }
25826
- function _v(e) {
25824
+ function gv(e) {
25827
25825
  return !e || e === "_" || e === "__";
25828
25826
  }
25829
25827
  //#endregion
25830
25828
  //#region src/hooks/useAutoGrowInputProps.ts
25831
- function vv(e) {
25829
+ function _v(e) {
25832
25830
  let t = (0, Tr.c)(15), { minWidth: n, padding: r } = e, i = n === void 0 ? 70 : n, a = r === void 0 ? 15 : r, [o, s] = (0, F.useState)(50), c = (0, F.useRef)(null), l = (0, F.useRef)(null), u;
25833
25831
  t[0] === a ? u = t[1] : (u = (e) => {
25834
25832
  if (l.current && c.current) {
@@ -25875,11 +25873,11 @@ function vv(e) {
25875
25873
  }
25876
25874
  //#endregion
25877
25875
  //#region src/core/codemirror/language/panel/markdown.tsx
25878
- function yv({ currentQuotePrefix: e, checked: t, prefix: n }) {
25876
+ function vv({ currentQuotePrefix: e, checked: t, prefix: n }) {
25879
25877
  let r = e;
25880
25878
  return t ? e === "" ? r = n : e !== "rf" && n !== e && (r = "rf") : e === n ? r = "" : e === "rf" && (r = n === "r" ? "f" : "r"), r;
25881
25879
  }
25882
- var bv = () => {
25880
+ var yv = () => {
25883
25881
  let e = (0, Tr.c)(2), t;
25884
25882
  e[0] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ (0, I.jsxs)("section", {
25885
25883
  className: "flex flex-col gap-0.5",
@@ -25935,36 +25933,36 @@ var bv = () => {
25935
25933
  ]
25936
25934
  })]
25937
25935
  }), e[1] = n) : n = e[1], n;
25938
- }, xv = "data-cell-id";
25939
- function Sv(e) {
25940
- return { [xv]: e };
25936
+ }, bv = "data-cell-id";
25937
+ function xv(e) {
25938
+ return { [bv]: e };
25941
25939
  }
25942
- var Cv = "data-for-cell-id";
25943
- function wv(e) {
25944
- return { [Cv]: e };
25940
+ var Sv = "data-for-cell-id";
25941
+ function Cv(e) {
25942
+ return { [Sv]: e };
25945
25943
  }
25946
25944
  //#endregion
25947
25945
  //#region src/components/databases/icons/clickhouse.svg
25948
- var Tv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClickHouse%3c/title%3e%3cpath%20d='M21.333%2010H24v4h-2.667ZM16%201.335h2.667v21.33H16Zm-5.333%200h2.666v21.33h-2.666ZM0%2022.665V1.335h2.667v21.33zm5.333-21.33H8v21.33H5.333Z'/%3e%3c/svg%3e", Ev = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eDatabricks%3c/title%3e%3cpath%20d='M.95%2014.184L12%2020.403l9.919-5.55v2.21L12%2022.662l-10.484-5.96-.565.308v.77L12%2024l11.05-6.218v-4.317l-.515-.309L12%2019.118l-9.867-5.653v-2.21L12%2016.805l11.05-6.218V6.32l-.515-.308L12%2011.974%202.647%206.681%2012%201.388l7.76%204.368.668-.411v-.566L12%200%20.95%206.27v.72L12%2013.207l9.919-5.55v2.26L12%2015.52%201.516%209.56l-.565.308Z'/%3e%3c/svg%3e", Dv = "data:image/png;base64,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", Ov = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eDuckDB%3c/title%3e%3cpath%20d='M12%200C5.363%200%200%205.363%200%2012s5.363%2012%2012%2012%2012-5.363%2012-12S18.637%200%2012%200zM9.502%207.03a4.974%204.974%200%200%201%204.97%204.97%204.974%204.974%200%200%201-4.97%204.97A4.974%204.974%200%200%201%204.532%2012a4.974%204.974%200%200%201%204.97-4.97zm6.563%203.183h2.351c.98%200%201.787.782%201.787%201.762s-.807%201.789-1.787%201.789h-2.351v-3.551z'/%3e%3c/svg%3e", kv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGoogle%20BigQuery%3c/title%3e%3cpath%20d='M5.676%2010.595h2.052v5.244a5.892%205.892%200%200%201-2.052-2.088v-3.156zm18.179%2010.836a.504.504%200%200%201%200%20.708l-1.716%201.716a.504.504%200%200%201-.708%200l-4.248-4.248a.206.206%200%200%201-.007-.007c-.02-.02-.028-.045-.043-.066a10.736%2010.736%200%200%201-6.334%202.065C4.835%2021.599%200%2016.764%200%2010.799S4.835%200%2010.8%200s10.799%204.835%2010.799%2010.8c0%202.369-.772%204.553-2.066%206.333.025.017.052.028.074.05l4.248%204.248zm-5.028-10.632a8.015%208.015%200%201%200-8.028%208.028h.024a8.016%208.016%200%200%200%208.004-8.028zm-4.86%204.98a6.002%206.002%200%200%200%202.04-2.184v-1.764h-2.04v3.948zm-4.5.948c.442.057.887.08%201.332.072.4.025.8.025%201.2%200V7.692H9.468v9.035z'/%3e%3c/svg%3e", Av = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAYAAAC+ZpjcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAARGpJREFUeNrs3duPlNeZ7/FV56ahD7h7+wD2uHAmGy7GNlFkaaKZyGW0L2augv+AkZu/IOaWG5sbbm1r/wFuS3OzcxOskZJ9EeGynCiKvCNjomQgCbgwBkNz6MZNN/R5v89b72sK6EMd1nrfdfh+pFJj4mB6VXX1r5/1rGcpBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhKLAEAEz6v5fnG4/91uHoMb7Jv/q6xv/s2ehxd5Pfbz7+7/3biyNzPEsACFgA8g5M40lIEml4Guv4vc7/3SWt5JH++nJHWJMQ1orCWItXAAACFoB+AlQ9+tD5eDUJTek/h24uCV3i045/nosC2FmWBwABCwg3RKVVpjQ0va7crTzZppU8JGxdTj5S/QIIWAA8C1MN9bASdVht3QMF85pJ+PoyCV70gAEELACOhCl5vNgRpmC3VhK2OkNXi2UBCFgA8glTh5Mw9SphyuvQ1YwCV5MlAQhYAPSHqfEkTEmIel09PL2HcEjganaErhZLAhCwAPQXqF7vCFZAp1YSuD4lcAEELAAEKhC4AAIWAGOhKu2h+pliyw/6pVuKn0Zh6zTLARCwAF8D1XhHoDqqGJWAbEnIkurWaapbAAELcD1U1ZMwRZUKNkmrWx8xfR4gYAGuhKrDHaGKXirYrpWErY/ZSgQIWICNoeqtJFjVWRE4SqbKnyZsAQQsgFAFELYAAhbgeKiqJ4FKghXbfwgpbE0rerYAAhagMVSNd4SqBiuCwLWixweK04gAAQvoM1g11MMtQEYqAE9qqnZVa5qlAAhYwHahqh59mEqCVZ0VAbqS9mt9wBYiQMACOoNVugV4lNUABiIBK91CnGM5QMACwgtVsu33tqJaBZhAVQsELCCwYNVIQtUUqwFkoqno1QIBC/A2WEmg+rlivAKQl5YErejxPtuHIGABbocqtgEBO01Hj5OMegABC3ArWEmYekcxYgGwXTMJWk2WAgQswN5g1VD0VwGuBi36tEDAAiwMVlKxarAagNNaql3RImiBgAUQrAAQtAACFghWANwgpw1lcCknD0HAAghWAAhaIGABBCsAbmgptg5BwAIIVgAIWiBgAbYEK5m2/h7BCkAXQet4FLROsxQgYAFbB6u6alesplgNAD1oKgaWgoAFPBGs0itt3mE1AAxAKlnHuYIHBCwQri7Pp8GKK20A6PK+ale0OHEIAhaCC1aN6MOHikuYAZgxl4Ss91kKELAQQrCqJ8GqwWoAyEArehyjPwsELPgarOizApAn+rNAwIJ34eqoao9dqLMaAHJ2UjERHgQsOB6sJFCxHQjANi3FtiEIWHAwWLEdCMAFbBuCgAVnwlVDcToQgDs4bQgCFqwOVlK1kj6rKVYDgIPOqva24VmWAoMqsgTQFK6kif0rwhUAh8kdqF9E72fvshQYFBUsDBqspGol24FHWQ0AHmkpmuBBwEJO4YorbgD4jit3QMBCZsGKqhWAkLQU1Sz0iB4s9Bqu0l4rwhWAUNSjxyf0ZqEXVLDQbbCiagUAnDQEAQsaw1Uj+vBLRa8VAKSOMzcLBCwMEq5krtXbrAQAPKGp2tWsFksBAha6DVYyD0a2BA+zGgCwpbkkZJ1mKUDAwk7hivELANAbxjmAgIUtgxWN7ADQPxrgQcDCE+FKtgKlkb3OagBA36SCJQ3w0ywFAQuEK9kSfI+VAABtppOgxZYhAQsBBiu2BAHAHLYMCVgIMFxxShAAzOOUYaC4KifMcDUVffiEcAUAxslOwS+TmYIICBWs8MIVg0MBIB/N6PEmfVkELPgVrOKfoqJHg9UAgNy0kpBFX5bn2CIMI1zJVuAXhCsAyF09enyStGqAgAWHw5V8EX+imG8FALaIT3DTl+U3tgj9DlfvqvaVNwAAO8npwmP0ZRGw4Eawkp+O5CejKVYDAKwn/VjSl9ViKQhYsDtcMYIBANwiFaw3aH73Bz1YfoWrtJmdcAUAbpEfjr+g+Z2ABfvCVUPRzA4ArvswuR8WjmOL0I9wJT/xfMhKAIA3pv/txZFjLAMBC/mFq3cVJwUBwEecMCRgIadwJVWrKVYCALwlTe9vELIIWMgmWDGGAQDCClnHOGFIwIL5cMUYBgAIC2McCFggXAEACFlhY0yDO+GqTrgCgKDFP2RH3w+OshT2o4LlRrg6nISrcVYDAKDaPVnTLAMBC4QrAAAhi4AFwhUAgJAFAhbhCgBAyAIBC4QrAAAhi4AFwhUAgJAFAhbhCgBAyAIBi3BFuAIAELIIWCBcAQAIWSBgEa4AAIQsELAIVwAAELIIWCBcAQAIWQQsEK4AAIQsELBcDVfjSbg6zGoAADL0RhSymiwDAYtwBas9M1xW+3dX1J5KkcUANLi6sKIuz6+o1fUNFsOMuSRknWUpCFiEK1hlqFRQ+/dU1DO7yqpc5MsH0E3C1YW5JXX7wRqLQcgiYKGrgPXL6MNRVsJNE0Ml9exwJf4IwLy7y2vqwuySerBGNctQyDoQhaw5loKA5Xq4+jD6MMVKuEUqVFKpkoqVVK4AZEuqWVcXVtXl+WUWQz+pYL1ByCJguRyu3os+vM1KuEN6qqS3SqpVbAMC+bu3sq7+OrcUfwQhi4AFCVdT0YcPWQk3SNP6s9FjrMo2IGAjmuCNmI4C1jGWgYDlUriSfqtfshJ2k62/Z4Yrav9umtYBF0hP1sW7NMETsghYoYYrBolabrxW+n4bEIB7JGBJ0KIJXhsGkRKwrA9XEqq+IlzZh6Z1wC+yVShbhrJ1CC3ejELWaZaBgGVruGLWlWVoWgf8RhO8NszIImBZG7CYdWURmtaBsNAEr0UrevyIk4UELJvCFeMYLEDTOhA2muC1YHwDAcuacDWlGMeQK5rWAXSiCX5gnCwkYOUerqTf6gtWIntSoZJA9eJIlaZ1AE+gCX5gx6OQ9T7LQMDKI1xxYjAHEqYkVNG0DqAbcq/hxbvLNMH3h5OFBKxcApZUrjgxmBGa1gEMIq1m0QTfE04WErAyD1dc4JyBtGldwhXbgAAGJT1ZMtJhbokm+B7Q9E7AyixcSbCiqd0gaVqXoaASrABAN2mCvxAFLapZXTsdBaw3WQYClslwRVO7ITStA8gSTfA9o+mdgGUsXI0n4arOauhD0zqAPNEE3xPZKmyyDAQs3QFLrsFpsBJ60LQOwCY0wXdF+rAO0I+1Mxpcug9X7xKu9HhWJq13XLjMHEDAPw9W3asGTQ6V4rtLpQl+hZC1FdnJkWvh3mAptkcFq7twJcHqE1ZicNUoVP3TxDALAXju0uySs3/35ShcLa5xynAHJ//txZF3WYatFVmCHcNVmtahwXO7qywCAKtVigWqDzt7Jyk+gIDVNwlXTGrXQKpXE0PsSgOwm4SrapFvj918f0yKECBg9Ya+K72oXgFwRY2A1Q12eAhYfYUrmXf1DiuhB9UrAE59cywoVS6wUdiFRlKMAAGrq3BFKteM6hUA534wpIrVrXeSogQIWDuSa3DqLIMeu8pFqlcAHAxYNLv3gH4sAtb2ohfI0ejDUVZCnxdGqF4BcFOtxLfJLtWjx3ssAwFrq3AlLxAucdZopCqD+5jUDsBN1QLfJnswlRQpQMB6goQrSpwaPbe7wiIAcPebZKE9Fwvdfx9lq5CA9YjoBfG2YiSDVlSvAPiAKlZPOCRGwHokXDGSwQCqVwB8IBWsIiMbetFIihYELLA1qBvVKwA+qbFN2Kt3kr5mAlaokgFpzO/QjOoVAJ8wE6tnUrQI+tBY0K8YtgbNoHoFwDfcT9iXoLcKQ3+1MJLBgOf3MPcKgH+qbBP2I9itwmADVpKq2RrUTCa2y+R2APCN3E1Is3vPgt0qDPI7YZKm2Ro0gDsHAfhsiG3CfshW4RQBKwycGjRAqlfVEj/dAfBXhfsJ+/VeaANIgwtYSYpu8FrXj+oVAN8V4pBFFasPwW0VBvUqSdIzl1EaQPUKQCiYidW3o9H34QYBy0/vKbYGjaB6BSAUpUIhfqAvwdxVWA7lGT144kzjf//X+Sle2/r98B/2qtl/epaFsFQl+kbw3JAf3wyW1jbUrSWeUxd89ruW15/fvZVVNXN/mSe6d/U788tyiv9d3z/RYCJ4FLC+kieW17Z+/3H0ZTVCBcs6w6WCmqgWoo/+fE63Hqyr393gm5oLrv7hkvef49/mFtX6xgZPdn8OXDh1xOsUHsQWYRSu3iVcmXHopQnClWXGKgVVHy6qF3b5Fa7E5BDNxbDoa61aZhH6533Du/fvVlG4kmD1c17L5gIWLPhCLrSD1Uu7i+rZWkHVyCGAcXuHuHN1AI3o+/NRApbbaGw3ZP8zI2pf9EC+wWqyWlA/GG4Hqwp9t0BmZCbWcJl7Vwf5/hyFLG+/P3sdsKSxPfpwlNewGa8ceppFyO2NXalnh9rBSvqsODUO5IMq1kDq0cPby6B9r2Ax88oQ6bs68DyFwazVkmD1UhSsxsoEKyBveyqluJKFvr2TtPIQsFwRPWFc5mzQa6/sYxEyJCcCX9hVjJvXJVgBsMdYjSrWgLwshngZsJI9XS5zNkSqVzS3Z/TGnTSu+3giEPDFKKcJB3U0aekhYDlAwhX7V4Yc+sEki2Dyi7Kg1N6OE4E0rgN2ky1C2SrEQLyrYnkXsJK93Ld5rZpRq5bUKwdpbjcVrNITgU8TrACn0Ow+sMPR9+8pAhYpOFivHHomDlnQ+dNvu3H9h7s5EQi4SsY10Ow++Pdvn8Y2eBWwGMtgHr1XGt+QS4VHTgQCcBtVrIFJuPJmB8q3ChaN7YbDFdfiDG5PuX0iUBrXCVaAP7g6R4uf+1LF8iZgJSP3G7w2zWE0w4Bvvknj+v4hTgQCPioWCoSswUm48qLVx6cKFr1XBsm1OFSv+nnDbTeucyIQCAPbhFpM+TB81IuAlZw8qPOaNOe1l59jEXogjevpiUBpXCdYAWGolYrxAwNzvuWnyBOBnXCpc2/BKm1c50QgECaqWFpIFcvp21icD1jJlTh1XosG15iTgzuSE4H7ORGYzVqzvrDcSKUU92NhYE63/jgdsLgSJ4M3Cq7F2ZY0rqcnAvfwjZ+ABah2s/sIk911aLh8hY7rFSypXnEljkGcHNw6WKWN65wIBPC4iV0cCtLE2SKKswErqV79nNeeOTKxnepV50+l7cb1H3IiEMAOZKq7THfHwJytYrlcwaJ6ZZhci4N247rcDfgDGtcB9GC0xkwsTZysYjkZsKhemcelzo+eCNxbIVgB6I0MHaXZXQsnq1iuVrCoXpkOsS9NBHups5wIlMZ1TgQC0BGyoIVzVSznAhbVq2y8GuD2oDSu14fbJwJpXAegAzOxtHGuiuViBUvuHKR6ZVBIlzrLtl/nicAaA5gBaCTN7nsY2aCLU1WsIguMx71yyP/eq/REoDSucyIQgEljNapYmjRcuqPQqYDFnYPmybU4k3uHPf5pst24zolAAFmRClaFNxtdnCmyFFlYdPL1Uudax4lAaVznvQ5AlqhiaTPlShXLmYAVLaj0XtV5bZkjlSvfLnVOTwTWOREIIEd7mYmlkxPFFpcqWJwcNMyn3qu0cZ0TgQCs+GZbKDCyQZ+jyUQBAtagkqOZDV5T5vhwqbNs++3tOBFI4zoAmzDZXRsJV28TsPR4i9eTWS5f6tx5IvBpghUAS8ndhDS7a2P9rpb1AStpZpvitWSOTGw/8Lx7o8XSE4Fy+TInAgG4gMGj2ownkwUIWD6nVNfJpc4uXYsjjeudJwIRlskhpsHCXdxPGE4+sPqdKmlim+I1ZDhgOXKp855y+0SgNK4TrAC4SMLVCJPddTls8/U5tv8oyLU4hh1y4FLn9ETg/iFOBAJwH9uEWllbxbI9YDFY1DBbm9vTxnVOBALwTa1UjB/Q4qitg0etfYaTsl+d1445Nl7qLI3r6YlAaVwnWAHwEVUsraYIWL2huT2DgGVTsEob1zkRCMB3NLv7nxesDFhJue8orxlz5FJnG67FkROB+zkRCCDQkAUtrBzZYGsFa4rXi1l5X+osjevpicA9BCsAAWKbUCvrBpIXWajwSN9VXtWrsY6rbDgRCCBkMtVdprtDi4Ztze7WBaxogWRrsM5rxZysTw6mJwJ/yIlAAHgE9xNqZVUvlo0VLKpXBmV5qbM0rsvdgD+gcR0ANiV9WNxPqM0UAWsLNLebd+gHk5kEq/RE4N4KwQoAtg1ZNXqxNLGq2d22ChbhyiCZ2G7yWhw5ESiN65wIBIDujXKaUCdrdsFsC1jMvjLI1KXO0rheH26fCKRxHQB6I1uEe7ifUBdrmt2tCVjRghxWNLcbpbP3Srb9Ok8E1rj1AQD6/0GVbUKdpghYj6J6ZThc6bgWJz0RKI3rnAgEAD2kgkWzuzZWbBPaFLDovzJo0NEMaeM6JwKRtzLXi8BTDB7Vpp7sihGwkq7/cV4TZhx4frzv6lWt40SgNK4TrJC3sSovQvj62qbZXaPcd8VsqWD9jNeCOa8e6v3kYHoisM6JQADI5htyoUDI0if3XbHcA9bBE2fGFduDxvR6qXPauM6JQADIHpPdtRlPboYJN2ARrgwH2C5ODsq2396OE4E0rgNAPuRuwlqJY9ma5Lo7Vgx9AXy207U4nScCnyZYAYAVaHbXZirZJQsvYHE1jllbnRxMTwTK5cucCAQAe6ytr6ullRUWQp/cMkY51E/cdzKx/fHqlTSuj0Y/GNG0DgB2WVldVTe/m1V3799XxV1PKcU4El1kl2w6j/9w3luEb/HcmyHX4qT2lNsnAqVxnXAFAHYFq2t3bqq/f/s14cqMo3ltE+ZWwUq2Bw/z3OuXXuosJwJlC5DeKgCwy+LSA3Xz7mz08X77N6JQVRwaI1wZClkqhypWnluEDZ5zM6qVkhodKqk9JUW4AgCLzN9fUHfmv3sYrNJwJZWrIiMaDMllm7Cc8ycME1/AC8vq/Ndz8QT3SnEjrmKNlGhmB4C83F2Yj3usZEvwcYXaCOHKrFz6vXPpwWK4qHnnzs/EH1fWlbr+YENdXFxXt5c31MoGawMAWZATgXfm78b9VdJntWm4GhpVhfIuFst87sg8c+QVmQlXhl29MR9XstI7CNejYHUrCljykN4sGSxaY5YdABgJVrP37sbhSn69lUJlF+EqO7JrdjrL/2Axx08Uhn1+7tqmv393ZUO1FtfVlfsb6t4qJS0A0CE9EXjx26/jBvYdw1VtlEXLTuaFnbwCVoPn2rzzl26rpeW1Lf/3xbUNdfXBhroUha27UdBaJ2sBQN/BKh61sDC/bbBqf+ctq0J1hIXLltxNmGn2yDxgJfug4zzX2Th3YWbnN4eOPq2ZJfq0AKAbMmrhm1s3vg9W3X3XLTPrKj+Z7p7lUcF6nec4w4B1/kbX/65UsGajdHVpYV1dj4LW4hrrB/uMVWkeRP7B6vLMt9HjWjx2oWvMuspbptuERd8/wdDJFqFsFfZK+rSu3G/3ad2lTwsWqZCvkBOpUkm1SoLVI3Osug1XzLrKWz0Zcu5fwIo+MZncXuc5zlY6sqGvn9TWNuLtQ+nTkuoWfVoAQiL9VGmw2mrUQlf5illXtsisyJP1z4INntvs3ZpdVNduzA/0Z0iflvRn0acFIJRgdeu72fhE4CDBKg5XzLqySWZtSmVfPzE86svzM2rfM4OfWkn7tOQhl0jLPK3hEusLwA8SpO7cu9vdacBuwhWzrmzjbQWL/qucfPXNXDx4VCeZoSV9Wq1kzAMAuBys0lELOw0I7SlcMevKOllNdS/69glha1sNHh3UUjLm4VJyHQ99WgBcIScCO2dY6fvuyqwri2Wym1b27RPC1qSKJacKa1Uze3rSpyVX8dxZ2VAj5UJ8yXSF08gALA1WMm2959OAXYYrZl1ZrZHFf6To2yeErUm4utDHyIZeSQXrbjJPSybFM08LgC2kSvXV9W/6G7XQDWZdueDwwRNnjA88zyRgJZ/IYZ7T/H3Zw+BRHejTAmBLsEpHLTxYWTbzH2HWlUuMty1lVcFq8FzaQRrdz2dQxXpc2qf1twX6tABkIx218NerrYFHLXSVr5h15RLjbUtlXz4RdE+2CQ+9NJHLf1uClfRpyWOsQp8WADPBavbeXW2nAbsKV8y6ck3D9H+AClaArt6YH3jwqA5pn5Zcx0OfFoBBpaMWpGIlDeyZhStmXbnI+LU5xgMW/Vd2ymObcCtyHY/0aV2iTwtAH6SnysiohW7DFbOuXNUw+YeXXf8E0H/Aeu2VfWpkd9Wenz6TPq2ZwoZ6qtKeEl9k+xDAVj+cmRy10A1mXbnuVdcDFv1XNoesl5+z7u/1eJ+WBK1akecLQJtUqeYW7uUXrJJwxawr5zWMvkRc/wTQv3Pnb8Szsax+I13ZiEc8SJ/WPbYPkahQ2gw2WKWjFnINV8y68oXReVhZBCz6rywl4Uqmu7tA+rSuJtfxSJ8WYx7CNlblG1so0lELabAyPWqhq3DFrCufNJwMWFEybPDc2c3U/YSmpH1aF5N7D1cIWoDXwepiFKykzyr3YJXmK2Zd+cZYEcj0q4SAZTkZPCpVrAPPjzv196ZPC/CTBKmbUbC6d38hszELXYcrZl35yFifuOmA9SrPnf3OnZ9xLmB1kj4teQyXCmq0otRYme0jwNVglfWYha7DFbOufNUw9QcXXf2LQx8ZPHprdtH5z0P6tK4nfVqzK/RpAU583S49UJdnvs1lhlVP4YpZV946eOKMkW3CosG/cD36MM5T5wapYnnzk/C6UjNL7T4t+UifFmCf+fsLcbC6PHMt3xOBO36XZNZVANwKWIrTg06RmVi2j2zolVSwZpPreK4vcR0PYIN01MI3t27YHayScMWsqyAY6cMy2YNFwHLMuQszVg4e1fKmTp8WkBtpVpdgdefeXWtOA+6IWVchMZJXTAYsJri7FrDO3/A2YKWkT0sqWbeLG/HJQwlazKwEzAWr2ShU3Zm/a92JwB3DFbOuCFgDYosQ35MtQpsugTaps0/rOn1agFYPFh+oG3O3v59h5VS4Usy6CpGJuZ1lQ3/RuqLB3UkyePTQSxPBfL7Sp5VuH+4pt+dpDZd4HQD9BqtLf7mkrrWuOfs5MOsqWHUnApaieuUsGTx67ca82vdMeKdm5K5DecjA0r3VAn1aQJdmb86qr//2tbp57abTnwezroKmfW4nAQtP+PL8TJABK7WUXMcjfVpjSVWLPi1g82AlFSv56DpmXQVPe24xFbCY4O4wuTpHKlkju6tBr4P0aclVPHdWNtRIFLQmqgVVIWgB6tvL38bB6v7CfT8+IWZdwcBgdFNN7lSwHOfaJdAmpX1aMk/ryn3maSHsYPW7X/9O/fnzP3sVrph1BZH0j2tjqoJV56lym1Sx5FRhrUrHd6d4zEMUsirRjyYT9GkhAKsrq3F/lTzk115h1hWezC4tawOWiaOOyJ6EK58Hjw5qJenTmilsqKcq9GllbaxaVLcerLMQBsmJQDkN6GWwSsMVs67wKMkvTWsDlqJ65Y3zF28RsHYg24fSpyWPsQp9WlmpFFkDk8HK9VELXeUrZl3hSS/q/MMIWNiSNLrL4NGQ5mINovM6HglazNOCS+QkoPRY+R6s4nDFrCtkkF9MBCyuyPHIBQJWzx7v0xopsX0Iu4OVL6MWugpXzLrC1ho6/zAThXYmuHvk6o35ePAoepf2acl1PLeXuY4HdpFq1R9+8wf1x0//GFa4YtYVtqHzJKGJChYjGjwj24QhDx4d1ON9WtIQX6OHCDkGK69mWHVdTmDWFboiAatlXcCKkh/hytOA9dor+4IfPKpDZ5/W3oqK7z8ETEtHLUi4Ci5YJeGKWVfokuSYpnUBS7E96K0vz99Q//rjF1gITeI+rTU5DbdBnxaMBytvRy10g1lXyCnH6A5YDZ4bP0mz+2sv72PwqGad87Tiew8Z8wANQhm10FW4YtYVeqPtoB6vOnRFBo/KdHdOFJohfVqzKxvxQ/q0RsuMeUDv5ufm1ZW/XyFYpfmKWVfonbUVLEY0eEzuJyRgmdfZpzVaUVzHgx2FNmqhq3DFrCv0R1svue6zTPRg+fzT8cJyXMVCNqRPS7YPLy2ux5WtdcY84DHStC5jFkIatdBVuGLWFQZw8MQZLVlGdwWLU4SeO3d+Rh14nhydJenTmllKxjzQpwUV8KiFbsMVs64weJZpWhOwdCU+2E0Gj96aXVSTe4dZjIzRpxU2OQUovVXSY0Ww2gKzrqCHdRUsqleBkCrWkZ/UWYgcpX1aMrBUKlr0afkdrIIftdBluGLWFTTmmdM2BSwEQgaP/suPX2BkgwWWkjEPt4vJ9mGFeVq+SEctzFydIVjthFlX0GtMxx+iM2A1eE7Cce7CjHrt5edYCEtIn5b0aN1Z2VAjUdCa8LxPq+zxN1JmWPURrph1Bb207MjxikR/Aev8DQKWhaRPK90+3JNUtHzs0xqr+hewGLXQZ75i1hVs/UFQ45/1KssZDhk8KluFzMWy173VjfhBn5bdbl67GfdXEaz6CFfMuoIZ1lWwOEUYGAaPOhKG6dOyEqMWBgxXzLqCOVryTNG2vxDcIYNHr92YZyEckfZp/W1hXV1f2lArDC7NnDSrS7D63a9/p/78+Z8JV4OEK2ZdwSAdo6cY04CBfHl+Ru17hrkzrum8jkca4pmnZT5YMWpBE2ZdIRsDDxulMxADkatzpJI1srvKYjhIruNZvL+hKkUVBy36tPSSE4ESquREIMFKT7hi1hVcoSVgMcU9bNKLxeBRt60kfVozhQ31VIU+LR3BilELmjHrCtka+JuargoW24MBkyqWnCpk8Kj7ZMyD9GnF9x4mQatWZF26JScBpWIlJwOhOVwx6wqBBiwETMIVg0f909mntbei4rla2DpYMcPKYL5i1hUcpOsVyxZh4M5fvEXA8lTcp7WmVKW4EfdpjZTYPkzJiUCpWM3PcZrWWLhi1hXy8aItAYstwsBJozuDR/32eJ/WaMXv63h2ClbMsMogXDHrCvmp2xKwAHWBgBWEUPu0GLWQQ7hi1hUcRsCCNldvzMeDR5mLFY4Q+rTkRKCcBiRYZYhZVyBgfe9FlhJCtgkJWOHp7NOSipbM03K9T4tRC/mFK2ZdwQIDtz7pClh1ngukAeu1V/YxeDRQ0qc1s5RsH8q9h1X3+rTkJKD0WBGscsCsK9jDqqtygNiX52+of/3xCyxEwKRPa3ZlI35In9Zo2f7reBi1kI9KuawqpUr86welYcYxwBu8kqGdNLu/9vI+Bo8i1tmnNRp9H9VxHc+wxl6vtFpFsNJjqFJVxWL7a3+oWlWlYvsERK0ivy51/PrJkxEXZhdYQBCwgK3I4FEJWa8ceprFwPfSPq3bGvq0dAQsRi10uda1h2MSdg8Nbfr7WwUmgIA1OOZg4RGyTUjAwmY6+7RGoqA0kWGfVjpqQcJViMFKQlCtUvv+11JhEsWC/LrWEZ6GeKEieAdPnGlcOHWkmXfAYpI7HiGDR+WOwgPP89LA5qRPK90+lPEOUtUy1afl6wyrzv4l+XW13H5Lr5Si3y+3f78oQarCoRMga2wRwphz52cIWOjKvdWN+CEDS+Xk4ZimHivXRi1007/UDk+8dQMELARLBo/eml1Uk3uHWQx0ZSm5jkf6tMaSqlY/fVpyN+CVv1/JPVjRvwQQsAAjpIp15Cd1FgI9kT4t6dG6s9Jbn5bJUQtb9S89HpjoXwJAwIJxDB7FILrt07p57WbcX9VLsNqqf6mz4Zv+JQAELNgdsl5+joXAQNI+rUpRxRUt0TlqQYJQWknq7F/qbPimfwkAAQve+PzctbiCdeilCRYDA5Oq1uq6UktffatWri+o+lNReH+KdQFgFzorkYkzv2/FD2AQe6IfCZ+uFeLThrWRYZrDAZjUyDVgHTxxhiGj6IpsFX78m7/Gk96BXsi24GQyviF90ypUSqq0u8biALCSjh//GHSErsnoBglZMr4B6IZcFP10tV21elxppKb6vm8HACwPWEBPJFxJyLoWhS1gKxKonq0V1MgWnaILS6txuCqP72KxABCwACHbhKejkCVzsoBH3pQKSo1VCvGWYGmb4tTCUnuruThUUcUa53UAELCA7/32j1dofsf3hkoq3g7c0+OdhCWqWAAIWMCjpPn9F7/6b5rfQ34jKrRnW01Utq9abaVQKqrSCBPUARCwgEdIX9YvfvUXmt8DJJPZn6kV1NCA70bS8C5BCwB8CVhzLCN0mF9Yjpvfv/qGl1QIpFIlfVbxhc6a/szyXrYKAXgSsC6cOnKWZYQusk34608v0vzuuc6BoToVquW46R0AnA9YgAk0v/tJBoZKsOocGKpbaWyI2VgAdGgSsOAlmt/9kg4MrWjIPitr61v+b+2Gdya8A8gXAQtWo/ndfTsNDO3H7MLqtv+7XKEjV+kAAAEL2ALN746+uXQ5MNSU8hhjGwAQsIBtpc3vn//pWxbDAf0ODNVJGt65DBoAAQvowufnrsXN7/RlWfqGMuDAUN24DBoAAQvokjS/y5YhIcsuugaG6k585VG2CgG4G7BojkGmpOn9Pz/+E83vFjAxMFTrm9xwlcugATgbsBg2isxJBUsqWVLRQj5MDQzVHgK5DBpAjy6cOtK0IWABuYUs6cmi+T1bWQwM1YnLoAFkjYAFL9D8nh2dA0P7NfPdUs//n9LuKpdBAyBgAb2i+d0sEwNDs323K3AZNADnAlaLpYQNaH43kktyHRiqE5dBA+jSwIf3dAWsyzwXsAXN7/rYMDBUNy6DBtCFgQ/vsUUIb0OW9GT99o9XWIx+3hgsGxiqE5dBA8jkfZQlgM/OnZ+Jr9ihL6t7MnrBuoGhmnEZNABXAhZzsGAtuSRatgzl0mhsEzqSgaGujF4YFJdBA9hGy5aAxSR3WE2a3n/xq7/Q/L6FePSCAwNDdeIyaADbGLi3nC1CBEO2CX/xq/+m+b1DOjBURi+49GYwt7ii5c/hMmgApjCmAcGh+b2dKWwYGNqv5dUNbQvBZdAATOQaLQHrwqkjBCw4JeTmd9kGlGA1wv3H7TdBLoMGYGvAAlwUWvO7TwNDdeMyaADa33M1/lmcJIRzQml+l4GhMnphD5MJNsVl0AB0ZxqdAYuThHCSz83vnQNDKVdvj8ugAaQunDpizVU5BCw4T5rf5eGLEAaG6k6jXAYNQFee0fnW+yXPCVwnVSzpy3K5+T20gaE6cRk0AKWp5Yn3X+AxV2/MxyHLxb6sUAaG6pqDtWlA5TJoAJYFrCbLCV9IuJKQdS0KWy5wdWBov5ZX14392VwGDQSPChZgkmwTno5Cls3N764PDLUVl0EDQbtrW8BiTAO8ZGvzOwNDzeIyaCBYdlWwdBxpBGxlU/M7A0OzETe8D1dZCCA81p0i1Jb6ABvZ0PzOwNBsxfcU0vAOhMbKHiyqWPBaXs3vDAzNCZdBA8HRtSOn+736U54a+C5tfpcLo7PAwNCcMxaXQQMh0bYTx1s20Kff/vGK0eZ3BoZubmEp+z64ElUsIBTaduJ0v283eW4QEml+l3sMdTe/y+iFZwMYGOpKwJKRDVwGDQRB204cPVjAgKQv6xe/+ouW5vfOgaGwC5dBA0Gws4J14dQRThEiSPMLy3Hz+1ff9Pe1mY5eYGCoxaInqcRsLMB3VvdgEbIQJNkm/PWnF3tufk8HhjJ6wYGMNVThMmjAby2bAxbbhAhat83vUrXay8BQ53AZNOCvC6eOWB2wGNWA4O3U/J4ODB2mauWc+DLo3VwGDXioqfMPMxGwWjxHwObN7yUGhnqhNMJl0ICHtOYXAhZgUGfzuwwMfZqBoQNbWVu34u/BZdCAdy5bHbAunDrS5DkCHpJtwubvW2p/lKyGS4V4FAMdPP2bXVix4u/BZdCAd7TmF1M/S7d4noCH9k8Oxx/LBTk1WFC7o18MRWGrTNJyGpdBA17Rml1MBSxGNQAdnhp5silawpWELMKWw7gMGvCGzhOEJgPWlzxVwEMTI1ufOisQttzOWFwGDfigqf29wdBflAoW0OEfnxvp6t97PGzJdiI7UPbjMmjAedpzCwELyMBTI703Q0uukob4YcKW9bgMGnDeZd1/oJGAlexjMtEd+D5gDTaYkrBlPy6DBpzmTAXLyF8WcNE/7hvR+ud1hq107ANhywJcBg04y8SIKZMBiytzADV49WqH7+lxNSuksDXz3bK9GYvLoAEXGSkIlV37CwOumRjJ5t66OGwV2ulqfUOplY0NtbbR/jWyI1Ws9eVVFh4IPGCxRQgY1u0JQu1hK6lsDTE9PlNcBg04x8hoKWMBi0Z3oK2fE4Q6PT49nrBlHpdBA05pOhWwElSxQMAasaeasVnYgqG1puEdcMKFU0ec2yIUNLojaLpPEJoMW0yP14vLoAEnNE39wUVX/+KAC2yqXm0ZBBRX9RgLsVwGDdjOWCGILULAoIkRt5qdNwtbJfLBAO+whbgfC4C1jOUUowHrwqkjc4QshCyPE4S6w9Yuy6bHzy2uOLWOcqKQy6ABazWdDFim//KA7fI+QagzbNlyVc/y6rpz68dl0ICVziaFIGcDFo3uCDhg+bc99HjYqnIv4s5rJpdBMxsLsC5gmfzDi65/AoCtbD5BqDNsVbkXsSvxbCwugwZsYrQAZPyrPRk42uJ5RGieCqy5OcR7EXtdIC6DBqzSdDpgZfFJADaaCPj02GZhi6yVXAZNwztgg1ZSAHI+YNGHheC4fILQRNjiqp620vguSntA/prG3/sy+kRO81wiNL6cINSJexG5DBqwhPHCTyYBi3lYCDNg8U20l7DVzfR412ZgbYWG9yfdXV5lEZClphcBK6tPBrBFCCcIdYetbq7qWV7d8Odz3ruLJ74jXF1fWGIhkJWzpvuvsg5Y9GEhGFSv+hPSvYhcBt22tLauZhaXefEjS81Mfojy7RMCbDBBwNIWtspRyJK6lQxwX11f9+pzlMuglx+sKLW+EeRzLOHq6/kH0ae/wQseWcqk4JNZBSvpwyJkIQicINQftqQhfmFlIx514E3/UsCXQROukJcoj2Ry8C7rd6mPeWoRAk4QmnzXKqpCreJN0ArxMmjCFXLUzOytytdPDMg3YLFFmGXQcn2uVEiXQROukLPMCj2ZBqwLp47IqIYWzy98xgnC7INWcagaN42rgptBK5TLoCVUXb1HuEKuMpvLmUd9vcnzC59RvcoppJRLqrjL3aDl+2wsCVVSuVpZJ1whN60sxjPkGbDow4LXOEFI0Orv3djfy6DTcCXbg0COMr1VJvOAlVX3PpAXThDaGLQcyVgeXgZNuIJFMp3HmVc9mpAFb3GC0MKgNVRThYobQcuny6AJV7DIXNYFnrwCFtuE8DhgsUVoX8pqN5K7ELR8ugz66r0lwhVskXlhhwoWoBEnCAlaOvjQ8C53Cy6urvGagy0yv64vl6/gZKr7WZ5v+IbqlYNBq1yy8q/o8mXQEq7kAmfAIsFUsMRHPN/wDScIHQxacumyNMNbFrRcvQyacAUbw1VS2AkmYLFNCO9wgtDVoFWwMmjJZdAuNbwTrmCpXPq+cwtYybAvtgnhFU4QErT0vkO7cxn0zOIy4Qq2yqWgk3cXJduE8CxgsUXoXdDKudnchcugJVjNLq3wuoGV4SqP7UEbAhbbhPAGJwg9DVrJhdJ5Bi2bL4OWcCVbg4ClchsLlWvAYpsQPqF65bFiMdegZetl0IQrOCC3Qo4Ng1bYJoQXOEFI0DIp7sWyqOGdcAUXwlVe24O2BKxpXgPwAScIwwxamV0oHYWr8rgds7EIV3BErrfG5B6wknRJLxacxwnCMIPWwwulzQctGy6Dlqtv5MQgYDm5e3A66IBlQ8oE9AQstghDFV8onVHQKuVYxZJwJZc3yyXOgOVyL9wULVqIOV4PcBUnCJFV0Iovgx7J/lQh4QqOyb2/24qAxTYhXEf1ClsHLf1/ftaXQROu4JhWlCuaBCyL0ibQL04QYsugJRdKV/QHrawugyZcwUFWFGysCVhJ2mzxuoCLOEGIrVNWe46V7qAVT5qXU4wGSai6eo9wBed8QMB6ElUsOIkThMgjaMVjGwzNxpJQJZWrlXXCFZzSTIaYE7AeM81rA24GLLYI0UfQGvRCaUOXQafhSrYHAcdYU6ixKmAlqZNmdziFE4ToO2ilF0oPELTkCh0JbIQrQFl1YK5o4QIxEwtOoXqFwYJWYeCgpWvCO+EKjsv1ahzrA1YyeZWZWHAGJwiRd9DSdRn01XtLhCu47AOb/jJFFgkYDCcIYSRoDVV7mnU16GXQcrfg4uoa6w9Xnb1w6shZAtbOpnmtwBWcIISZd+fC9xdKdxW0BrgMWsKVXOAMOMy6woyVAYtmd7gVsNgihMl36WLXQaufy6AJV/CAlbfBFC1eMGZiwXqcIIRtQauXy6AJV/DEtE3N7dYHrGixJI22eN3AZruqZRYBuQQteWx2oXS3l0HPLC4TruALK/u2iywa0L/nJ4dZBORCgtTDC6UfDVo7XQYtwWp2aYVFhA9O2zK53bWANa0Y2QCL7Z/YxSIg36AlF0pvErS2ugxawpVsDQKesLYQY3XASvZUaXaHtWhwh61Ba7PLoAlX8EwryglNAlb/TvIagq32T7BFCEuDVqWsynuHv5+NRbiCh6zOB9YHLEY2gHAF9BG05ELp4ZqqTOxR362uEa7gG+t3uIqOLCTN7rAO24Ow3d3bs+rq9Rvq2+/usxjwzQc2jmZwLmAle6xneT3BJpwghI2WHyyp661v1J9//4W69KcLanZ2adNxDoDj3rf9L+jSEB+pYn3Iawq24AQhbHLn+k01d3NW3b115/vfK1Si12iJq5zgnWnbq1fClS1CqWJNKwaPwiJsESJvUq365m+X1bnP/p+6/N8XHwlX7ZOE3DQALzlx+K3s4KJSxYIVaHJHHtZW1+IgNXPlurp/b2HLf69QG2NrED6atnWw6OOKLq1qUsVi8CgIVwjOvbnv4iqV9FbJx23DVbkWPwAPOXNPsYsXqUkv1ju8xpAntgeRBalWSW/VzJVv4+3ArsjWoFSvAP80bR4s6kPAkpMDP48e47zWkBdOEMKku7dm1e1vbz7aU9WlQnUPW4PwlVODx4uurW5ycoC5WMgVJwihW9qwno5X6CtclWSCO+EfXnKqeiXKji40VSzk6vOLc2rfvnFVi35EGS4V0ttIgJ7JFqBUq6THaiCyNTg0yoLCV85dm1dycZVvf/bRg8mfviUlhAavOeThxp1FdeO7JTX53Li6s7KhvlvdUEvrSkW/jMJWQZUJXEZcv7cSP1x3/96iunbxa/X1+UtqduZ29/1V2+Wr6h4a2+ErqV45F7DKDi84VSzk6vyl2/HHIz+pq5UoXN1d30j+l/ZHqWwNRz/CUOWC6Ha8Ql+K5Shg7WaR4auTLv6lnX7LP3jizLuKE4XI2aGXJuKQtZNKErQkcNWK7fCF3nzx7WL8cIls/ckWoGwFmlIcnohDFuAhqV694eJf3PWvSKpYyF1nJWs7W1W52hWuKHRFv65Q5fKCbPmlvVU6tv+2/SlZTg0SruCvk67+xZ3+GZpeLNji1ux9Nb+wrA680FvWl56tB1Hwml9Vajbp5VpcU2ptQyJYIa564SHbe7BkvMK1i1fUlb9+FVeuZFvQqGJJFZnYDn852XuV8uHHHqpYsEK3laxtA5c0yq9vqHur8k9UuVwgFSrpq5KK1drqaqb/7WJtlHAFn510+S/vxVfmwRNn3o4+vMdrETbotierX5WOHq7Qerls6cEy2rDe7Zt3ZVgValzmDG8523vlVcBKQtZX0Yc6r0nYErL+5ccvqFo1m/QTSpUr74Al4xXk2hrZCsy6WvXoO3dBFYf/B9Ur+OyAK5c6b8WnzkgpJX7IaxI2kO1C6cv62f/6n5mErMW1du/WbNyetBF0lUu3vu4DNJ2v6LuC36ZdD1fx16lPz8jBE2e+iD4c5rUJW0zuHc4sZO3EhypXlhUsqVLN3bxjdLxCX2/a5ZoqDNFyCq8d8CFg+Xa293j0+ITXJmxxa3ZRffybv1oRsqhy7SzL8Qr9patCu3oF+OukD+Eq/nL17Zk5eOKMBKwGr1HYxKZK1nZsr3KZqmBpuw/Q9Bt2bYTLnOGzOdWuXs358Mn4OJ3uWPT4itcpbGJTJWs7W1W5hqKPu0p+VbmkYT2dsJ5rw3q34apUJVzBdyd9CVfx16yPz9DBE2ek2X2K1yps40olazvp3Yq1UvtjllWuQStYNoxX6O+dutC+DqfAPi681YrC1QGfPiFf71eQXqyjiuGjsIwrlaztLK3LY0OppMoll1hL0LK5ypXFfYBG81VlN+EKvjvm2yfk7TlfLoKGzXyoZG3HVJWrlwqWNKnLSUCbxiv0pVhuV68Afzk/VDSogJWELIaPgpBlQ0bQVOXqJmBJqJJqlWwFerF2Eq64zBl+O+DLycFOvn/VSsmRsQ2wkg/bhd2SHcV7qxvqXvxP7TsWdVa50vsAJVQ5Xa16/Cfg6h7CFXz3vo/hKv769f2ZY2wDbBdSJWs73VS5OitYacO6C+MV+luQkioOT/IFAp95NZbhcSH8aMTYBlhNKln/+fGf4pAlYStU3VS5hDX3AZrOV7VRvjjgu+O+hivh/Y/Mtz/7aG7yp2/JO3OD1zJstba2of5+eVb9w75RNbyrwoKk6xLlrAfrErxkNteGmrn9nfrtJ3+MQ9bG+rq3n7fMu2LmFTwnje3Hff4Ei4E8ke9HjxavZ9hsaXkt7smSihY2t3/fU/5/ksVSu/cK8Ntx77+UQ3gWkxLkMV7PIGTBdoXqSDxYFPCYNLafJWD5E7Ka0YfTvK5ByHJbrervFmqhXIsfgMda0eNkCJ9oMbAnVkqSc7y+Qchy1+Skp83fhYIq1MZ4guH992GfG9uDDVjJrI2TvL5ByIJ1+arG1iC8dzr6PhzMTlJoFSwJWdLw3uR1DkKWmyYnRvwLV6WqKpR38eTCZ1K1Oh7SJ1wM9Ik+zmsdhCw31Wqe9WDJ1uAQM6/gvZO+TmwnYHVITi+wVQhCFvLPVzKSoVBiIeCzZrJ7FJRQK1gSst6NPpzldQ9Cllv2Pzfh0TtwmYGi8F2wY5KKgT/xzMaCkyHr/KXbLIYPb8BDnBqE94LbGiRgKbYK4W7IOvP7VrAha3TEj2bweGuwWOYFDZ8FuTVIwHoYst5VbBXCQaGGrBEfAlZ8Hc5uXsTwWfA3qBR5DcTYKgQhC9m98dY4NQjvBbs1SMDqwFYhCFlumZxwN6DETe2lKi9c+CzorUEC1pMh613FViEIWU5wdhZWvDW4hxcsfBb81iABa3NvKu4qBCHL/oBVdbM5vFDlOhx473joW4MErE1wVyEIWW5w8cLnQrkWPwCPyV2D0ywDAWurkCX7xqdZCRCyoC9dFVShxswreK2l2BokYHVBXiRsFYKQZanRPW6NaojDFVuD8Pz75oVTR/i+ScDaXvIieZOVACHLTiMj7lwvUyhV2RqE72QkQ5NlIGB1G7LkxUI/FpwPWZ//6VsWIrd0VVCFIWZewWtnk1P4IGD1FLLkRcPoBjjt83PX4qDlk/37nnIjX8lIhkKJFyF8xW4PAWsgjG6A82Sr0LeQZX24kq3ByjALAZ8dYyQDAatvyYuHkxEgZFmmVrV72GihNsKLDj57P/r+yIn7bVC77sLtzz46P/nTt8ajX/4zqwGX3Zq9r+YXltWBF8ad/1y+/uaWmp+/b2e4qu5RhfIQLzj4Svqu2BrcARWsLkUvpuOKfix4gO1C0++q5Shg7WYd4Cv6rghYRryh6McCIcsKkxN2bsEV2RqE3+i7ImDpx3wsELLsYeOFz3FTe6nKiwu+OknfFQHLZMhqRh+OsxIgZOHRd9NSeywD4KfTzLsiYGURsuS+wmlWAoSs/Ox/bsKuN9PaKNfhwFfyBsFpegJWZmh6ByELsfgqHLYG4ae4NYZ7BglYmenox+JFB69C1tLymhN/39ERSy58lutw5DJnwE/Ho+93FBMIWJmHrJai6R2ehayPf/NXJ0LWiCUBKw5XbA3CT9LUPs0yELDyCllNxd40PHJrdtGZkJV7uJLrcGR7EPAPTe0ELCtCliR8Uj4IWRmbnBjNMV0VVGFolBcLfHSWwgEBy6aQJS/GJisBQlZ28pyFFY9kKHDbGLxDUzsBy0pvKk4WgpCVXcCqlvMJV7I1KENFAf/C1RtMaidgWSdJ/McUJwtByMrE5GQ+W3QFrsOBnzgxSMCyOmTJi5M7C0HI8lS8NVgs86KAj+FqmmUgYLkQsrhOB4Qsw0b3ZDyqIQpWhepuXgzwzXRyQwkIWE6ELPlJgFMYIGQZNDKSbR9UcYiBovDO6eSQFghYzoWsaVYChCz3xU3tbA3CL4xjIGA5HbKOEbJAyDJj/76nMnqnLLV7rwC/wtUbjGMgYPkQsjiZAe9C1i9+9Zf4o/dvlLVRrsOBT+IT74QrApYv3iBkwTfzC8txJSvPkFWrmh02WqjsUqpU5cmGT+HqDcYxELC8kfykQMiCd2SbMM+QZXQWllyHU2XmFQhXIGC5ELLeVMzIAiHLCYXaGFuD8AmDRAlYXoeslmIQKQhZ2kxOmKkwFcq1+AF44hiDRAlYIYQspr2DkKWJkQufZWuQ63BAuAIBi5AFhByytOcrGclQKPFkgnAFAhYhCwgzZO1/bkJvuCpV20NFAcIVCFiELCDkkKU1YA2N8uTBB9OEKwIWIYvLoUHI6tvoiL4Ln9kahEfhiitwCFhIQpb8pMEXBAhZPRrRFbCK5Shg7eYJA+EKBCxCFuBWyPrqG3t3wotDYzxRIFyBgOV5yGIYKbwMWb/+9KI6f+m29j97cmKwvqm4qb1Y5kkC4QoELM9D1mlF4zs8deb3Le0ha6BZWMVSu/cKcNdxwhUBC92HLE4XgpDVbcCq9l99KtZGuQ4HLpNRDO+zDAQsELIA7SGr3wufC5VdSpWqPBlwOVxNswwELBCyAGMhq/d0VVCFKtfhgHAFAhYhi5AFQtamRvf0PqqhUBtjaxCEKxCwCFlxyDoQPc6yGiBkPWpkpLerbQrlWvwAHCM/ZP+IcEXAgv6QJV9cbxCyQMgagGwN1tgahJPh6o3kh20QsGAwZDVZDRCy2vbve6r7fMV1OHBPi3BFwEJGISt6SMiaZjVAyOpeoVRtDxUF3CGh6keEKwIWsg1aMliO+SfwMmSdOz/T0/+nVt1h2KhsDQ6NsrhwSVO1K1cccHIQR2g8cPDEmanow4esBHxz6KUJdeQn9a7+3V/+1x/U1WtbV75ka5DLnOEQrr5xHBUsD3B/IXwlW4VSzRr8na5MuIJLThKuCFiwJ2RxfyGCDlmTE1ufDCwOjbGQcIXMuHqXZSBgwa6QxawsBBuytrrwOT41WCyziLBdOoZhmqUgYMHOkJWOcTjNaiC0kPXkO1yJU4NwwdkkXDVZCn8wDMZDtz/76EH0+D+TP31rPPrHf2ZF4Itbs/fV/MKyOvDC+Cb/a0Gd/+s3j+aroXGqV7CdhKp/j8JVi6XwCxUsj0VfsMejD9IoSV8WvNFtJSuuXJWqLBhsJicFGcNAwIKjIWta0fyOAELW6EjHhc8y80p6rwB7HeOkIAEL7ocsmt/hfcga6QhYhdpYHLIAC3FhMwELnoUsuV7nR4rrdeBxyIrDVbkWPwALxT/scu1NGGhyD8ztzz76ePKnb12OftmIHkOsCFzX2fh+6fKMerCxm+oVbCT9Vv8uh5BYijDwLhSogyfOHI4+/DJ61FkN+GBy77BS6yvq1t0VFgM2kS3B42wJErAQVsiSs+5yh+FRVgMAtJOtwGNsCRKwEG7Qejv68B4rAQDaTKt25YoT3AQsBB6y2DIEAD0kWL3PMhCwgDRksWUIAP1jSxAELGwbtNgyBIDeTCu2BEHAQhchS7YMpZp1mNUAgC1JoJKq1WmWAp0YNIpNJSVuuWKHPgIA2FxTtaeyE67wBCpY2NHBE2ekJ0uqWeOsBgDETkbB6l2WAQQsDBqyaIAHABrZQcCCoaA1pdoN8FSzAIRGWiZO0sgOAhZMhay6alezGqwGgAC0VLtq1WQpQMBCFkFLxjm8o6hmAfAXVSsQsJBLyKorqlkA/NNSVK1AwIIFQWtK0ZsFwA9UrUDAglUhi5OGAFzGCUEQsGB10GokQavOagBwgFSqPmCuFQhYcCFkSTUrbYIHAFvJFHa5Q7DFUoCABZeCltxlKL1ZDVYDgEVaSbDimhsQsOB00JpSNMEDsMPJ6PE+TewgYMGXkCXhSrYM32Y1AOSgqdpN7C2WAgQs+Bi06orZWQCyI4GK7UAQsBBM0JJxDrJtWGc1ABjA6UAQsBB00OLKHQC6Tat21Yo+KxCwEHTIoj8LgA5NRZ8VCFjAE0GrngStKVYDQI/B6iR3B4KABWwftBpJ0GqwGgC20UqC1TRLAQIWQNACQLACAQuwImjJicPDrAYQtLkkWL3PUoCABegLWlOqXdGqsxpAcMHqA8UEdhCwAIIWAIIVCFiAi0FLhpX+XNGjBfimlQSraYIVCFhAfkFLAhbN8IAfwYrmdRCwAAuDllS0jrIagFPOqva1NgQrELAAi4NWXTGwFHBBUzEgFAQswLmgJVfwyPU7UtXirkPAHtNJsGqxFCBgAW6HrakkaDFLC8iHhKmPFCcCQcACvAxajejDW4rtQyArTQlW9FeBgAWEEbTqSciSsFVnRQCtpEJ1WrUb18+yHCBgAWGGraNJ0OL0ITCY+DSghCu2AUHAApAGrbqiqgX0imoVQMACug5bUs36maJXC9hKU7Wb1qlWAQQsoOegJeMd0i3EBiuCwLWSUDXNiAWAgAXoClv1JGzJuIc6K4JASHVqWrVPArIFCBCwAKNhS+ZppY3xhC34GKqkr+rjKFSdZjkAAhZA2AIIVQABC/A0bDUUU+Nhv5ZqN6sTqgACFuBM2KqrdlXrZ4oGedjjrHo4XZ2eKoCABTgdttLTiK8nH7l8GlmS6tSnqj1SocVyAAQswNfAdbgjcDVYEWiWVqk+ZesPIGABoYat8SRkpWGL3i30qpUGKvlIlQogYAEgcIFABRCwAOQWuA4rthRDlW75fUmgAghYAMyFrsNJ0Ho1CV5UufzRSgLVl0moOstdfwABC0A+gWs8CVkSul4kdDkZps4mYarFsgAELAB2By8JXHX1aKWLERH5aCaBqjNMUZkCCFgAPAldabWrnjxeT0IXFa/BtdTDqtTl5GOLqhRAwAIQdviqdwQvebyahK/0n0M3l4Qm8WnHP88xFR0AAQtAvwGss9LVSD6Odfyeq5WwVvJIf305+fXZJERRhQJAwAJgTSBrPPZbW/WAva7xPyuh6O4mv998/N+jBwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKB//1+AAQD2xEfIPbkIFQAAAABJRU5ErkJggg==", jv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eMotherDuck%3c/title%3e%3cg%20transform='scale(0.85)%20translate(0,%202)'%3e%3cpath%20fill='%23ff9538'%20d='M1.71%2015.86s7.45%205.32%207.89%205.59c.44.27%201.08.33%201.64.11.56-.22.98-.71%201.11-1.21s1.85-9.49%201.85-9.49c.02-.12.07-.48-.13-.83-.27-.47-.86-.71-1.38-.57-.42.12-.64.44-.7.55-.09.17-.26.45-.57.7-.24.19-.47.3-.58.34-.96.38-2.02.06-2.61-.72-.38-.48-1.04-.67-1.64-.43-.6.24-.94.84-.89%201.45.11.98-.44%201.94-1.4%202.32-.51.21-1.06.21-1.54.05-.12-.03-.51-.12-.89.09-.48.26-.74.84-.61%201.37.09.39.38.62.48.69z'%20/%3e%3cpath%20fill='%23ff9538'%20d='M14.12%204.21s2.65%208.76%202.83%209.24c.19.48.66.92%201.23%201.09.58.16%201.21.03%201.62-.28.41-.31%207.25-6.39%207.25-6.39.09-.08.35-.34.4-.74.07-.53-.25-1.09-.75-1.29-.4-.16-.78-.04-.89%200-.18.08-.48.2-.88.2-.3.01-.55-.05-.67-.08-.99-.28-1.64-1.18-1.63-2.16-.01-.61-.42-1.17-1.04-1.35-.62-.18-1.26.09-1.59.6-.51.84-1.53%201.27-2.52.99-.53-.15-.96-.48-1.25-.91-.07-.09-.33-.4-.76-.48-.54-.09-1.1.22-1.32.71-.16.37-.08.72-.04.84z'%20/%3e%3c/g%3e%3c/svg%3e", Mv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eMySQL%3c/title%3e%3cpath%20d='M16.405%205.501c-.115%200-.193.014-.274.033v.013h.014c.054.104.146.18.214.273.054.107.1.214.154.32l.014-.015c.094-.066.14-.172.14-.333-.04-.047-.046-.094-.08-.14-.04-.067-.126-.1-.18-.153zM5.77%2018.695h-.927a50.854%2050.854%200%2000-.27-4.41h-.008l-1.41%204.41H2.45l-1.4-4.41h-.01a72.892%2072.892%200%2000-.195%204.41H0c.055-1.966.192-3.81.41-5.53h1.15l1.335%204.064h.008l1.347-4.064h1.095c.242%202.015.384%203.86.428%205.53zm4.017-4.08c-.378%202.045-.876%203.533-1.492%204.46-.482.716-1.01%201.073-1.583%201.073-.153%200-.34-.046-.566-.138v-.494c.11.017.24.026.386.026.268%200%20.483-.075.647-.222.197-.18.295-.382.295-.605%200-.155-.077-.47-.23-.944L6.23%2014.615h.91l.727%202.36c.164.536.233.91.205%201.123.4-1.064.678-2.227.835-3.483zm12.325%204.08h-2.63v-5.53h.885v4.85h1.745zm-3.32.135l-1.016-.5c.09-.076.177-.158.255-.25.433-.506.648-1.258.648-2.253%200-1.83-.718-2.746-2.155-2.746-.704%200-1.254.232-1.65.697-.43.508-.646%201.256-.646%202.245%200%20.972.19%201.686.574%202.14.35.41.877.615%201.583.615.264%200%20.506-.033.725-.098l1.325.772.36-.622zM15.5%2017.588c-.225-.36-.337-.94-.337-1.736%200-1.393.424-2.09%201.27-2.09.443%200%20.77.167.977.5.224.362.336.936.336%201.723%200%201.404-.424%202.108-1.27%202.108-.445%200-.77-.167-.978-.5zm-1.658-.425c0%20.47-.172.856-.516%201.156-.344.3-.803.45-1.384.45-.543%200-1.064-.172-1.573-.515l.237-.476c.438.22.833.328%201.19.328.332%200%20.593-.073.783-.22a.754.754%200%2000.3-.615c0-.33-.23-.61-.648-.845-.388-.213-1.163-.657-1.163-.657-.422-.307-.632-.636-.632-1.177%200-.45.157-.81.47-1.085.315-.278.72-.415%201.22-.415.512%200%20.98.136%201.4.41l-.213.476a2.726%202.726%200%2000-1.064-.23c-.283%200-.502.068-.654.206a.685.685%200%2000-.248.524c0%20.328.234.61.666.85.393.215%201.187.67%201.187.67.433.305.648.63.648%201.168zm9.382-5.852c-.535-.014-.95.04-1.297.188-.1.04-.26.04-.274.167.055.053.063.14.11.214.08.134.218.313.346.407.14.11.28.216.427.31.26.16.555.255.81.416.145.094.293.213.44.313.073.05.12.14.214.172v-.02c-.046-.06-.06-.147-.105-.214-.067-.067-.134-.127-.2-.193a3.223%203.223%200%2000-.695-.675c-.214-.146-.682-.35-.77-.595l-.013-.014c.146-.013.32-.066.46-.106.227-.06.435-.047.67-.106.106-.027.213-.06.32-.094v-.06c-.12-.12-.21-.283-.334-.395a8.867%208.867%200%2000-1.104-.823c-.21-.134-.476-.22-.697-.334-.08-.04-.214-.06-.26-.127-.12-.146-.19-.34-.275-.514a17.69%2017.69%200%2001-.547-1.163c-.12-.262-.193-.523-.34-.763-.69-1.137-1.437-1.826-2.586-2.5-.247-.14-.543-.2-.856-.274-.167-.008-.334-.02-.5-.027-.11-.047-.216-.174-.31-.235-.38-.24-1.364-.76-1.644-.072-.18.434.267.862.422%201.082.115.153.26.328.34.5.047.116.06.235.107.356.106.294.207.622.347.897.073.14.153.287.247.413.054.073.146.107.167.227-.094.136-.1.334-.154.5-.24.757-.146%201.693.194%202.25.107.166.362.534.703.393.3-.12.234-.5.32-.835.02-.08.007-.133.048-.187v.015c.094.188.188.367.274.555.206.328.566.668.867.895.16.12.287.328.487.402v-.02h-.015c-.043-.058-.1-.086-.154-.133a3.445%203.445%200%2001-.35-.4%208.76%208.76%200%2001-.747-1.218c-.11-.21-.202-.436-.29-.643-.04-.08-.04-.2-.107-.24-.1.146-.247.273-.32.453-.127.288-.14.642-.188%201.01-.027.007-.014%200-.027.014-.214-.052-.287-.274-.367-.46-.2-.475-.233-1.238-.06-1.785.047-.14.247-.582.167-.716-.042-.127-.174-.2-.247-.303a2.478%202.478%200%2001-.24-.427c-.16-.374-.24-.788-.414-1.162-.08-.173-.22-.354-.334-.513-.127-.18-.267-.307-.368-.52-.033-.073-.08-.194-.027-.274.014-.054.042-.075.094-.09.088-.072.335.022.422.062.247.1.455.194.662.334.094.066.195.193.315.226h.14c.214.047.455.014.655.073.355.114.675.28.962.46a5.953%205.953%200%20012.085%202.286c.08.154.115.295.188.455.14.33.313.663.455.982.14.315.275.636.476.897.1.14.502.213.682.286.133.06.34.115.46.188.23.14.454.3.67.454.11.076.443.243.463.378z'/%3e%3c/svg%3e", Nv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3ePostgreSQL%3c/title%3e%3cpath%20d='M23.5594%2014.7228a.5269.5269%200%200%200-.0563-.1191c-.139-.2632-.4768-.3418-1.0074-.2321-1.6533.3411-2.2935.1312-2.5256-.0191%201.342-2.0482%202.445-4.522%203.0411-6.8297.2714-1.0507.7982-3.5237.1222-4.7316a1.5641%201.5641%200%200%200-.1509-.235C21.6931.9086%2019.8007.0248%2017.5099.0005c-1.4947-.0158-2.7705.3461-3.1161.4794a9.449%209.449%200%200%200-.5159-.0816%208.044%208.044%200%200%200-1.3114-.1278c-1.1822-.0184-2.2038.2642-3.0498.8406-.8573-.3211-4.7888-1.645-7.2219.0788C.9359%202.1526.3086%203.8733.4302%206.3043c.0409.818.5069%203.334%201.2423%205.7436.4598%201.5065.9387%202.7019%201.4334%203.582.553.9942%201.1259%201.5933%201.7143%201.7895.4474.1491%201.1327.1441%201.8581-.7279.8012-.9635%201.5903-1.8258%201.9446-2.2069.4351.2355.9064.3625%201.39.3772a.0569.0569%200%200%200%20.0004.0041%2011.0312%2011.0312%200%200%200-.2472.3054c-.3389.4302-.4094.5197-1.5002.7443-.3102.064-1.1344.2339-1.1464.8115-.0025.1224.0329.2309.0919.3268.2269.4231.9216.6097%201.015.6331%201.3345.3335%202.5044.092%203.3714-.6787-.017%202.231.0775%204.4174.3454%205.0874.2212.5529.7618%201.9045%202.4692%201.9043.2505%200%20.5263-.0291.8296-.0941%201.7819-.3821%202.5557-1.1696%202.855-2.9059.1503-.8707.4016-2.8753.5388-4.1012.0169-.0703.0357-.1207.057-.1362.0007-.0005.0697-.0471.4272.0307a.3673.3673%200%200%200%20.0443.0068l.2539.0223.0149.001c.8468.0384%201.9114-.1426%202.5312-.4308.6438-.2988%201.8057-1.0323%201.5951-1.6698zM2.371%2011.8765c-.7435-2.4358-1.1779-4.8851-1.2123-5.5719-.1086-2.1714.4171-3.6829%201.5623-4.4927%201.8367-1.2986%204.8398-.5408%206.108-.13-.0032.0032-.0066.0061-.0098.0094-2.0238%202.044-1.9758%205.536-1.9708%205.7495-.0002.0823.0066.1989.0162.3593.0348.5873.0996%201.6804-.0735%202.9184-.1609%201.1504.1937%202.2764.9728%203.0892.0806.0841.1648.1631.2518.2374-.3468.3714-1.1004%201.1926-1.9025%202.1576-.5677.6825-.9597.5517-1.0886.5087-.3919-.1307-.813-.5871-1.2381-1.3223-.4796-.839-.9635-2.0317-1.4155-3.5126zm6.0072%205.0871c-.1711-.0428-.3271-.1132-.4322-.1772.0889-.0394.2374-.0902.4833-.1409%201.2833-.2641%201.4815-.4506%201.9143-1.0002.0992-.126.2116-.2687.3673-.4426a.3549.3549%200%200%200%20.0737-.1298c.1708-.1513.2724-.1099.4369-.0417.156.0646.3078.26.3695.4752.0291.1016.0619.2945-.0452.4444-.9043%201.2658-2.2216%201.2494-3.1676%201.0128zm2.094-3.988-.0525.141c-.133.3566-.2567.6881-.3334%201.003-.6674-.0021-1.3168-.2872-1.8105-.8024-.6279-.6551-.9131-1.5664-.7825-2.5004.1828-1.3079.1153-2.4468.079-3.0586-.005-.0857-.0095-.1607-.0122-.2199.2957-.2621%201.6659-.9962%202.6429-.7724.4459.1022.7176.4057.8305.928.5846%202.7038.0774%203.8307-.3302%204.7363-.084.1866-.1633.3629-.2311.5454zm7.3637%204.5725c-.0169.1768-.0358.376-.0618.5959l-.146.4383a.3547.3547%200%200%200-.0182.1077c-.0059.4747-.054.6489-.115.8693-.0634.2292-.1353.4891-.1794%201.0575-.11%201.4143-.8782%202.2267-2.4172%202.5565-1.5155.3251-1.7843-.4968-2.0212-1.2217a6.5824%206.5824%200%200%200-.0769-.2266c-.2154-.5858-.1911-1.4119-.1574-2.5551.0165-.5612-.0249-1.9013-.3302-2.6462.0044-.2932.0106-.5909.019-.8918a.3529.3529%200%200%200-.0153-.1126%201.4927%201.4927%200%200%200-.0439-.208c-.1226-.4283-.4213-.7866-.7797-.9351-.1424-.059-.4038-.1672-.7178-.0869.067-.276.1831-.5875.309-.9249l.0529-.142c.0595-.16.134-.3257.213-.5012.4265-.9476%201.0106-2.2453.3766-5.1772-.2374-1.0981-1.0304-1.6343-2.2324-1.5098-.7207.0746-1.3799.3654-1.7088.5321a5.6716%205.6716%200%200%200-.1958.1041c.0918-1.1064.4386-3.1741%201.7357-4.4823a4.0306%204.0306%200%200%201%20.3033-.276.3532.3532%200%200%200%20.1447-.0644c.7524-.5706%201.6945-.8506%202.802-.8325.4091.0067.8017.0339%201.1742.081%201.939.3544%203.2439%201.4468%204.0359%202.3827.8143.9623%201.2552%201.9315%201.4312%202.4543-1.3232-.1346-2.2234.1268-2.6797.779-.9926%201.4189.543%204.1729%201.2811%205.4964.1353.2426.2522.4522.2889.5413.2403.5825.5515.9713.7787%201.2552.0696.087.1372.1714.1885.245-.4008.1155-1.1208.3825-1.0552%201.717-.0123.1563-.0423.4469-.0834.8148-.0461.2077-.0702.4603-.0994.7662zm.8905-1.6211c-.0405-.8316.2691-.9185.5967-1.0105a2.8566%202.8566%200%200%200%20.135-.0406%201.202%201.202%200%200%200%20.1342.103c.5703.3765%201.5823.4213%203.0068.1344-.2016.1769-.5189.3994-.9533.6011-.4098.1903-1.0957.333-1.7473.3636-.7197.0336-1.0859-.0807-1.1721-.151zm.5695-9.2712c-.0059.3508-.0542.6692-.1054%201.0017-.055.3576-.112.7274-.1264%201.1762-.0142.4368.0404.8909.0932%201.3301.1066.887.216%201.8003-.2075%202.7014a3.5272%203.5272%200%200%201-.1876-.3856c-.0527-.1276-.1669-.3326-.3251-.6162-.6156-1.1041-2.0574-3.6896-1.3193-4.7446.3795-.5427%201.3408-.5661%202.1781-.463zm.2284%207.0137a12.3762%2012.3762%200%200%200-.0853-.1074l-.0355-.0444c.7262-1.1995.5842-2.3862.4578-3.4385-.0519-.4318-.1009-.8396-.0885-1.2226.0129-.4061.0666-.7543.1185-1.0911.0639-.415.1288-.8443.1109-1.3505.0134-.0531.0188-.1158.0118-.1902-.0457-.4855-.5999-1.938-1.7294-3.253-.6076-.7073-1.4896-1.4972-2.6889-2.0395.5251-.1066%201.2328-.2035%202.0244-.1859%202.0515.0456%203.6746.8135%204.8242%202.2824a.908.908%200%200%201%20.0667.1002c.7231%201.3556-.2762%206.2751-2.9867%2010.5405zm-8.8166-6.1162c-.025.1794-.3089.4225-.6211.4225a.5821.5821%200%200%201-.0809-.0056c-.1873-.026-.3765-.144-.5059-.3156-.0458-.0605-.1203-.178-.1055-.2844.0055-.0401.0261-.0985.0925-.1488.1182-.0894.3518-.1226.6096-.0867.3163.0441.6426.1938.6113.4186zm7.9305-.4114c.0111.0792-.049.201-.1531.3102-.0683.0717-.212.1961-.4079.2232a.5456.5456%200%200%201-.075.0052c-.2935%200-.5414-.2344-.5607-.3717-.024-.1765.2641-.3106.5611-.352.297-.0414.6111.0088.6356.1851z'/%3e%3c/svg%3e", Pv = {
25946
+ var wv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClickHouse%3c/title%3e%3cpath%20d='M21.333%2010H24v4h-2.667ZM16%201.335h2.667v21.33H16Zm-5.333%200h2.666v21.33h-2.666ZM0%2022.665V1.335h2.667v21.33zm5.333-21.33H8v21.33H5.333Z'/%3e%3c/svg%3e", Tv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eDatabricks%3c/title%3e%3cpath%20d='M.95%2014.184L12%2020.403l9.919-5.55v2.21L12%2022.662l-10.484-5.96-.565.308v.77L12%2024l11.05-6.218v-4.317l-.515-.309L12%2019.118l-9.867-5.653v-2.21L12%2016.805l11.05-6.218V6.32l-.515-.308L12%2011.974%202.647%206.681%2012%201.388l7.76%204.368.668-.411v-.566L12%200%20.95%206.27v.72L12%2013.207l9.919-5.55v2.26L12%2015.52%201.516%209.56l-.565.308Z'/%3e%3c/svg%3e", Ev = "data:image/png;base64,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", Dv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eDuckDB%3c/title%3e%3cpath%20d='M12%200C5.363%200%200%205.363%200%2012s5.363%2012%2012%2012%2012-5.363%2012-12S18.637%200%2012%200zM9.502%207.03a4.974%204.974%200%200%201%204.97%204.97%204.974%204.974%200%200%201-4.97%204.97A4.974%204.974%200%200%201%204.532%2012a4.974%204.974%200%200%201%204.97-4.97zm6.563%203.183h2.351c.98%200%201.787.782%201.787%201.762s-.807%201.789-1.787%201.789h-2.351v-3.551z'/%3e%3c/svg%3e", Ov = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGoogle%20BigQuery%3c/title%3e%3cpath%20d='M5.676%2010.595h2.052v5.244a5.892%205.892%200%200%201-2.052-2.088v-3.156zm18.179%2010.836a.504.504%200%200%201%200%20.708l-1.716%201.716a.504.504%200%200%201-.708%200l-4.248-4.248a.206.206%200%200%201-.007-.007c-.02-.02-.028-.045-.043-.066a10.736%2010.736%200%200%201-6.334%202.065C4.835%2021.599%200%2016.764%200%2010.799S4.835%200%2010.8%200s10.799%204.835%2010.799%2010.8c0%202.369-.772%204.553-2.066%206.333.025.017.052.028.074.05l4.248%204.248zm-5.028-10.632a8.015%208.015%200%201%200-8.028%208.028h.024a8.016%208.016%200%200%200%208.004-8.028zm-4.86%204.98a6.002%206.002%200%200%200%202.04-2.184v-1.764h-2.04v3.948zm-4.5.948c.442.057.887.08%201.332.072.4.025.8.025%201.2%200V7.692H9.468v9.035z'/%3e%3c/svg%3e", kv = "data:image/png;base64,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", Av = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eMotherDuck%3c/title%3e%3cg%20transform='scale(0.85)%20translate(0,%202)'%3e%3cpath%20fill='%23ff9538'%20d='M1.71%2015.86s7.45%205.32%207.89%205.59c.44.27%201.08.33%201.64.11.56-.22.98-.71%201.11-1.21s1.85-9.49%201.85-9.49c.02-.12.07-.48-.13-.83-.27-.47-.86-.71-1.38-.57-.42.12-.64.44-.7.55-.09.17-.26.45-.57.7-.24.19-.47.3-.58.34-.96.38-2.02.06-2.61-.72-.38-.48-1.04-.67-1.64-.43-.6.24-.94.84-.89%201.45.11.98-.44%201.94-1.4%202.32-.51.21-1.06.21-1.54.05-.12-.03-.51-.12-.89.09-.48.26-.74.84-.61%201.37.09.39.38.62.48.69z'%20/%3e%3cpath%20fill='%23ff9538'%20d='M14.12%204.21s2.65%208.76%202.83%209.24c.19.48.66.92%201.23%201.09.58.16%201.21.03%201.62-.28.41-.31%207.25-6.39%207.25-6.39.09-.08.35-.34.4-.74.07-.53-.25-1.09-.75-1.29-.4-.16-.78-.04-.89%200-.18.08-.48.2-.88.2-.3.01-.55-.05-.67-.08-.99-.28-1.64-1.18-1.63-2.16-.01-.61-.42-1.17-1.04-1.35-.62-.18-1.26.09-1.59.6-.51.84-1.53%201.27-2.52.99-.53-.15-.96-.48-1.25-.91-.07-.09-.33-.4-.76-.48-.54-.09-1.1.22-1.32.71-.16.37-.08.72-.04.84z'%20/%3e%3c/g%3e%3c/svg%3e", jv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eMySQL%3c/title%3e%3cpath%20d='M16.405%205.501c-.115%200-.193.014-.274.033v.013h.014c.054.104.146.18.214.273.054.107.1.214.154.32l.014-.015c.094-.066.14-.172.14-.333-.04-.047-.046-.094-.08-.14-.04-.067-.126-.1-.18-.153zM5.77%2018.695h-.927a50.854%2050.854%200%2000-.27-4.41h-.008l-1.41%204.41H2.45l-1.4-4.41h-.01a72.892%2072.892%200%2000-.195%204.41H0c.055-1.966.192-3.81.41-5.53h1.15l1.335%204.064h.008l1.347-4.064h1.095c.242%202.015.384%203.86.428%205.53zm4.017-4.08c-.378%202.045-.876%203.533-1.492%204.46-.482.716-1.01%201.073-1.583%201.073-.153%200-.34-.046-.566-.138v-.494c.11.017.24.026.386.026.268%200%20.483-.075.647-.222.197-.18.295-.382.295-.605%200-.155-.077-.47-.23-.944L6.23%2014.615h.91l.727%202.36c.164.536.233.91.205%201.123.4-1.064.678-2.227.835-3.483zm12.325%204.08h-2.63v-5.53h.885v4.85h1.745zm-3.32.135l-1.016-.5c.09-.076.177-.158.255-.25.433-.506.648-1.258.648-2.253%200-1.83-.718-2.746-2.155-2.746-.704%200-1.254.232-1.65.697-.43.508-.646%201.256-.646%202.245%200%20.972.19%201.686.574%202.14.35.41.877.615%201.583.615.264%200%20.506-.033.725-.098l1.325.772.36-.622zM15.5%2017.588c-.225-.36-.337-.94-.337-1.736%200-1.393.424-2.09%201.27-2.09.443%200%20.77.167.977.5.224.362.336.936.336%201.723%200%201.404-.424%202.108-1.27%202.108-.445%200-.77-.167-.978-.5zm-1.658-.425c0%20.47-.172.856-.516%201.156-.344.3-.803.45-1.384.45-.543%200-1.064-.172-1.573-.515l.237-.476c.438.22.833.328%201.19.328.332%200%20.593-.073.783-.22a.754.754%200%2000.3-.615c0-.33-.23-.61-.648-.845-.388-.213-1.163-.657-1.163-.657-.422-.307-.632-.636-.632-1.177%200-.45.157-.81.47-1.085.315-.278.72-.415%201.22-.415.512%200%20.98.136%201.4.41l-.213.476a2.726%202.726%200%2000-1.064-.23c-.283%200-.502.068-.654.206a.685.685%200%2000-.248.524c0%20.328.234.61.666.85.393.215%201.187.67%201.187.67.433.305.648.63.648%201.168zm9.382-5.852c-.535-.014-.95.04-1.297.188-.1.04-.26.04-.274.167.055.053.063.14.11.214.08.134.218.313.346.407.14.11.28.216.427.31.26.16.555.255.81.416.145.094.293.213.44.313.073.05.12.14.214.172v-.02c-.046-.06-.06-.147-.105-.214-.067-.067-.134-.127-.2-.193a3.223%203.223%200%2000-.695-.675c-.214-.146-.682-.35-.77-.595l-.013-.014c.146-.013.32-.066.46-.106.227-.06.435-.047.67-.106.106-.027.213-.06.32-.094v-.06c-.12-.12-.21-.283-.334-.395a8.867%208.867%200%2000-1.104-.823c-.21-.134-.476-.22-.697-.334-.08-.04-.214-.06-.26-.127-.12-.146-.19-.34-.275-.514a17.69%2017.69%200%2001-.547-1.163c-.12-.262-.193-.523-.34-.763-.69-1.137-1.437-1.826-2.586-2.5-.247-.14-.543-.2-.856-.274-.167-.008-.334-.02-.5-.027-.11-.047-.216-.174-.31-.235-.38-.24-1.364-.76-1.644-.072-.18.434.267.862.422%201.082.115.153.26.328.34.5.047.116.06.235.107.356.106.294.207.622.347.897.073.14.153.287.247.413.054.073.146.107.167.227-.094.136-.1.334-.154.5-.24.757-.146%201.693.194%202.25.107.166.362.534.703.393.3-.12.234-.5.32-.835.02-.08.007-.133.048-.187v.015c.094.188.188.367.274.555.206.328.566.668.867.895.16.12.287.328.487.402v-.02h-.015c-.043-.058-.1-.086-.154-.133a3.445%203.445%200%2001-.35-.4%208.76%208.76%200%2001-.747-1.218c-.11-.21-.202-.436-.29-.643-.04-.08-.04-.2-.107-.24-.1.146-.247.273-.32.453-.127.288-.14.642-.188%201.01-.027.007-.014%200-.027.014-.214-.052-.287-.274-.367-.46-.2-.475-.233-1.238-.06-1.785.047-.14.247-.582.167-.716-.042-.127-.174-.2-.247-.303a2.478%202.478%200%2001-.24-.427c-.16-.374-.24-.788-.414-1.162-.08-.173-.22-.354-.334-.513-.127-.18-.267-.307-.368-.52-.033-.073-.08-.194-.027-.274.014-.054.042-.075.094-.09.088-.072.335.022.422.062.247.1.455.194.662.334.094.066.195.193.315.226h.14c.214.047.455.014.655.073.355.114.675.28.962.46a5.953%205.953%200%20012.085%202.286c.08.154.115.295.188.455.14.33.313.663.455.982.14.315.275.636.476.897.1.14.502.213.682.286.133.06.34.115.46.188.23.14.454.3.67.454.11.076.443.243.463.378z'/%3e%3c/svg%3e", Mv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3ePostgreSQL%3c/title%3e%3cpath%20d='M23.5594%2014.7228a.5269.5269%200%200%200-.0563-.1191c-.139-.2632-.4768-.3418-1.0074-.2321-1.6533.3411-2.2935.1312-2.5256-.0191%201.342-2.0482%202.445-4.522%203.0411-6.8297.2714-1.0507.7982-3.5237.1222-4.7316a1.5641%201.5641%200%200%200-.1509-.235C21.6931.9086%2019.8007.0248%2017.5099.0005c-1.4947-.0158-2.7705.3461-3.1161.4794a9.449%209.449%200%200%200-.5159-.0816%208.044%208.044%200%200%200-1.3114-.1278c-1.1822-.0184-2.2038.2642-3.0498.8406-.8573-.3211-4.7888-1.645-7.2219.0788C.9359%202.1526.3086%203.8733.4302%206.3043c.0409.818.5069%203.334%201.2423%205.7436.4598%201.5065.9387%202.7019%201.4334%203.582.553.9942%201.1259%201.5933%201.7143%201.7895.4474.1491%201.1327.1441%201.8581-.7279.8012-.9635%201.5903-1.8258%201.9446-2.2069.4351.2355.9064.3625%201.39.3772a.0569.0569%200%200%200%20.0004.0041%2011.0312%2011.0312%200%200%200-.2472.3054c-.3389.4302-.4094.5197-1.5002.7443-.3102.064-1.1344.2339-1.1464.8115-.0025.1224.0329.2309.0919.3268.2269.4231.9216.6097%201.015.6331%201.3345.3335%202.5044.092%203.3714-.6787-.017%202.231.0775%204.4174.3454%205.0874.2212.5529.7618%201.9045%202.4692%201.9043.2505%200%20.5263-.0291.8296-.0941%201.7819-.3821%202.5557-1.1696%202.855-2.9059.1503-.8707.4016-2.8753.5388-4.1012.0169-.0703.0357-.1207.057-.1362.0007-.0005.0697-.0471.4272.0307a.3673.3673%200%200%200%20.0443.0068l.2539.0223.0149.001c.8468.0384%201.9114-.1426%202.5312-.4308.6438-.2988%201.8057-1.0323%201.5951-1.6698zM2.371%2011.8765c-.7435-2.4358-1.1779-4.8851-1.2123-5.5719-.1086-2.1714.4171-3.6829%201.5623-4.4927%201.8367-1.2986%204.8398-.5408%206.108-.13-.0032.0032-.0066.0061-.0098.0094-2.0238%202.044-1.9758%205.536-1.9708%205.7495-.0002.0823.0066.1989.0162.3593.0348.5873.0996%201.6804-.0735%202.9184-.1609%201.1504.1937%202.2764.9728%203.0892.0806.0841.1648.1631.2518.2374-.3468.3714-1.1004%201.1926-1.9025%202.1576-.5677.6825-.9597.5517-1.0886.5087-.3919-.1307-.813-.5871-1.2381-1.3223-.4796-.839-.9635-2.0317-1.4155-3.5126zm6.0072%205.0871c-.1711-.0428-.3271-.1132-.4322-.1772.0889-.0394.2374-.0902.4833-.1409%201.2833-.2641%201.4815-.4506%201.9143-1.0002.0992-.126.2116-.2687.3673-.4426a.3549.3549%200%200%200%20.0737-.1298c.1708-.1513.2724-.1099.4369-.0417.156.0646.3078.26.3695.4752.0291.1016.0619.2945-.0452.4444-.9043%201.2658-2.2216%201.2494-3.1676%201.0128zm2.094-3.988-.0525.141c-.133.3566-.2567.6881-.3334%201.003-.6674-.0021-1.3168-.2872-1.8105-.8024-.6279-.6551-.9131-1.5664-.7825-2.5004.1828-1.3079.1153-2.4468.079-3.0586-.005-.0857-.0095-.1607-.0122-.2199.2957-.2621%201.6659-.9962%202.6429-.7724.4459.1022.7176.4057.8305.928.5846%202.7038.0774%203.8307-.3302%204.7363-.084.1866-.1633.3629-.2311.5454zm7.3637%204.5725c-.0169.1768-.0358.376-.0618.5959l-.146.4383a.3547.3547%200%200%200-.0182.1077c-.0059.4747-.054.6489-.115.8693-.0634.2292-.1353.4891-.1794%201.0575-.11%201.4143-.8782%202.2267-2.4172%202.5565-1.5155.3251-1.7843-.4968-2.0212-1.2217a6.5824%206.5824%200%200%200-.0769-.2266c-.2154-.5858-.1911-1.4119-.1574-2.5551.0165-.5612-.0249-1.9013-.3302-2.6462.0044-.2932.0106-.5909.019-.8918a.3529.3529%200%200%200-.0153-.1126%201.4927%201.4927%200%200%200-.0439-.208c-.1226-.4283-.4213-.7866-.7797-.9351-.1424-.059-.4038-.1672-.7178-.0869.067-.276.1831-.5875.309-.9249l.0529-.142c.0595-.16.134-.3257.213-.5012.4265-.9476%201.0106-2.2453.3766-5.1772-.2374-1.0981-1.0304-1.6343-2.2324-1.5098-.7207.0746-1.3799.3654-1.7088.5321a5.6716%205.6716%200%200%200-.1958.1041c.0918-1.1064.4386-3.1741%201.7357-4.4823a4.0306%204.0306%200%200%201%20.3033-.276.3532.3532%200%200%200%20.1447-.0644c.7524-.5706%201.6945-.8506%202.802-.8325.4091.0067.8017.0339%201.1742.081%201.939.3544%203.2439%201.4468%204.0359%202.3827.8143.9623%201.2552%201.9315%201.4312%202.4543-1.3232-.1346-2.2234.1268-2.6797.779-.9926%201.4189.543%204.1729%201.2811%205.4964.1353.2426.2522.4522.2889.5413.2403.5825.5515.9713.7787%201.2552.0696.087.1372.1714.1885.245-.4008.1155-1.1208.3825-1.0552%201.717-.0123.1563-.0423.4469-.0834.8148-.0461.2077-.0702.4603-.0994.7662zm.8905-1.6211c-.0405-.8316.2691-.9185.5967-1.0105a2.8566%202.8566%200%200%200%20.135-.0406%201.202%201.202%200%200%200%20.1342.103c.5703.3765%201.5823.4213%203.0068.1344-.2016.1769-.5189.3994-.9533.6011-.4098.1903-1.0957.333-1.7473.3636-.7197.0336-1.0859-.0807-1.1721-.151zm.5695-9.2712c-.0059.3508-.0542.6692-.1054%201.0017-.055.3576-.112.7274-.1264%201.1762-.0142.4368.0404.8909.0932%201.3301.1066.887.216%201.8003-.2075%202.7014a3.5272%203.5272%200%200%201-.1876-.3856c-.0527-.1276-.1669-.3326-.3251-.6162-.6156-1.1041-2.0574-3.6896-1.3193-4.7446.3795-.5427%201.3408-.5661%202.1781-.463zm.2284%207.0137a12.3762%2012.3762%200%200%200-.0853-.1074l-.0355-.0444c.7262-1.1995.5842-2.3862.4578-3.4385-.0519-.4318-.1009-.8396-.0885-1.2226.0129-.4061.0666-.7543.1185-1.0911.0639-.415.1288-.8443.1109-1.3505.0134-.0531.0188-.1158.0118-.1902-.0457-.4855-.5999-1.938-1.7294-3.253-.6076-.7073-1.4896-1.4972-2.6889-2.0395.5251-.1066%201.2328-.2035%202.0244-.1859%202.0515.0456%203.6746.8135%204.8242%202.2824a.908.908%200%200%201%20.0667.1002c.7231%201.3556-.2762%206.2751-2.9867%2010.5405zm-8.8166-6.1162c-.025.1794-.3089.4225-.6211.4225a.5821.5821%200%200%201-.0809-.0056c-.1873-.026-.3765-.144-.5059-.3156-.0458-.0605-.1203-.178-.1055-.2844.0055-.0401.0261-.0985.0925-.1488.1182-.0894.3518-.1226.6096-.0867.3163.0441.6426.1938.6113.4186zm7.9305-.4114c.0111.0792-.049.201-.1531.3102-.0683.0717-.212.1961-.4079.2232a.5456.5456%200%200%201-.075.0052c-.2935%200-.5414-.2344-.5607-.3717-.024-.1765.2641-.3106.5611-.352.297-.0414.6111.0088.6356.1851z'/%3e%3c/svg%3e", Nv = {
25949
25947
  sqlite: "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eSQLite%3c/title%3e%3cpath%20d='M21.678.521c-1.032-.92-2.28-.55-3.513.544a8.71%208.71%200%200%200-.547.535c-2.109%202.237-4.066%206.38-4.674%209.544.237.48.422%201.093.544%201.561a13.044%2013.044%200%200%201%20.164.703s-.019-.071-.096-.296l-.05-.146a1.689%201.689%200%200%200-.033-.08c-.138-.32-.518-.995-.686-1.289-.143.423-.27.818-.376%201.176.484.884.778%202.4.778%202.4s-.025-.099-.147-.442c-.107-.303-.644-1.244-.772-1.464-.217.804-.304%201.346-.226%201.478.152.256.296.698.422%201.186.286%201.1.485%202.44.485%202.44l.017.224a22.41%2022.41%200%200%200%20.056%202.748c.095%201.146.273%202.13.5%202.657l.155-.084c-.334-1.038-.47-2.399-.41-3.967.09-2.398.642-5.29%201.661-8.304%201.723-4.55%204.113-8.201%206.3-9.945-1.993%201.8-4.692%207.63-5.5%209.788-.904%202.416-1.545%204.684-1.931%206.857.666-2.037%202.821-2.912%202.821-2.912s1.057-1.304%202.292-3.166c-.74.169-1.955.458-2.362.629-.6.251-.762.337-.762.337s1.945-1.184%203.613-1.72C21.695%207.9%2024.195%202.767%2021.678.521m-18.573.543A1.842%201.842%200%200%200%201.27%202.9v16.608a1.84%201.84%200%200%200%201.835%201.834h9.418a22.953%2022.953%200%200%201-.052-2.707c-.006-.062-.011-.141-.016-.2a27.01%2027.01%200%200%200-.473-2.378c-.121-.47-.275-.898-.369-1.057-.116-.197-.098-.31-.097-.432%200-.12.015-.245.037-.386a9.98%209.98%200%200%201%20.234-1.045l.217-.028c-.017-.035-.014-.065-.031-.097l-.041-.381a32.8%2032.8%200%200%201%20.382-1.194l.2-.019c-.008-.016-.01-.038-.018-.053l-.043-.316c.63-3.28%202.587-7.443%204.8-9.791.066-.069.133-.128.198-.194Z'/%3e%3c/svg%3e",
25950
- duckdb: Ov,
25951
- motherduck: jv,
25952
- postgres: Nv,
25953
- postgresql: Nv,
25954
- mysql: Mv,
25948
+ duckdb: Dv,
25949
+ motherduck: Av,
25950
+ postgres: Mv,
25951
+ postgresql: Mv,
25952
+ mysql: jv,
25955
25953
  snowflake: "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eSnowflake%3c/title%3e%3cpath%20d='M24%203.459c0%20.646-.418%201.18-1.141%201.18-.723%200-1.142-.534-1.142-1.18%200-.647.419-1.18%201.142-1.18.723%200%201.141.533%201.141%201.18zm-.228%200c0-.533-.38-.951-.913-.951s-.913.38-.913.95c0%20.533.38.952.913.952.57%200%20.913-.419.913-.951zm-1.37-.533h.495c.266%200%20.456.152.456.38%200%20.153-.076.229-.19.305l.19.266v.038h-.266l-.19-.266h-.229v.266h-.266zm.495.228h-.229v.267h.229c.114%200%20.152-.038.152-.114.038-.077-.038-.153-.152-.153zM7.602%2012.4c.038-.151.076-.304.076-.456%200-.114-.038-.228-.038-.342-.114-.343-.304-.647-.646-.838l-4.87-2.777c-.685-.38-1.56-.152-1.94.533-.381.685-.153%201.56.532%201.94l2.701%201.56-2.701%201.56c-.685.38-.913%201.256-.533%201.94.38.685%201.256.914%201.94.533l4.832-2.777c.343-.267.571-.533.647-.876zm1.332%202.626c-.266-.038-.57.038-.837.19l-4.832%202.777c-.685.38-.913%201.256-.532%201.94.38.686%201.255.914%201.94.533l2.701-1.56v3.12c0%20.8.647%201.408%201.446%201.408.799%200%201.407-.647%201.407-1.408v-5.592c0-.761-.57-1.37-1.293-1.408zm4.946-6.088c.266.038.57-.038.837-.19l4.832-2.777c.685-.38.913-1.256.532-1.94-.38-.686-1.255-.914-1.94-.533l-2.701%201.56V1.975c0-.799-.647-1.408-1.446-1.408-.799%200-1.446.609-1.446%201.408V7.53c0%20.76.609%201.37%201.332%201.407zM3.265%205.97l4.832%202.777c.266.152.533.19.837.19.723-.038%201.331-.684%201.331-1.407V1.975c0-.799-.646-1.408-1.407-1.408-.799%200-1.446.647-1.446%201.408v3.12l-2.701-1.56c-.685-.38-1.56-.152-1.94.533-.419.646-.19%201.521.494%201.902zm9.093%206.011a.412.412%200%2000-.114-.266l-.57-.571a.346.346%200%2000-.267-.114.412.412%200%2000-.266.114l-.571.57a.411.411%200%2000-.114.267c0%20.076.038.19.114.267l.57.57a.345.345%200%2000.267.114c.076%200%20.19-.038.266-.114l.571-.57a.412.412%200%2000.114-.267zm1.598.533L11.94%2014.53c-.039.038-.153.114-.229.114h-.608a.411.411%200%2001-.267-.114L8.82%2012.514a.408.408%200%2001-.076-.229v-.608c0-.076.038-.19.114-.267l2.016-2.016a.41.41%200%2001.267-.114h.608a.41.41%200%2001.267.114l2.016%202.016a.347.347%200%2001.114.267v.608c-.076.077-.114.19-.19.229zm5.593%205.44l-4.832-2.777c-.266-.152-.57-.19-.837-.152-.723.038-1.332.684-1.332%201.408v5.554c0%20.8.647%201.408%201.408%201.408.799%200%201.446-.647%201.446-1.408v-3.12l2.7%201.56c.686.38%201.561.152%201.941-.533.419-.646.19-1.521-.494-1.94zm2.549-7.533l-2.701%201.56%202.7%201.56c.686.38.914%201.256.533%201.94-.38.685-1.255.913-1.94.533l-4.832-2.778a1.644%201.644%200%2001-.647-.798c-.037-.153-.076-.305-.076-.457%200-.114.039-.228.039-.342.114-.343.342-.647.646-.837l4.832-2.778c.685-.38%201.56-.152%201.94.533.457.609.19%201.484-.494%201.864'/%3e%3c/svg%3e",
25956
- databricks: Ev,
25957
- clickhouse: Tv,
25954
+ databricks: Tv,
25955
+ clickhouse: wv,
25958
25956
  timeplus: "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!--%20Generated%20by%20Pixelmator%20Pro%203.6.17%20--%3e%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='Option2SymbolB'%3e%3cg%20id='Layer1-2'%3e%3cg%20id='Group'%20opacity='0.4'%3e%3cpath%20id='Path'%20fill='%23d53c97'%20stroke='none'%20d='M%2017.016802%2012.188573%20C%2017.016802%209.607646%2015.86018%207.293022%2014.039526%205.731081%20C%2013.942595%205.70038%2013.844628%205.671406%2013.745972%205.645189%20C%2013.131133%205.809095%2012.54265%206.059378%2011.998103%206.388559%20C%2013.964327%207.575191%2015.281006%209.730104%2015.281006%2012.188573%20C%2015.279476%2014.563734%2014.033739%2016.764488%2011.998103%2017.988243%20C%2012.542634%2018.317537%2013.131119%2018.567936%2013.745972%2018.731958%20C%2013.844628%2018.705742%2013.942595%2018.67642%2014.039526%2018.645721%20C%2015.86018%2017.084126%2017.016802%2014.769501%2017.016802%2012.188573%20Z'/%3e%3cpath%20id='path1'%20fill='%23d53c97'%20stroke='none'%20d='M%2013.897406%205.609659%20L%2013.894991%205.60759%20C%2013.844973%205.619663%2013.7953%205.631737%2013.745972%205.645189%20C%2013.79599%205.631737%2013.847043%205.622078%2013.897406%205.609659%20Z'/%3e%3cpath%20id='path2'%20fill='%23d53c97'%20stroke='none'%20d='M%201.735796%2012.188573%20C%201.735796%209.164728%203.728925%206.59622%206.470945%205.729357%20C%207.554634%204.797861%208.856011%204.155121%2010.254373%203.860756%20C%209.680216%203.740549%209.095179%203.679977%208.508574%203.68%20C%203.816888%203.68%20-0%207.496887%20-0%2012.188573%20C%20-0%2016.880259%203.816888%2020.697147%208.508574%2020.697147%20C%209.0952%2020.697229%209.680255%2020.636539%2010.254373%2020.516048%20C%208.855971%2020.221794%207.554568%2019.579041%206.470945%2018.647446%20C%203.728925%2017.780582%201.735796%2015.213453%201.735796%2012.188573%20Z'/%3e%3cpath%20id='path3'%20fill='%23d53c97'%20stroke='none'%20d='M%2013.745972%2018.731958%20C%2013.7953%2018.745068%2013.844973%2018.757484%2013.894991%2018.769558%20C%2013.894991%2018.769558%2013.896715%2018.769558%2013.897406%2018.767488%20C%2013.847043%2018.754379%2013.79599%2018.745411%2013.745972%2018.731958%20Z'/%3e%3c/g%3e%3cpath%20id='path4'%20fill='%23ff3b65'%20stroke='none'%20d='M%2020.508402%2012.188573%20C%2020.508402%209.606611%2019.351088%207.290262%2017.5294%205.729357%20C%2016.301817%205.342468%2014.989366%205.313629%2013.745972%205.646223%20C%2016.636665%206.418224%2018.772606%209.058484%2018.772606%2012.189609%20C%2018.772606%2015.320732%2016.636665%2017.960991%2013.745972%2018.731958%20C%2014.98947%2019.064316%2016.301983%2019.034998%2017.5294%2018.647446%20C%2019.419907%2017.034296%2020.508638%2014.673781%2020.508402%2012.188573%20Z'/%3e%3cpath%20id='path5'%20fill='%23ff3b65'%20stroke='none'%20d='M%209.962543%2018.647446%20C%207.220525%2017.780582%205.227395%2015.213453%205.227395%2012.188573%20C%205.227395%209.163693%207.220525%206.59622%209.962543%205.729357%20C%2011.046233%204.797861%2012.34761%204.155121%2013.745972%203.860756%20C%2013.171818%203.74053%2012.586779%203.679956%2012.000173%203.68%20C%207.308832%203.68%203.491599%207.496887%203.491599%2012.188573%20C%203.491599%2016.880259%207.308487%2020.697147%2012.000173%2020.697147%20C%2012.586799%2020.697247%2013.171857%2020.636557%2013.745972%2020.516048%20C%2012.34757%2020.221794%2011.046167%2019.579041%209.962543%2018.647446%20Z'/%3e%3cpath%20id='path6'%20fill='%23383838'%20stroke='none'%20d='M%2015.491772%203.68%20C%2010.800431%203.68%206.983198%207.496887%206.983198%2012.188573%20C%206.983198%2016.880259%2010.800086%2020.697147%2015.491772%2020.697147%20C%2020.183456%2020.697147%2024%2016.880259%2024%2012.188573%20C%2024%207.496887%2020.183456%203.68%2015.491772%203.68%20Z%20M%2022.264549%2012.188573%20C%2022.264549%2015.923018%2019.226215%2018.961351%2015.491772%2018.961351%20C%2011.757326%2018.961351%208.718994%2015.923018%208.718994%2012.188573%20C%208.718994%208.454128%2011.757326%205.415796%2015.491772%205.415796%20C%2019.226215%205.415796%2022.264549%208.454128%2022.264549%2012.188573%20Z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",
25959
- bigquery: kv,
25957
+ bigquery: Ov,
25960
25958
  trino: "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eTrino%3c/title%3e%3cpath%20d='M14.124%2016.8529a.1615.1615%200%201%201%20.1576.1614.1577.1577%200%200%201-.1576-.1614zm-5.607-.1576a.1614.1614%200%201%200%200%20.3228.1614.1614%200%200%200%200-.3228zm10.1341-.6648v1.9869c-.031.5788-.524%201.0237-1.1029.9954h-.3843a5.0596%205.0596%200%200%201-1.1298%201.7178.3192.3192%200%200%200%200%20.465l.2382.2191a.3036.3036%200%200%201%20.0385.4304c-1.126%201.3835-2.9669%202.1521-5.0498%202.1521a6.575%206.575%200%200%201-4.8192-1.8985c-.0029-.0032-.0059-.0063-.0087-.0096a.6302.6302%200%200%201%20.0548-.8896c.137-.1265.1371-.3462%200-.4727a4.944%204.944%200%200%201-1.126-1.714h-.3497c-.5797.0284-1.0737-.416-1.1068-.9954v-1.9869c.0351-.5779.5286-1.02%201.1068-.9915h.2728a5.7648%205.7648%200%200%201%202.0791-3.0936c-.4227-1.0991-1.1529-3.2551-1.226-5.0075C6.0229%204.4705%206.2189.078%207.8253.001c1.6064-.0768%201.3719%204.0275%201.0991%206.6946a32.732%2032.732%200%200%200-.123%204.4503%206.994%206.994%200%200%201%202.4826-.4304%207.2414%207.2414%200%200%201%201.7371.2075c.2614-1.2682.8762-3.574%202.0292-5.1958%201.6717-2.352%203.4357-4.7808%204.6116-4.1006%201.176.6802-.3074%203.1398-1.3297%204.4272-1.0222%201.2874-2.7862%203.2089-3.3742%204.2274-.2114.3843-.4304.8032-.5956%201.1529a5.7375%205.7375%200%200%201%202.9169%203.6125h.073v-2.3058a.3075.3075%200%200%200-.1806-.2844.9148.9148%200%200%201-.5573-.8148%201.0184%201.0184%200%200%201%20.9045-.9044c.5593-.0598%201.061.3452%201.1208.9044a.9187.9187%200%200%201-.5534.8148.3074.3074%200%200%200-.1691.2844v2.1522a.3113.3113%200%200%200%20.1691.2805.9724.9724%200%200%201%20.5648.857zm-1.0222-3.9737a.4345.4345%200%200%200%20.4612-.4151.4151.4151%200%201%200-.4612.4151zm-.4227%203.4779c.0978.4794.148.9672.1498%201.4565v.3651h.4113a.3228.3228%200%200%200%20.3228-.319v-1.0069c-.0111-.2967-.2733-.5256-.5688-.4957h-.3151zm-3.7278-4.481.611.2383a36.6046%2036.6046%200%200%201%202.3828-3.8661c1.2874-1.7255%202.3365-3.5817%201.8715-3.8699-.465-.2883-1.6179%201.2297-2.7708%203.109a34.8978%2034.8978%200%200%200-2.0945%204.3887zm-4.0544.6726.0154%201.3335c-.0039.2007.1881.3587.3843.3152a6.4317%206.4317%200%200%201%201.4565-.1653%205.995%205.995%200%200%201%201.4527.1729c.1956.0398.3853-.1153.3843-.3151v-1.3412a.319.319%200%200%200-.2421-.3113%206.664%206.664%200%200%200-1.6026-.1845%206.7093%206.7093%200%200%200-1.6025.1845.3188.3188%200%200%200-.246.3113zm1.7063%206.8637v.3843a.6878.6878%200%200%201-.4996.269c-.3074%200-.538-.4189-.538-.4189a.073.073%200%200%200-.1-.0307l-.0024.0013a.0693.0693%200%200%200-.0245.0947c.0115.0231.2806.4957.6649.4957a.7144.7144%200%200%200%20.3843-.1268.3267.3267%200%200%201%20.3612%200%20.8332.8332%200%200%200%20.4727.1345.957.957%200%200%200%20.6572-.4803.0692.0692%200%200%200-.0269-.0961.0692.0692%200%200%200-.0999.0269c0%20.0231-.2191.3843-.5419.4074a.8036.8036%200%200%201-.5765-.269v-.3843a.3154.3154%200%200%201%20.1268-.2537c.196-.1499.415-.3958.415-.4919a.538.538%200%200%200-.5764-.4189c-.3766%200-.6533.2498-.6533.4573%200%20.1345.2536.3382.4227.4612a.3226.3226%200%200%201%20.1346.2383zM7.783%2011.6455l.5765-.3074c-.0192-1.126-.0346-3.1436%200-4.5425.0538-2.0368.1537-4.5732-.5226-4.5463S6.6877%204.2285%206.949%207.007a33.0562%2033.0562%200%200%200%20.834%204.6385zm-3.305%205.3919a.319.319%200%200%200%20.319.319h.3997a3.046%203.046%200%200%201%200-.3651%207.546%207.546%200%200%201%20.1461-1.4565c-.0493.0002-.34.0005-.3866-.0021a.4881.4881%200%200%200-.4781.4979v1.0068zm.9184%201.4718a5.3254%205.3254%200%200%201-.123-.5573.3228.3228%200%200%200-.319-.2728h-.4957c.0007.0163-.0015.34.0009.355a.5188.5188%200%200%200%20.5526.4827l.3842-.0076zm10.1265%202.917-.0884-.0807a.3229.3229%200%200%200-.3843-.0269%206.9823%206.9823%200%200%201-3.8046%201.0068%206.995%206.995%200%200%201-3.7932-1.0068.3228.3228%200%200%200-.3843.0269l-.0884.0807a.3154.3154%200%200%200%200%20.4573%206.0305%206.0305%200%200%200%204.2927%201.5988%206.0453%206.0453%200%200%200%204.2889-1.5988.315.315%200%200%200-.0384-.4573zm1.4488-4.4158c0-2.4557-1.1529-4.3273-3.0245-5.2266-.2081-.1022-.4673.0594-.465.2921v1.3297a.3269.3269%200%200%200%20.2037.296c1.7332.7109%202.9284%202.1866%202.9284%203.8776%200%202.2712-2.1559%203.8085-5.3419%203.8085-3.1859%200-5.3419-1.5411-5.3419-3.8085%200-1.691%201.1952-3.1667%202.9284-3.8776a.319.319%200%200%200%20.2037-.296v-1.322c.0048-.2315-.2536-.3963-.4612-.2921-1.887.8839-3.0399%202.767-3.0399%205.2073%200%202.9899%202.2866%204.996%205.7108%204.996%203.4282.0001%205.6994-2.0098%205.6994-4.9844zm-8.6084-.538h-.0038a.5842.5842%200%201%200%20.0038%200zm5.1614.5919c.0063.3226.2615.5789.584.5725a.5842.5842%200%201%200-.584-.5725zm4.5692.6225h-.4996a.3227.3227%200%200%200-.3151.2728c-.0346.173-.0768.3766-.1268.5573.0163.0007.3861-.0014.4012.0009a.5188.5188%200%200%200%20.5366-.5004l.0037-.3306z'/%3e%3c/svg%3e",
25961
- iceberg: Av,
25962
- datafusion: Dv,
25959
+ iceberg: kv,
25960
+ datafusion: Ev,
25963
25961
  pyspark: "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eApache%20Spark%3c/title%3e%3cpath%20d='M10.812%200c-.425.013-.845.215-1.196.605a3.593%203.593%200%2000-.493.722c-.355.667-.425%201.415-.556%202.143a551.9%20551.9%200%2000-.726%204.087c-.027.16-.096.227-.244.273C5.83%208.386%204.06%208.94%202.3%209.514c-.387.125-.773.289-1.114.506-1.042.665-1.196%201.753-.415%202.71.346.422.79.715%201.284.936%201.1.49%202.202.976%203.3%201.47.019.01.036.013.053.019h-.004l1.306.535c0%20.023.002.045%200%20.073-.2%202.03-.39%204.063-.58%206.095-.04.419-.012.831.134%201.23.317.87%201.065%201.148%201.881.701.372-.204.666-.497.937-.818%201.372-1.623%202.746-3.244%204.113-4.872.111-.133.205-.15.363-.098.349.117.697.231%201.045.347h.001c.02.012.045.02.073.03l.142.042c1.248.416%202.68.775%203.929%201.19.4.132.622.164%201.045.098.311-.048.592-.062.828-.236.602-.33.995-.957.988-1.682-.005-.427-.154-.813-.35-1.186-.82-1.556-1.637-3.113-2.461-4.666-.078-.148-.076-.243.037-.375%201.381-1.615%202.756-3.236%204.133-4.855.272-.32.513-.658.653-1.058.308-.878-.09-1.57-1-1.741a2.783%202.783%200%2000-1.235.069c-1.974.521-3.947%201.041-5.918%201.57-.175.047-.26.015-.355-.144a353.08%20353.08%200%2000-2.421-4.018%204.61%204.61%200%2000-.652-.849c-.371-.37-.802-.549-1.227-.536zm.172%203.703a.592.592%200%2001.189.211c.87%201.446%201.742%202.89%202.609%204.338.07.118.135.16.277.121%201.525-.41%203.052-.813%204.579-1.217.367-.098.735-.193%201.103-.289a.399.399%200%2001-.1.2c-1.259%201.48-2.516%202.962-3.779%204.438-.11.13-.12.22-.04.37.937%201.803%201.768%203.309%202.498%204.76l-3.696-1.019c-.538-.18-1.077-.358-1.615-.539-.163-.055-.25-.03-.36.1-1.248%201.488-2.504%202.97-3.759%204.454a.398.398%200%2001-.18.132c.035-.378.068-.757.104-1.136.149-1.572.297-3.144.451-4.716-.03-.318.117-.405-.322-.545-1.493-.593-3.346-1.321-4.816-1.905a.595.595%200%2001.24-.134c1.797-.57%203.595-1.14%205.394-1.705.127-.04.199-.092.211-.233.013-.148.05-.294.076-.441.241-1.363.483-2.726.726-4.088.068-.386.14-.771.21-1.157z'/%3e%3c/svg%3e",
25964
25962
  redshift: "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eAmazon%20Redshift%3c/title%3e%3cpath%20d='M16.639%209.932a.822.822%200%200%201-.822-.82.823.823%200%200%201%201.645%200c0%20.452-.37.82-.823.82m-2.086%204.994a.823.823%200%200%201-.822-.822.822.822%200%200%201%201.645%200%20.822.822%200%200%201-.823.822m-5.004-.833a.822.822%200%201%201%20.002-1.644.822.822%200%200%201-.002%201.644m-2.083%204.578a.823.823%200%200%201-.823-.82.823.823%200%200%201%201.645%200c0%20.452-.37.82-.822.82m9.173-11.236a1.68%201.68%200%200%200-1.68%201.676c0%20.566.285%201.066.718%201.37l-.782%201.982a1.674%201.674%200%200%200-1.923%201.104l-1.753-.398a1.675%201.675%200%200%200-3.348.103c0%20.432.169.823.438%201.12l-.764%201.79c-.028-.001-.053-.008-.08-.008a1.68%201.68%200%200%200-1.68%201.676%201.68%201.68%200%200%200%203.36%200c0-.593-.312-1.112-.778-1.41l.674-1.579c.161.052.33.088.508.088.661%200%201.228-.386%201.502-.94l1.856.42a1.68%201.68%200%200%200%203.327-.325c0-.5-.224-.943-.574-1.25l.822-2.083c.053.005.104.016.157.016a1.68%201.68%200%200%200%201.68-1.676%201.68%201.68%200%200%200-1.68-1.676M12%2023.145c-4.17%200-7.286-1.252-7.286-2.37V4.79C6.14%205.938%209.131%206.547%2012%206.547c2.869%200%205.86-.609%207.286-1.756v15.983c0%201.12-3.116%202.37-7.286%202.37M12%20.856c4.293%200%207.286%201.274%207.286%202.419%200%201.143-2.993%202.418-7.286%202.418-4.293%200-7.286-1.275-7.286-2.418C4.714%202.129%207.707.855%2012%20.855m8.143%202.419C20.143%201.147%2015.947%200%2012%200%208.052%200%203.857%201.147%203.857%203.274l.002.01h-.002v17.49C3.857%2022.87%208.052%2024%2012%2024c3.947%200%208.143-1.13%208.143-3.226V3.284h-.002l.002-.01'/%3e%3c/svg%3e",
25965
25963
  supabase: "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eSupabase%3c/title%3e%3cpath%20d='M11.9%201.036c-.015-.986-1.26-1.41-1.874-.637L.764%2012.05C-.33%2013.427.65%2015.455%202.409%2015.455h9.579l.113%207.51c.014.985%201.259%201.408%201.873.636l9.262-11.653c1.093-1.375.113-3.403-1.645-3.403h-9.642z'/%3e%3c/svg%3e"
25966
- }, Fv = (e) => {
25967
- let t = (0, Tr.c)(11), { name: n, className: r } = e, i = Pv[n.toLowerCase()];
25964
+ }, Pv = (e) => {
25965
+ let t = (0, Tr.c)(11), { name: n, className: r } = e, i = Nv[n.toLowerCase()];
25968
25966
  if (!i) {
25969
25967
  let e;
25970
25968
  t[0] === r ? e = t[1] : (e = o("mt-0.5", r), t[0] = r, t[1] = e);
@@ -25982,15 +25980,15 @@ var Tv = "data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20x
25982
25980
  };
25983
25981
  //#endregion
25984
25982
  //#region src/core/cells/add-missing-import.ts
25985
- function Iv({ moduleName: e, variableName: t, onAddImport: n, appStore: r = j }) {
25983
+ function Fv({ moduleName: e, variableName: t, onAddImport: n, appStore: r = j }) {
25986
25984
  if (t in r.get(Cd)) return !1;
25987
25985
  let { cellData: i, cellIds: a } = r.get($), o = RegExp(`import[ \t]+${e}[ \t]+as[ \t]+${t}`, "g");
25988
25986
  for (let e of a.inOrderIds) if (o.test(i[e].code)) return !1;
25989
25987
  return n(`import ${e} as ${t}`), !0;
25990
25988
  }
25991
- function Lv({ autoInstantiate: e, createNewCell: t, fromCellId: n, before: r }) {
25989
+ function Iv({ autoInstantiate: e, createNewCell: t, fromCellId: n, before: r }) {
25992
25990
  let i = nl(), a = null;
25993
- return Iv({
25991
+ return Fv({
25994
25992
  moduleName: "marimo",
25995
25993
  variableName: "mo",
25996
25994
  onAddImport: (o) => {
@@ -26009,9 +26007,9 @@ function Lv({ autoInstantiate: e, createNewCell: t, fromCellId: n, before: r })
26009
26007
  }
26010
26008
  }) ? a : null;
26011
26009
  }
26012
- function Rv({ autoInstantiate: e, createNewCell: t, fromCellId: n }) {
26010
+ function Lv({ autoInstantiate: e, createNewCell: t, fromCellId: n }) {
26013
26011
  let r = nl(), i = null;
26014
- return Iv({
26012
+ return Fv({
26015
26013
  moduleName: "altair",
26016
26014
  variableName: "alt",
26017
26015
  onAddImport: (a) => {
@@ -26032,13 +26030,13 @@ function Rv({ autoInstantiate: e, createNewCell: t, fromCellId: n }) {
26032
26030
  }
26033
26031
  //#endregion
26034
26032
  //#region src/core/cells/focus.ts
26035
- function zv() {
26033
+ function Rv() {
26036
26034
  return {
26037
26035
  focusedCellId: null,
26038
26036
  lastFocusedCellId: null
26039
26037
  };
26040
26038
  }
26041
- var { reducer: Bv, createActions: Vv, valueAtom: Hv, useActions: Uv } = y(zv, {
26039
+ var { reducer: zv, createActions: Bv, valueAtom: Vv, useActions: Hv } = y(Rv, {
26042
26040
  focusCell: (e, t) => ({
26043
26041
  ...e,
26044
26042
  focusedCellId: t.cellId,
@@ -26056,15 +26054,15 @@ var { reducer: Bv, createActions: Vv, valueAtom: Hv, useActions: Uv } = y(zv, {
26056
26054
  ...e,
26057
26055
  focusedCellId: null
26058
26056
  })
26059
- }), Wv = A((e) => e(Hv).lastFocusedCellId);
26060
- function Gv() {
26061
- return Me(Wv);
26057
+ }), Uv = A((e) => e(Vv).lastFocusedCellId);
26058
+ function Wv() {
26059
+ return Me(Uv);
26062
26060
  }
26063
26061
  A((e) => {
26064
- let t = e(Wv);
26065
- return !t || t === "__scratch__" ? null : Kv(t, e($));
26062
+ let t = e(Uv);
26063
+ return !t || t === "__scratch__" ? null : Gv(t, e($));
26066
26064
  });
26067
- function Kv(e, t) {
26065
+ function Gv(e, t) {
26068
26066
  let { cellData: n, cellHandles: r, cellRuntime: i } = t, a = n[e], o = i[e], s = r[e]?.current;
26069
26067
  return !a || !s ? null : {
26070
26068
  cellId: e,
@@ -26078,10 +26076,10 @@ function Kv(e, t) {
26078
26076
  }
26079
26077
  //#endregion
26080
26078
  //#region src/components/editor/connections/components.tsx
26081
- function qv() {
26082
- let e = (0, Tr.c)(4), { createNewCell: t } = Ix(), n = Gv(), r = Me(Fe), i;
26079
+ function Kv() {
26080
+ let e = (0, Tr.c)(4), { createNewCell: t } = Lx(), n = Wv(), r = Me(Fe), i;
26083
26081
  return e[0] !== r || e[1] !== t || e[2] !== n ? (i = (e) => {
26084
- /\bmo\./.test(e) && Lv({
26082
+ /\bmo\./.test(e) && Iv({
26085
26083
  autoInstantiate: r,
26086
26084
  createNewCell: t,
26087
26085
  fromCellId: n
@@ -26093,44 +26091,44 @@ function qv() {
26093
26091
  });
26094
26092
  }, e[0] = r, e[1] = t, e[2] = n, e[3] = i) : i = e[3], i;
26095
26093
  }
26096
- function Jv(e) {
26097
- let t = (0, Tr.c)(3), n = qv(), r;
26094
+ function qv(e) {
26095
+ let t = (0, Tr.c)(3), n = Kv(), r;
26098
26096
  return t[0] !== n || t[1] !== e ? (r = (t) => {
26099
26097
  n(t.code), e?.();
26100
26098
  }, t[0] = n, t[1] = e, t[2] = r) : r = t[2], r;
26101
26099
  }
26102
26100
  //#endregion
26103
26101
  //#region src/core/datasets/data-source-discovery.ts
26104
- function Yv(e, t) {
26102
+ function Jv(e, t) {
26105
26103
  return !t || e.category === "object-storage" == (t === "storage");
26106
26104
  }
26107
- function Xv(e, t) {
26105
+ function Yv(e, t) {
26108
26106
  let n = e.hidesWhen;
26109
- return n.kind === "dialect" ? n.substrings.some((e) => t.dialects.some((t) => t.includes(e))) : n.protocols.some((e) => t.storageProtocols.includes(e)) ? !0 : n.backendTypes.some((e) => t.storageBackendTypes.includes(e));
26107
+ return n.kind === "dialect" ? n.substrings.some((e) => t.dialects.some((t) => t.includes(e))) : n.protocols.some((e) => t.storageProtocols.has(e)) ? !0 : n.backendTypes.some((e) => t.storageBackendTypes.has(e));
26110
26108
  }
26111
- var Zv = A(0), Qv, $v = 0;
26112
- function ey() {
26113
- let e = j.get(Zv);
26114
- return (!Qv || $v !== e) && ($v = e, Qv = Em().then(() => T_.request({})).then((e) => e.sources).catch((t) => {
26115
- throw $v === e && (Qv = void 0), t;
26116
- })), Qv;
26109
+ var Xv = A(0), Zv, Qv = 0;
26110
+ function $v() {
26111
+ let e = j.get(Xv);
26112
+ return (!Zv || Qv !== e) && (Qv = e, Zv = Em().then(() => w_.request({})).then((e) => e.sources).catch((t) => {
26113
+ throw Qv === e && (Zv = void 0), t;
26114
+ })), Zv;
26117
26115
  }
26118
- function ty(e, t) {
26116
+ function ey(e, t) {
26119
26117
  return `${e}::${t ?? ""}`;
26120
26118
  }
26121
- function ny(e) {
26119
+ function ty(e) {
26122
26120
  return `${e}::`;
26123
26121
  }
26124
26122
  //#endregion
26125
26123
  //#region src/core/storage/state.ts
26126
- function ry() {
26124
+ function ny() {
26127
26125
  return {
26128
26126
  namespaces: [],
26129
26127
  entriesByPath: /* @__PURE__ */ new Map(),
26130
26128
  pageMetadataByPath: /* @__PURE__ */ new Map()
26131
26129
  };
26132
26130
  }
26133
- var { reducer: iy, createActions: ay, valueAtom: oy, useActions: sy } = y(ry, {
26131
+ var { reducer: ry, createActions: iy, valueAtom: ay, useActions: oy } = y(ny, {
26134
26132
  setNamespaces: (e, t) => {
26135
26133
  let n = new Map(e.namespaces.map((e) => [e.name, e]));
26136
26134
  for (let e of t.namespaces) n.set(e.name, e);
@@ -26140,7 +26138,7 @@ var { reducer: iy, createActions: ay, valueAtom: oy, useActions: sy } = y(ry, {
26140
26138
  };
26141
26139
  },
26142
26140
  setEntries: (e, t) => {
26143
- let n = ty(t.namespace, t.prefix), r = new Map(e.entriesByPath), i = t.append && r.has(n) ? [...r.get(n) ?? [], ...t.entries] : t.entries;
26141
+ let n = ey(t.namespace, t.prefix), r = new Map(e.entriesByPath), i = t.append && r.has(n) ? [...r.get(n) ?? [], ...t.entries] : t.entries;
26144
26142
  r.set(n, i);
26145
26143
  let a = new Map(e.pageMetadataByPath);
26146
26144
  return a.set(n, { nextPageToken: t.nextPageToken ?? null }), {
@@ -26150,7 +26148,7 @@ var { reducer: iy, createActions: ay, valueAtom: oy, useActions: sy } = y(ry, {
26150
26148
  };
26151
26149
  },
26152
26150
  clearNamespaceCache: (e, t) => {
26153
- let n = new Map(e.entriesByPath), r = new Map(e.pageMetadataByPath), i = ny(t);
26151
+ let n = new Map(e.entriesByPath), r = new Map(e.pageMetadataByPath), i = ty(t);
26154
26152
  for (let e of n.keys()) e.startsWith(i) && n.delete(e);
26155
26153
  for (let e of r.keys()) e.startsWith(i) && r.delete(e);
26156
26154
  return {
@@ -26166,15 +26164,15 @@ var { reducer: iy, createActions: ay, valueAtom: oy, useActions: sy } = y(ry, {
26166
26164
  namespaces: r
26167
26165
  };
26168
26166
  }
26169
- }), cy = A((e) => e(oy).namespaces);
26167
+ }), sy = A((e) => e(ay).namespaces);
26170
26168
  //#endregion
26171
26169
  //#region src/hooks/useDataSourceDiscovery.ts
26172
- function ly() {
26173
- let e = (0, Tr.c)(2), t = Me(Zv), n;
26174
- return e[0] === t ? n = e[1] : (n = [t], e[0] = t, e[1] = n), sn(ey, n);
26170
+ function cy() {
26171
+ let e = (0, Tr.c)(2), t = Me(Xv), n;
26172
+ return e[0] === t ? n = e[1] : (n = [t], e[0] = t, e[1] = n), sn($v, n);
26175
26173
  }
26176
- function uy(e) {
26177
- let t = (0, Tr.c)(6), { data: n } = ly(), r = Me(Ml), i = Me(cy), a;
26174
+ function ly(e) {
26175
+ let t = (0, Tr.c)(6), { data: n } = cy(), r = Me(Ml), i = Me(sy), a;
26178
26176
  bb0: {
26179
26177
  if (!n) {
26180
26178
  let e;
@@ -26184,91 +26182,91 @@ function uy(e) {
26184
26182
  let o;
26185
26183
  if (t[1] !== r || t[2] !== n || t[3] !== e || t[4] !== i) {
26186
26184
  let a = {
26187
- dialects: [...r.values()].map(py),
26188
- storageProtocols: i.map(fy),
26189
- storageBackendTypes: i.map(dy)
26185
+ dialects: [...r.values()].map(fy),
26186
+ storageProtocols: new Set(i.map(dy)),
26187
+ storageBackendTypes: new Set(i.map(uy))
26190
26188
  };
26191
- o = n.filter((t) => Yv(t, e) && !Xv(t, a)), t[1] = r, t[2] = n, t[3] = e, t[4] = i, t[5] = o;
26189
+ o = n.filter((t) => Jv(t, e) && !Yv(t, a)), t[1] = r, t[2] = n, t[3] = e, t[4] = i, t[5] = o;
26192
26190
  } else o = t[5];
26193
26191
  a = o;
26194
26192
  }
26195
26193
  return a;
26196
26194
  }
26197
- function dy(e) {
26195
+ function uy(e) {
26198
26196
  return e.backendType.toLowerCase();
26199
26197
  }
26200
- function fy(e) {
26198
+ function dy(e) {
26201
26199
  return e.protocol.toLowerCase();
26202
26200
  }
26203
- function py(e) {
26201
+ function fy(e) {
26204
26202
  return e.dialect.toLowerCase();
26205
26203
  }
26206
26204
  //#endregion
26207
26205
  //#region src/hooks/useNonce.ts
26208
- function my() {
26206
+ function py() {
26209
26207
  let e = (0, Tr.c)(1), [, t] = (0, F.useState)(0), n;
26210
26208
  return e[0] === Symbol.for("react.memo_cache_sentinel") ? (n = () => {
26211
- t(hy);
26209
+ t(my);
26212
26210
  }, e[0] = n) : n = e[0], n;
26213
26211
  }
26214
- function hy(e) {
26212
+ function my(e) {
26215
26213
  return e + 1;
26216
26214
  }
26217
26215
  //#endregion
26218
26216
  //#region src/core/codemirror/language/panel/sql.tsx
26219
- var gy = (e) => {
26220
- let t = (0, Tr.c)(6), n = uy("database");
26217
+ var hy = (e) => {
26218
+ let t = (0, Tr.c)(6), n = ly("database");
26221
26219
  if (n.length === 0) {
26222
26220
  let r;
26223
- return t[0] !== n || t[1] !== e ? (r = /* @__PURE__ */ (0, I.jsx)(vy, {
26221
+ return t[0] !== n || t[1] !== e ? (r = /* @__PURE__ */ (0, I.jsx)(_y, {
26224
26222
  ...e,
26225
26223
  detectedDataSources: n
26226
26224
  }), t[0] = n, t[1] = e, t[2] = r) : r = t[2], r;
26227
26225
  }
26228
26226
  let r;
26229
- return t[3] !== n || t[4] !== e ? (r = /* @__PURE__ */ (0, I.jsx)(_y, {
26227
+ return t[3] !== n || t[4] !== e ? (r = /* @__PURE__ */ (0, I.jsx)(gy, {
26230
26228
  ...e,
26231
26229
  detectedDataSources: n
26232
26230
  }), t[3] = n, t[4] = e, t[5] = r) : r = t[5], r;
26233
- }, _y = (e) => {
26231
+ }, gy = (e) => {
26234
26232
  let t = (0, Tr.c)(7), n, r;
26235
26233
  t[0] === e ? (n = t[1], r = t[2]) : ({detectedDataSources: n, ...r} = e, t[0] = e, t[1] = n, t[2] = r);
26236
- let i = Jv(), a;
26237
- return t[3] !== i || t[4] !== n || t[5] !== r ? (a = /* @__PURE__ */ (0, I.jsx)(vy, {
26234
+ let i = qv(), a;
26235
+ return t[3] !== i || t[4] !== n || t[5] !== r ? (a = /* @__PURE__ */ (0, I.jsx)(_y, {
26238
26236
  ...r,
26239
26237
  detectedDataSources: n,
26240
26238
  addDetectedDataSource: i
26241
26239
  }), t[3] = i, t[4] = n, t[5] = r, t[6] = a) : a = t[6], a;
26242
- }, vy = (e) => {
26240
+ }, _y = (e) => {
26243
26241
  let t = (0, Tr.c)(42), { selectedEngine: n, onChange: r, cellId: i, detectedDataSources: a, addDetectedDataSource: o } = e, s = Me(Ml), c = [], l = [];
26244
26242
  for (let [e, t] of s.entries()) hl.has(e) ? c.push(t) : l.push(t);
26245
- let u = my(), d;
26243
+ let u = py(), d;
26246
26244
  t[0] !== s || t[1] !== n ? (d = n && !s.has(n), t[0] = s, t[1] = n, t[2] = d) : d = t[2];
26247
26245
  let f = d, p;
26248
26246
  t[3] !== o || t[4] !== s || t[5] !== a || t[6] !== r || t[7] !== u ? (p = (e) => {
26249
- if (e === yy) {
26250
- window.open(xy, "_blank");
26247
+ if (e === vy) {
26248
+ window.open(by, "_blank");
26251
26249
  return;
26252
26250
  }
26253
- if (e.startsWith(by)) {
26254
- let t = e.slice(by.length), n = a.find((e) => e.id === t);
26251
+ if (e.startsWith(yy)) {
26252
+ let t = e.slice(yy.length), n = a.find((e) => e.id === t);
26255
26253
  n && o && o(n);
26256
26254
  return;
26257
26255
  }
26258
26256
  let t = s.get(e);
26259
26257
  t && (u(), r(t.name), Nl(t.name));
26260
26258
  }, t[3] = o, t[4] = s, t[5] = a, t[6] = r, t[7] = u, t[8] = p) : p = t[8];
26261
- let m = p, h = Ey, g = le, _;
26262
- t[9] === i ? _ = t[10] : (_ = wv(i), t[9] = i, t[10] = _);
26259
+ let m = p, h = Ty, g = le, _;
26260
+ t[9] === i ? _ = t[10] : (_ = Cv(i), t[9] = i, t[10] = _);
26263
26261
  let v;
26264
26262
  t[11] === Symbol.for("react.memo_cache_sentinel") ? (v = /* @__PURE__ */ (0, I.jsx)(re, { placeholder: "Select an engine" }), t[11] = v) : v = t[11];
26265
26263
  let y;
26266
- t[12] === _ ? y = t[13] : (y = /* @__PURE__ */ (0, I.jsx)(Cy, {
26264
+ t[12] === _ ? y = t[13] : (y = /* @__PURE__ */ (0, I.jsx)(Sy, {
26267
26265
  ..._,
26268
26266
  children: v
26269
26267
  }), t[12] = _, t[13] = y);
26270
26268
  let b = ae, x;
26271
- t[14] === i ? x = t[15] : (x = wv(i), t[14] = i, t[15] = x);
26269
+ t[14] === i ? x = t[15] : (x = Cv(i), t[14] = i, t[15] = x);
26272
26270
  let S = se, C;
26273
26271
  t[16] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ (0, I.jsx)(te, { children: "Database connections" }), t[16] = C) : C = t[16];
26274
26272
  let w;
@@ -26286,17 +26284,17 @@ var gy = (e) => {
26286
26284
  t[20] === a ? ce = t[21] : (ce = a.length > 0 && /* @__PURE__ */ (0, I.jsxs)(I.Fragment, { children: [
26287
26285
  /* @__PURE__ */ (0, I.jsx)(oe, {}),
26288
26286
  /* @__PURE__ */ (0, I.jsx)(te, { children: "Detected in your environment" }),
26289
- a.map(Dy)
26287
+ a.map(Ey)
26290
26288
  ] }), t[20] = a, t[21] = ce);
26291
26289
  let de;
26292
26290
  t[22] === Symbol.for("react.memo_cache_sentinel") ? (de = /* @__PURE__ */ (0, I.jsx)(oe, {}), t[22] = de) : de = t[22];
26293
26291
  let fe;
26294
26292
  t[23] === Symbol.for("react.memo_cache_sentinel") ? (fe = /* @__PURE__ */ (0, I.jsx)(ie, {
26295
26293
  className: "text-muted-foreground",
26296
- value: yy,
26294
+ value: vy,
26297
26295
  children: /* @__PURE__ */ (0, I.jsxs)("a", {
26298
26296
  className: "flex items-center gap-1",
26299
- href: xy,
26297
+ href: by,
26300
26298
  target: "_blank",
26301
26299
  rel: "noreferrer",
26302
26300
  children: [/* @__PURE__ */ (0, I.jsx)(ue, { className: "h-3 w-3" }), /* @__PURE__ */ (0, I.jsx)("span", { children: "How to add a database connection" })]
@@ -26327,13 +26325,13 @@ var gy = (e) => {
26327
26325
  children: [y, me]
26328
26326
  })
26329
26327
  }), t[36] = g, t[37] = m, t[38] = n, t[39] = me, t[40] = y, t[41] = E) : E = t[41], E;
26330
- }, yy = "__help__", by = "__detected_source__:", xy = "http://docs.marimo.io/guides/working_with_data/sql/#connecting-to-a-custom-database", Sy = () => {
26331
- let e = (0, Tr.c)(16), { sqlMode: t, setSQLMode: n } = R_(), r;
26328
+ }, vy = "__help__", yy = "__detected_source__:", by = "http://docs.marimo.io/guides/working_with_data/sql/#connecting-to-a-custom-database", xy = () => {
26329
+ let e = (0, Tr.c)(16), { sqlMode: t, setSQLMode: n } = L_(), r;
26332
26330
  e[0] !== n || e[1] !== t ? (r = () => {
26333
26331
  let e = t === "validate" ? "default" : "validate";
26334
- e === "default" && k_(), n(e);
26332
+ e === "default" && O_(), n(e);
26335
26333
  }, e[0] = n, e[1] = t, e[2] = r) : r = e[2];
26336
- let i = r, a = Oy, o = ky, s;
26334
+ let i = r, a = Dy, o = Oy, s;
26337
26335
  e[3] === t ? s = e[4] : (s = o(t), e[3] = t, e[4] = s);
26338
26336
  let c;
26339
26337
  e[5] === t ? c = e[6] : (c = a(t), e[5] = t, e[6] = c);
@@ -26359,7 +26357,7 @@ var gy = (e) => {
26359
26357
  children: f
26360
26358
  })
26361
26359
  }), e[13] = s, e[14] = f, e[15] = p) : p = e[15], p;
26362
- }, Cy = (e) => {
26360
+ }, Sy = (e) => {
26363
26361
  let t = (0, Tr.c)(6), n, r;
26364
26362
  t[0] === e ? (n = t[1], r = t[2]) : ({children: n, ...r} = e, t[0] = e, t[1] = n, t[2] = r);
26365
26363
  let i;
@@ -26369,15 +26367,15 @@ var gy = (e) => {
26369
26367
  children: n
26370
26368
  }), t[3] = n, t[4] = r, t[5] = i) : i = t[5], i;
26371
26369
  };
26372
- function wy(e) {
26370
+ function Cy(e) {
26373
26371
  return e.source !== "iceberg";
26374
26372
  }
26375
- function Ty(e) {
26373
+ function wy(e) {
26376
26374
  return /* @__PURE__ */ (0, I.jsx)(ie, {
26377
26375
  value: e.name,
26378
26376
  children: /* @__PURE__ */ (0, I.jsxs)("div", {
26379
26377
  className: "flex items-center gap-1",
26380
- children: [/* @__PURE__ */ (0, I.jsx)(Fv, {
26378
+ children: [/* @__PURE__ */ (0, I.jsx)(Pv, {
26381
26379
  className: "h-3 w-3",
26382
26380
  name: e.dialect
26383
26381
  }), /* @__PURE__ */ (0, I.jsx)("span", {
@@ -26387,12 +26385,12 @@ function Ty(e) {
26387
26385
  })
26388
26386
  }, e.name);
26389
26387
  }
26390
- function Ey(e) {
26391
- return e = e.filter(wy), e.map(Ty);
26388
+ function Ty(e) {
26389
+ return e = e.filter(Cy), e.map(wy);
26392
26390
  }
26393
- function Dy(e) {
26391
+ function Ey(e) {
26394
26392
  return /* @__PURE__ */ (0, I.jsx)(ie, {
26395
- value: `${by}${e.id}`,
26393
+ value: `${yy}${e.id}`,
26396
26394
  children: /* @__PURE__ */ (0, I.jsxs)("div", {
26397
26395
  className: "flex items-center gap-1",
26398
26396
  children: [/* @__PURE__ */ (0, I.jsx)(Ln, { className: "h-3 w-3 text-(--blue-9)" }), /* @__PURE__ */ (0, I.jsxs)("span", {
@@ -26406,10 +26404,10 @@ function Dy(e) {
26406
26404
  })
26407
26405
  }, e.id);
26408
26406
  }
26409
- function Oy(e) {
26407
+ function Dy(e) {
26410
26408
  return e === "validate" ? /* @__PURE__ */ (0, I.jsx)(In, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, I.jsx)(bn, { className: "h-3 w-3" });
26411
26409
  }
26412
- function ky(e) {
26410
+ function Oy(e) {
26413
26411
  return e === "validate" ? /* @__PURE__ */ (0, I.jsxs)("div", {
26414
26412
  className: "text-xs",
26415
26413
  children: [/* @__PURE__ */ (0, I.jsxs)("div", {
@@ -26426,14 +26424,14 @@ function ky(e) {
26426
26424
  }
26427
26425
  //#endregion
26428
26426
  //#region src/core/codemirror/language/panel/panel.tsx
26429
- var Ay = () => {
26427
+ var ky = () => {
26430
26428
  let e = (0, Tr.c)(1), t;
26431
26429
  return e[0] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ (0, I.jsx)("div", { className: "h-4 border-r border-border" }), e[0] = t) : t = e[0], t;
26432
- }, jy = (e) => {
26430
+ }, Ay = (e) => {
26433
26431
  let t = (0, Tr.c)(102), { view: n } = e, r;
26434
26432
  t[0] === Symbol.for("react.memo_cache_sentinel") ? (r = { minWidth: 50 }, t[0] = r) : r = t[0];
26435
- let { spanProps: i, inputProps: a } = vv(r), o;
26436
- t[1] === n.state ? o = t[2] : (o = n.state.field(Py), t[1] = n.state, t[2] = o);
26433
+ let { spanProps: i, inputProps: a } = _v(r), o;
26434
+ t[1] === n.state ? o = t[2] : (o = n.state.field(Ny), t[1] = n.state, t[2] = o);
26437
26435
  let s = o, c;
26438
26436
  t[3] === n.state ? c = t[4] : (c = n.state.facet(il), t[3] = n.state, t[4] = c);
26439
26437
  let u = c, d;
@@ -26450,19 +26448,19 @@ var Ay = () => {
26450
26448
  });
26451
26449
  }, t[6] = n, t[7] = m);
26452
26450
  let _ = m;
26453
- if (s instanceof W_) {
26451
+ if (s instanceof U_) {
26454
26452
  let e;
26455
26453
  t[8] === n.state ? e = t[9] : (e = n.state.field(vp), t[8] = n.state, t[9] = e);
26456
26454
  let r = e;
26457
26455
  p = !0;
26458
26456
  let o;
26459
26457
  t[10] === _ ? o = t[11] : (o = (e) => {
26460
- let t = mv(e.currentTarget.value, !1);
26458
+ let t = pv(e.currentTarget.value, !1);
26461
26459
  e.currentTarget.value = t, _({ dataframeName: t });
26462
26460
  }, t[10] = _, t[11] = o);
26463
26461
  let s = o, c;
26464
26462
  t[12] !== _ || t[13] !== n ? (c = (e) => {
26465
- _({ engine: e }), Q_(n, e);
26463
+ _({ engine: e }), Z_(n, e);
26466
26464
  }, t[12] = _, t[13] = n, t[14] = c) : c = t[14];
26467
26465
  let d = c, m;
26468
26466
  t[15] === Symbol.for("react.memo_cache_sentinel") ? (m = /* @__PURE__ */ (0, I.jsx)("span", {
@@ -26498,13 +26496,13 @@ var Ay = () => {
26498
26496
  ]
26499
26497
  }), t[28] = y, t[29] = b, t[30] = x) : x = t[30];
26500
26498
  let S;
26501
- t[31] !== u || t[32] !== r.engine || t[33] !== d ? (S = /* @__PURE__ */ (0, I.jsx)(gy, {
26499
+ t[31] !== u || t[32] !== r.engine || t[33] !== d ? (S = /* @__PURE__ */ (0, I.jsx)(hy, {
26502
26500
  selectedEngine: r.engine,
26503
26501
  onChange: d,
26504
26502
  cellId: u
26505
26503
  }), t[31] = u, t[32] = r.engine, t[33] = d, t[34] = S) : S = t[34];
26506
26504
  let C;
26507
- t[35] === r.engine ? C = t[36] : (C = r.engine === "__marimo_duckdb" && /* @__PURE__ */ (0, I.jsx)(Sy, {}), t[35] = r.engine, t[36] = C);
26505
+ t[35] === r.engine ? C = t[36] : (C = r.engine === "__marimo_duckdb" && /* @__PURE__ */ (0, I.jsx)(xy, {}), t[35] = r.engine, t[36] = C);
26508
26506
  let w;
26509
26507
  t[37] !== r.engine || t[38] !== n ? (w = async () => {
26510
26508
  await Du(n, r.engine);
@@ -26515,6 +26513,7 @@ var Ay = () => {
26515
26513
  t[41] === w ? ee = t[42] : (ee = /* @__PURE__ */ (0, I.jsx)(g, {
26516
26514
  content: "Format SQL",
26517
26515
  children: /* @__PURE__ */ (0, I.jsx)(l, {
26516
+ "aria-label": "Format SQL",
26518
26517
  variant: "text",
26519
26518
  size: "icon",
26520
26519
  onClick: w,
@@ -26522,7 +26521,7 @@ var Ay = () => {
26522
26521
  })
26523
26522
  }), t[41] = w, t[42] = ee);
26524
26523
  let te;
26525
- t[43] === Symbol.for("react.memo_cache_sentinel") ? (te = /* @__PURE__ */ (0, I.jsx)(Ay, {}), t[43] = te) : te = t[43];
26524
+ t[43] === Symbol.for("react.memo_cache_sentinel") ? (te = /* @__PURE__ */ (0, I.jsx)(ky, {}), t[43] = te) : te = t[43];
26526
26525
  let ne;
26527
26526
  t[44] === _ ? ne = t[45] : (ne = (e) => {
26528
26527
  _({ showOutput: !e.target.checked });
@@ -26570,13 +26569,13 @@ var Ay = () => {
26570
26569
  let { quotePrefix: f } = n.state.field(vp);
26571
26570
  r = f, r === void 0 && (r = "r", _({ quotePrefix: r })), d = (e, t) => {
26572
26571
  if (typeof t != "boolean") return;
26573
- let n = yv({
26572
+ let n = vv({
26574
26573
  currentQuotePrefix: r,
26575
26574
  checked: t,
26576
26575
  prefix: e
26577
26576
  });
26578
26577
  _({ quotePrefix: n });
26579
- }, a = "flex flex-row w-full justify-end gap-1.5 items-center", u = "flex items-center gap-1.5", t[72] === Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ (0, I.jsx)("span", { children: "r" }), t[72] = i) : i = t[72], e = fv, s = "Toggle raw string", c = "w-3 h-3", l = r.includes("r"), o = (e) => {
26578
+ }, a = "flex flex-row w-full justify-end gap-1.5 items-center", u = "flex items-center gap-1.5", t[72] === Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ (0, I.jsx)("span", { children: "r" }), t[72] = i) : i = t[72], e = dv, s = "Toggle raw string", c = "w-3 h-3", l = r.includes("r"), o = (e) => {
26580
26579
  d("r", e);
26581
26580
  }, t[60] = _, t[61] = n.state, t[62] = e, t[63] = r, t[64] = i, t[65] = a, t[66] = o, t[67] = s, t[68] = c, t[69] = l, t[70] = u, t[71] = d;
26582
26581
  } else e = t[62], r = t[63], i = t[64], a = t[65], o = t[66], s = t[67], c = t[68], l = t[69], u = t[70], d = t[71];
@@ -26603,7 +26602,7 @@ var Ay = () => {
26603
26602
  let x;
26604
26603
  t[88] !== y || t[89] !== b ? (x = /* @__PURE__ */ (0, I.jsxs)("div", {
26605
26604
  className: "flex items-center gap-1.5",
26606
- children: [v, /* @__PURE__ */ (0, I.jsx)(fv, {
26605
+ children: [v, /* @__PURE__ */ (0, I.jsx)(dv, {
26607
26606
  "aria-label": "Toggle f-string",
26608
26607
  className: "w-3 h-3",
26609
26608
  checked: y,
@@ -26612,7 +26611,7 @@ var Ay = () => {
26612
26611
  }), t[88] = y, t[89] = b, t[90] = x) : x = t[90];
26613
26612
  let S;
26614
26613
  t[91] === Symbol.for("react.memo_cache_sentinel") ? (S = /* @__PURE__ */ (0, I.jsx)(g, {
26615
- content: /* @__PURE__ */ (0, I.jsx)(bv, {}),
26614
+ content: /* @__PURE__ */ (0, I.jsx)(yv, {}),
26616
26615
  children: /* @__PURE__ */ (0, I.jsx)(En, { className: "w-3 h-3" })
26617
26616
  }), t[91] = S) : S = t[91];
26618
26617
  let C;
@@ -26626,7 +26625,7 @@ var Ay = () => {
26626
26625
  }), t[92] = a, t[93] = h, t[94] = x, t[95] = C) : C = t[95], f = C;
26627
26626
  }
26628
26627
  let v;
26629
- t[96] === p ? v = t[97] : (v = p && /* @__PURE__ */ (0, I.jsx)(Ay, {}), t[96] = p, t[97] = v);
26628
+ t[96] === p ? v = t[97] : (v = p && /* @__PURE__ */ (0, I.jsx)(ky, {}), t[96] = p, t[97] = v);
26630
26629
  let y;
26631
26630
  return t[98] !== f || t[99] !== s.type || t[100] !== v ? (y = /* @__PURE__ */ (0, I.jsx)(h, { children: /* @__PURE__ */ (0, I.jsxs)("div", {
26632
26631
  className: "flex justify-between items-center gap-4 pl-2 pt-2",
@@ -26636,18 +26635,18 @@ var Ay = () => {
26636
26635
  s.type
26637
26636
  ]
26638
26637
  }) }), t[98] = f, t[99] = s.type, t[100] = v, t[101] = y) : y = t[101], y;
26639
- }, My = new pt(), Ny = et.define(), Py = xt.define({
26638
+ }, jy = new pt(), My = et.define(), Ny = xt.define({
26640
26639
  create() {
26641
- return dv.python;
26640
+ return uv.python;
26642
26641
  },
26643
26642
  update(e, t) {
26644
- for (let e of t.effects) if (e.is(Ny)) return e.value;
26643
+ for (let e of t.effects) if (e.is(My)) return e.value;
26645
26644
  return e;
26646
26645
  },
26647
- provide: (e) => nt.from(e, (e) => e.type === "python" ? null : (e) => ku(e, jy))
26646
+ provide: (e) => nt.from(e, (e) => e.type === "python" ? null : (e) => ku(e, Ay))
26648
26647
  });
26649
- function Fy({ view: e, nextLanguage: t, opts: n }) {
26650
- let r = e.state.field(Py), i = e.state.doc.toString(), a = e.state.facet(Nc), o = e.state.facet(Pc), s = e.state.facet(Fc), c = e.state.facet(Ic), l = e.state.facet(Lc), u = e.state.field(vp), d = e.state.selection.main.head, f;
26648
+ function Py({ view: e, nextLanguage: t, opts: n }) {
26649
+ let r = e.state.field(Ny), i = e.state.doc.toString(), a = e.state.facet(Nc), o = e.state.facet(Pc), s = e.state.facet(Fc), c = e.state.facet(Ic), l = e.state.facet(Lc), u = e.state.field(vp), d = e.state.selection.main.head, f;
26651
26650
  if (n.keepCodeAsIs) f = i, r.type !== t.type && (u = { ...t.defaultMetadata });
26652
26651
  else {
26653
26652
  let [e, n] = r.transformOut(i, u), [a, o, s] = t.transformIn(e);
@@ -26655,9 +26654,15 @@ function Fy({ view: e, nextLanguage: t, opts: n }) {
26655
26654
  }
26656
26655
  e.dispatch({
26657
26656
  effects: [
26658
- Ny.of(t),
26657
+ My.of(t),
26659
26658
  gp.of(u),
26660
- My.reconfigure(t.getExtension(c, a, o, s, l)),
26659
+ jy.reconfigure(t.getExtension({
26660
+ cellId: c,
26661
+ completionConfig: a,
26662
+ hotkeys: o,
26663
+ placeholderType: s,
26664
+ lspConfig: l
26665
+ })),
26661
26666
  Rc.reconfigure([]),
26662
26667
  Eu.of(!0)
26663
26668
  ],
@@ -26667,38 +26672,38 @@ function Fy({ view: e, nextLanguage: t, opts: n }) {
26667
26672
  insert: f
26668
26673
  },
26669
26674
  selection: n.keepCodeAsIs ? void 0 : Ue.cursor(d)
26670
- }), e.dispatch({ effects: [Rc.reconfigure([Ct()])] }), t.type === "sql" && $_(e);
26675
+ }), e.dispatch({ effects: [Rc.reconfigure([Ct()])] }), t.type === "sql" && Q_(e);
26671
26676
  }
26672
- function Iy(e) {
26673
- return e ? dv.markdown.isSupported(e) ? dv.markdown : dv.sql.isSupported(e) ? dv.sql : dv.python : dv.python;
26677
+ function Fy(e) {
26678
+ return e ? uv.markdown.isSupported(e) ? uv.markdown : uv.sql.isSupported(e) ? uv.sql : uv.python : uv.python;
26674
26679
  }
26675
- function Ly(e, t) {
26676
- e.state.field(Py).type !== t.language && Fy({
26680
+ function Iy(e, t) {
26681
+ e.state.field(Ny).type !== t.language && Py({
26677
26682
  view: e,
26678
- nextLanguage: dv[t.language],
26683
+ nextLanguage: uv[t.language],
26679
26684
  opts: { keepCodeAsIs: t.keepCodeAsIs ?? !1 }
26680
26685
  });
26681
26686
  }
26682
26687
  //#endregion
26683
26688
  //#region src/core/codemirror/language/utils.ts
26684
- function Ry(e, t, n) {
26685
- let r = e.state.field(Py), i = e.state.field(vp), a = e.state.doc.toString();
26689
+ function Ly(e, t, n) {
26690
+ let r = e.state.field(Ny), i = e.state.field(vp), a = e.state.doc.toString();
26686
26691
  return t === void 0 ? r.transformOut(a, i)[0] : r.transformOut(a.slice(t, n), i)[0];
26687
26692
  }
26688
- function zy(e, t) {
26689
- let n = e.state.field(Py), r = Iy(t);
26690
- r.type !== n.type && Ly(e, {
26693
+ function Ry(e, t) {
26694
+ let n = e.state.field(Ny), r = Fy(t);
26695
+ r.type !== n.type && Iy(e, {
26691
26696
  language: r.type,
26692
26697
  keepCodeAsIs: !0
26693
26698
  });
26694
- let [i] = e.state.field(Py).transformIn(t);
26699
+ let [i] = e.state.field(Ny).transformIn(t);
26695
26700
  return jc(e, i), i;
26696
26701
  }
26697
- function By(e) {
26702
+ function zy(e) {
26698
26703
  let t = e.state.selection.main.head, n = e.state.doc.toString(), r = n.length > 0 && n[t - 1] === "\n", i = n.length > 0 && n[t] === "\n", a = r ? t - 1 : t, o = i ? t + 1 : t;
26699
26704
  return {
26700
- beforeCursorCode: Ry(e, 0, a),
26701
- afterCursorCode: Ry(e, o)
26705
+ beforeCursorCode: Ly(e, 0, a),
26706
+ afterCursorCode: Ly(e, o)
26702
26707
  };
26703
26708
  }
26704
26709
  //#endregion
@@ -26711,7 +26716,7 @@ if (typeof document < "u") {
26711
26716
  t.tagName === "A" && t.hasAttribute(e) && (t.setAttribute("target", t.getAttribute(e) || ""), t.removeAttribute(e), t.getAttribute("target") === "_blank" && t.setAttribute("rel", "noopener noreferrer"));
26712
26717
  });
26713
26718
  }
26714
- function Vy(e) {
26719
+ function By(e) {
26715
26720
  let t = {
26716
26721
  USE_PROFILES: {
26717
26722
  html: !0,
@@ -26731,52 +26736,52 @@ function Vy(e) {
26731
26736
  }
26732
26737
  //#endregion
26733
26738
  //#region src/core/dom/outline.ts
26734
- var Hy = [
26739
+ var Vy = [
26735
26740
  "marimo-carousel",
26736
26741
  "marimo-tabs",
26737
26742
  "marimo-accordion",
26738
26743
  "marimo-sidebar"
26739
- ], Uy = "h1, h2, h3, h4, h5, h6";
26740
- function Wy(e) {
26744
+ ], Hy = "h1, h2, h3, h4, h5, h6";
26745
+ function Uy(e) {
26741
26746
  if (typeof DOMParser > "u") return null;
26742
- let t = [], n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(Uy);
26747
+ let t = [], n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(Hy);
26743
26748
  for (let e of Array.from(n)) {
26744
26749
  let n = e.textContent;
26745
- if (Hy.some((t) => e.closest(t)) || !n) continue;
26750
+ if (Vy.some((t) => e.closest(t)) || !n) continue;
26746
26751
  let r = Number.parseInt(e.tagName[1], 10), i = e.innerHTML, a = {
26747
26752
  name: n,
26748
26753
  level: r,
26749
- by: Ky(e)
26754
+ by: Gy(e)
26750
26755
  };
26751
- i !== n && (a.html = Vy(i)), t.push(a);
26756
+ i !== n && (a.html = By(i)), t.push(a);
26752
26757
  }
26753
26758
  return { items: t };
26754
26759
  }
26755
- function Gy(e) {
26760
+ function Wy(e) {
26756
26761
  if (!e.includes("\"")) return `"${e}"`;
26757
26762
  if (!e.includes("'")) return `'${e}'`;
26758
26763
  let t = e.split("\""), n = [];
26759
26764
  for (let [e, r] of t.entries()) r && n.push(`"${r}"`), e < t.length - 1 && n.push("'\"'");
26760
26765
  return `concat(${n.join(", ")})`;
26761
26766
  }
26762
- function Ky(e) {
26767
+ function Gy(e) {
26763
26768
  let t = e.id;
26764
26769
  if (t) return { id: t };
26765
26770
  let n = e.textContent ?? "";
26766
- return { path: `//${e.tagName}[contains(., ${Gy(n)})]` };
26771
+ return { path: `//${e.tagName}[contains(., ${Wy(n)})]` };
26767
26772
  }
26768
- function qy(e) {
26773
+ function Ky(e) {
26769
26774
  return { items: e.filter(Boolean).flatMap((e) => e.items) };
26770
26775
  }
26771
- function Jy(e) {
26776
+ function qy(e) {
26772
26777
  if (e == null || e.mimetype !== "text/html" && e.mimetype !== "text/markdown" || e.data == null) return null;
26773
26778
  try {
26774
- return N(typeof e.data == "string", "expected string"), Wy(e.data);
26779
+ return N(typeof e.data == "string", "expected string"), Uy(e.data);
26775
26780
  } catch {
26776
26781
  return a.error("Failed to parse outline"), null;
26777
26782
  }
26778
26783
  }
26779
- function Yy(e, t) {
26784
+ function Jy(e, t) {
26780
26785
  let n = (e) => e.items.length === 0 ? 7 : Math.min(...e.items.map((e) => e.level)), r = t[e];
26781
26786
  if (r == null || r.items.length === 0) return a.warn("Failed to find a starting outline"), null;
26782
26787
  let i = n(r), o = e + 1;
@@ -26788,13 +26793,13 @@ function Yy(e, t) {
26788
26793
  return [e, t.length - 1];
26789
26794
  }
26790
26795
  wr("marimo:rtc:username", "", Ed);
26791
- var Xy = Ft(() => vd("rtc_v2"));
26792
- function Zy(e) {
26796
+ var Yy = Ft(() => vd("rtc_v2"));
26797
+ function Xy(e) {
26793
26798
  return e !== Gr;
26794
26799
  }
26795
26800
  //#endregion
26796
26801
  //#region src/components/editor/output/ansi-reduce.ts
26797
- var Qy = class e {
26802
+ var Zy = class e {
26798
26803
  lines = [""];
26799
26804
  cursor = {
26800
26805
  row: 0,
@@ -26883,7 +26888,7 @@ var Qy = class e {
26883
26888
  render() {
26884
26889
  return this.lines.join("\n");
26885
26890
  }
26886
- }, $y = class {
26891
+ }, Qy = class {
26887
26892
  ESC_REGEX = new RegExp(String.raw`\u001B(?:\[[0-9;]*[A-Za-z]|\([0-9A-Za-z])`, "gu");
26888
26893
  parse(e) {
26889
26894
  let t = [], n = 0;
@@ -26902,9 +26907,9 @@ var Qy = class e {
26902
26907
  value: e.slice(n)
26903
26908
  }), t;
26904
26909
  }
26905
- }, eb = class {
26906
- parser = new $y();
26907
- buffer = new Qy();
26910
+ }, $y = class {
26911
+ parser = new Qy();
26912
+ buffer = new Zy();
26908
26913
  reduce(e) {
26909
26914
  return this.reset(), this.append(e), this.render();
26910
26915
  }
@@ -26920,7 +26925,7 @@ var Qy = class e {
26920
26925
  for (let e of t) e.type === "text" ? this.processText(e.value) : this.buffer.handleEscape(e.value);
26921
26926
  }
26922
26927
  reset() {
26923
- this.buffer = new Qy();
26928
+ this.buffer = new Zy();
26924
26929
  }
26925
26930
  render() {
26926
26931
  return this.buffer.render();
@@ -26963,25 +26968,40 @@ var Qy = class e {
26963
26968
  for (let t of e) t >= " " && (n += t);
26964
26969
  return n;
26965
26970
  }
26966
- }, tb = class e {
26971
+ }, eb = class e {
26967
26972
  mimetype;
26968
26973
  channel;
26969
26974
  timestamp;
26970
26975
  code;
26971
- ansiReducer = new eb();
26976
+ id;
26977
+ ansiReducer = new $y();
26972
26978
  _data;
26973
26979
  get data() {
26974
26980
  return this._data;
26975
26981
  }
26976
26982
  static create(t) {
26977
- let n = new eb();
26978
- return n.append(t.data), new e(t.mimetype, t.channel, t.timestamp, n, t.code);
26983
+ let n = new $y();
26984
+ return n.append(t.data), new e({
26985
+ mimetype: t.mimetype,
26986
+ channel: t.channel,
26987
+ timestamp: t.timestamp,
26988
+ ansiReducer: n,
26989
+ code: t.code,
26990
+ id: t.id
26991
+ });
26979
26992
  }
26980
- constructor(e, t, n, r, i) {
26981
- this.mimetype = e, this.channel = t, this.timestamp = n, this.code = i, this.ansiReducer = r, this._data = this.ansiReducer.render();
26993
+ constructor({ mimetype: e, channel: t, timestamp: n, ansiReducer: r, code: i, id: a }) {
26994
+ this.mimetype = e, this.channel = t, this.timestamp = n, this.code = i, this.id = a, this.ansiReducer = r, this._data = this.ansiReducer.render();
26982
26995
  }
26983
26996
  appendData(t) {
26984
- return this.ansiReducer.append(t), new e(this.mimetype, this.channel, this.timestamp, this.ansiReducer, this.code);
26997
+ return this.ansiReducer.append(t), new e({
26998
+ mimetype: this.mimetype,
26999
+ channel: this.channel,
27000
+ timestamp: this.timestamp,
27001
+ ansiReducer: this.ansiReducer,
27002
+ code: this.code,
27003
+ id: this.id
27004
+ });
26985
27005
  }
26986
27006
  toJSON() {
26987
27007
  return {
@@ -26995,28 +27015,28 @@ var Qy = class e {
26995
27015
  };
26996
27016
  //#endregion
26997
27017
  //#region src/core/cells/collapseConsoleOutputs.tsx
26998
- function nb(e, t = 5e3) {
27018
+ function tb(e, t = 5e3) {
26999
27019
  let n = [...e];
27000
- if (n.length < 2) return sb(n.map(ib), t);
27020
+ if (n.length < 2) return ob(n.map(rb), t);
27001
27021
  let r = n[n.length - 1], i = n[n.length - 2];
27002
- return rb(r, i) && (ob(r), ob(i), n[n.length - 2] = ab(i, r), n.pop()), sb(n, t);
27022
+ return nb(r, i) && (ab(r), ab(i), n[n.length - 2] = ib(i, r), n.pop()), ob(n, t);
27003
27023
  }
27004
- function rb(e, t) {
27024
+ function nb(e, t) {
27005
27025
  let n = e.mimetype === "text/plain" && t.mimetype === "text/plain";
27006
27026
  if (!n) return !1;
27007
27027
  let r = e.channel === t.channel, i = e.channel !== "stdin";
27008
27028
  return n && r && i;
27009
27029
  }
27010
- function ib(e) {
27011
- return e instanceof tb ? e : typeof e.data == "string" ? tb.create(e) : e;
27030
+ function rb(e) {
27031
+ return e instanceof eb ? e : typeof e.data == "string" ? eb.create(e) : e;
27012
27032
  }
27013
- function ab(e, t) {
27014
- return e instanceof tb ? e.appendData(t.data) : tb.create(e).appendData(t.data);
27033
+ function ib(e, t) {
27034
+ return e instanceof eb ? e.appendData(t.data) : eb.create(e).appendData(t.data);
27015
27035
  }
27016
- function ob(e) {
27036
+ function ab(e) {
27017
27037
  N(typeof e.data == "string", "expected string output");
27018
27038
  }
27019
- function sb(e, t) {
27039
+ function ob(e, t) {
27020
27040
  let n = 0, r;
27021
27041
  for (r = e.length - 1; r >= 0 && n < t; r--) {
27022
27042
  let t = e[r];
@@ -27046,6 +27066,9 @@ function sb(e, t) {
27046
27066
  }
27047
27067
  //#endregion
27048
27068
  //#region src/core/cells/cell.ts
27069
+ function sb(e) {
27070
+ return (e.at(-1)?.id ?? 0) + 1;
27071
+ }
27049
27072
  function cb(e, t) {
27050
27073
  let n = { ...e };
27051
27074
  switch (t.status) {
@@ -27072,10 +27095,17 @@ function cb(e, t) {
27072
27095
  mimetype: e.mimetype,
27073
27096
  data: e.data,
27074
27097
  timestamp: e.timestamp,
27098
+ id: e.id,
27075
27099
  response: e.response ?? ""
27076
27100
  } : e));
27077
27101
  let a = t.console;
27078
- a != null && (i = nb(Array.isArray(a) ? a : [...i, a])), n.consoleOutputs = i, n.outline = Jy(n.output);
27102
+ a != null && (i = tb(Array.isArray(a) ? a.map((e, t) => ({
27103
+ ...e,
27104
+ id: t + 1
27105
+ })) : [...i, {
27106
+ ...a,
27107
+ id: sb(i)
27108
+ }])), n.consoleOutputs = i, n.outline = qy(n.output);
27079
27109
  let o = [t.console].flat().filter(Boolean).filter((e) => e.channel === "pdb");
27080
27110
  return o.length > 0 && o.some((e) => e.data === "start") && (n.debuggerActive = !0), n;
27081
27111
  }
@@ -28225,7 +28255,7 @@ var { reducer: dx, addMiddleware: fx, createActions: px, useActions: mx, valueAt
28225
28255
  let i = r.indexOfOrThrow(n), o = i === 0 ? 1 : i - 1, s = null;
28226
28256
  r.length > 1 && (s = r.atOrThrow(o));
28227
28257
  let c = (e.cellHandles[n].current?.editorView)?.state.toJSON({ history: Tt });
28228
- c && (c.doc = e.cellData[n].code), Nx(n);
28258
+ c && (c.doc = e.cellData[n].code), Px(n);
28229
28259
  let l = e.cellData[n];
28230
28260
  return {
28231
28261
  ...e,
@@ -28417,9 +28447,9 @@ var { reducer: dx, addMiddleware: fx, createActions: px, useActions: mx, valueAt
28417
28447
  ...a !== void 0 && { name: a },
28418
28448
  ...o !== void 0 && { config: o }
28419
28449
  };
28420
- if (!Xy() || !Zy(i)) {
28450
+ if (!Yy() || !Xy(i)) {
28421
28451
  let e = n.cellHandles[i].current;
28422
- e?.editorViewOrNull && zy(e.editorViewOrNull, r);
28452
+ e?.editorViewOrNull && Ry(e.editorViewOrNull, r);
28423
28453
  }
28424
28454
  return {
28425
28455
  ...e,
@@ -28462,6 +28492,7 @@ var { reducer: dx, addMiddleware: fx, createActions: px, useActions: mx, valueAt
28462
28492
  mimetype: n.mimetype,
28463
28493
  data: n.data,
28464
28494
  timestamp: n.timestamp,
28495
+ id: n.id,
28465
28496
  response: n.mimetype === "text/password" ? "" : r
28466
28497
  }, {
28467
28498
  ...e,
@@ -28586,7 +28617,7 @@ var { reducer: dx, addMiddleware: fx, createActions: px, useActions: mx, valueAt
28586
28617
  cellLogs: []
28587
28618
  }),
28588
28619
  collapseCell: (e, t) => {
28589
- let { cellId: n } = t, r = e.cellIds.findWithId(n), i = r.topLevelIds.map((t) => e.cellRuntime[t].outline), a = Yy(r.indexOfOrThrow(n), i);
28620
+ let { cellId: n } = t, r = e.cellIds.findWithId(n), i = r.topLevelIds.map((t) => e.cellRuntime[t].outline), a = Jy(r.indexOfOrThrow(n), i);
28590
28621
  if (!a) return e;
28591
28622
  let o = r.atOrThrow(a[1]);
28592
28623
  return {
@@ -28608,7 +28639,7 @@ var { reducer: dx, addMiddleware: fx, createActions: px, useActions: mx, valueAt
28608
28639
  cellIds: e.cellIds.transformAll((t) => {
28609
28640
  let n = t.topLevelIds.map((t) => e.cellRuntime[t].outline), r = [...t.nodes], i = /* @__PURE__ */ new Map(), a = [], o = r.length - 1;
28610
28641
  for (; o >= 0;) {
28611
- let e = Yy(o, n);
28642
+ let e = Jy(o, n);
28612
28643
  if (e) {
28613
28644
  let n = o, r = e[1], s = i.get(r) ?? r;
28614
28645
  i.set(r, n);
@@ -28638,8 +28669,8 @@ var { reducer: dx, addMiddleware: fx, createActions: px, useActions: mx, valueAt
28638
28669
  splitCell: (e, t) => {
28639
28670
  let { cellId: n } = t, r = e.cellIds.findWithId(n), i = r.indexOfOrThrow(n), a = e.cellData[n], o = e.cellHandles[n].current;
28640
28671
  if (o?.editorView == null) return e;
28641
- let { beforeCursorCode: s, afterCursorCode: c } = By(o.editorView);
28642
- zy(o.editorView, s);
28672
+ let { beforeCursorCode: s, afterCursorCode: c } = zy(o.editorView);
28673
+ Ry(o.editorView, s);
28643
28674
  let l = qr.create();
28644
28675
  return {
28645
28676
  ...e,
@@ -28675,7 +28706,7 @@ var { reducer: dx, addMiddleware: fx, createActions: px, useActions: mx, valueAt
28675
28706
  },
28676
28707
  undoSplitCell: (e, t) => {
28677
28708
  let { cellId: n, snapshot: r } = t, i = e.cellData[n], a = e.cellHandles[n].current;
28678
- return a?.editorView == null ? e : (zy(a.editorView, r), {
28709
+ return a?.editorView == null ? e : (Ry(a.editorView, r), {
28679
28710
  ...e,
28680
28711
  cellIds: e.cellIds.transformWithCellId(n, (e) => {
28681
28712
  let t = e.indexOfOrThrow(n) + 1;
@@ -28809,8 +28840,8 @@ var xx = A((e) => {
28809
28840
  return null;
28810
28841
  }).filter(Boolean);
28811
28842
  }), Sx = A((e) => {
28812
- let { cellIds: t, cellRuntime: n } = e($);
28813
- return qy(t.inOrderIds.map((e) => n[e].outline));
28843
+ let t = e(yx), n = e(kx);
28844
+ return Ky(t.inOrderIds.map((e) => n[e].outline));
28814
28845
  });
28815
28846
  A((e) => e(xx).length);
28816
28847
  var Cx = Ie(A((e) => {
@@ -28822,27 +28853,29 @@ var wx = () => Me(yx), Tx = () => Me(Cx), Ex = () => j.get($), Dx = () => j.get(
28822
28853
  let { cellIds: e, cellData: t } = j.get($);
28823
28854
  return e.inOrderIds.map((e) => t[e]?.name).filter(Boolean);
28824
28855
  };
28825
- br(pr($, (e) => e.cellIds.inOrderIds.map((t) => e.cellData[t]))), A((e) => e($).cellRuntime), A((e) => Hc(e($))), A((e) => {
28856
+ br(pr($, (e) => e.cellIds.inOrderIds.map((t) => e.cellData[t])));
28857
+ var kx = A((e) => e($).cellRuntime);
28858
+ A((e) => Hc(e($))), A((e) => {
28826
28859
  let { cellRuntime: t } = e($);
28827
28860
  return Object.entries(t).every(([e, t]) => t.status !== "running" || e === "__scratch__");
28828
28861
  }), A((e) => Uc(e($)));
28829
- var kx = A((e) => e($).cellIds.colLength);
28862
+ var Ax = A((e) => e($).cellIds.colLength);
28830
28863
  A((e) => e($).cellIds.idLength > 0), A((e) => e($).cellIds.getColumnIds());
28831
- var Ax = lr((e) => A((t) => t($).cellData[e])), jx = lr((e) => A((t) => t($).cellRuntime[e])), Mx = lr((e) => A((t) => t($).cellHandles[e]));
28832
- function Nx(e) {
28833
- Ax.remove(e), jx.remove(e), Mx.remove(e);
28864
+ var jx = lr((e) => A((t) => t($).cellData[e])), Mx = lr((e) => A((t) => t($).cellRuntime[e])), Nx = lr((e) => A((t) => t($).cellHandles[e]));
28865
+ function Px(e) {
28866
+ jx.remove(e), Mx.remove(e), Nx.remove(e);
28834
28867
  }
28835
- var Px = (e) => {
28868
+ var Fx = (e) => {
28836
28869
  let { cellHandles: t } = j.get($);
28837
28870
  return t[e].current?.editorView;
28838
- }, Fx = (e) => (Ei.promote(e), Px(e));
28839
- function Ix(e) {
28871
+ }, Ix = (e) => (Ei.promote(e), Fx(e));
28872
+ function Lx(e) {
28840
28873
  let t = (0, Tr.c)(2), n;
28841
28874
  return t[0] === e ? n = t[1] : (n = e === void 0 ? {} : e, t[0] = e, t[1] = n), mx(n);
28842
28875
  }
28843
28876
  //#endregion
28844
28877
  //#region src/core/errors/error-entries.ts
28845
- function Lx(e) {
28878
+ function Rx(e) {
28846
28879
  if (zc(e.mimetype)) {
28847
28880
  if (!Array.isArray(e.data)) return null;
28848
28881
  let t = e.data.filter((e) => !e.type.includes("ancestor"));
@@ -28853,45 +28886,45 @@ function Lx(e) {
28853
28886
  tracebackHtml: e.data
28854
28887
  } : null;
28855
28888
  }
28856
- function Rx(e) {
28889
+ function zx(e) {
28857
28890
  return e.some((e) => "traceback" in e && e.traceback);
28858
28891
  }
28859
- function zx(e) {
28892
+ function Bx(e) {
28860
28893
  let t = e?.find((e) => Bc(e.mimetype));
28861
28894
  if (!(!t || typeof t.data != "string" || t.data.length === 0)) return t.data;
28862
28895
  }
28863
- function Bx(e, t) {
28896
+ function Vx(e, t) {
28864
28897
  if (e.tracebackHtml) return e.tracebackHtml;
28865
- if (!Rx(e.errorData)) return zx(t);
28898
+ if (!zx(e.errorData)) return Bx(t);
28866
28899
  }
28867
- function Vx(e) {
28900
+ function Hx(e) {
28868
28901
  let { cellIds: t, cellRuntime: n, cellData: r } = e.get($), i = [];
28869
28902
  for (let [e, a] of t.inOrderIds.entries()) {
28870
28903
  let t = n[a], o = t.output;
28871
28904
  if (!o || !Vc(o.mimetype)) continue;
28872
- let s = Lx(o);
28905
+ let s = Rx(o);
28873
28906
  if (!s) continue;
28874
- let c = gv(r[a].name, e), l = r[a].lastCodeRun ?? r[a].code;
28907
+ let c = hv(r[a].name, e), l = r[a].lastCodeRun ?? r[a].code;
28875
28908
  i.push({
28876
28909
  cellId: a,
28877
28910
  cellName: c,
28878
28911
  cellCode: l,
28879
28912
  errorData: s.errorData,
28880
- tracebackHtml: Bx(s, t.consoleOutputs)
28913
+ tracebackHtml: Vx(s, t.consoleOutputs)
28881
28914
  });
28882
28915
  }
28883
28916
  return i;
28884
28917
  }
28885
- function Hx(e) {
28918
+ function Ux(e) {
28886
28919
  return e.type === "setup-refs" ? "The setup cell cannot have references" : e.type === "cycle" ? "This cell is in a cycle" : e.type === "multiple-defs" ? `The variable '${e.name}' was defined by another cell` : e.type === "import-star" || e.type === "ancestor-stopped" || e.type === "ancestor-prevented" || e.type === "exception" || e.type === "strict-exception" ? e.msg : e.type === "interruption" ? "This cell was interrupted and needs to be re-run" : e.type === "syntax" || e.type === "unknown" || e.type === "sql-error" ? e.msg : e.type === "internal" ? e.msg || "An internal error occurred" : (T(e), "Unknown error");
28887
28920
  }
28888
- function Ux(e) {
28889
- let t = Hx(e);
28921
+ function Wx(e) {
28922
+ let t = Ux(e);
28890
28923
  return "traceback" in e && e.traceback && (t += `\n\nTraceback:\n${Kb(e.traceback)}`), t;
28891
28924
  }
28892
- function Wx(e) {
28925
+ function Gx(e) {
28893
28926
  let t = [e.cellName];
28894
- return e.tracebackHtml && t.push(Kb(e.tracebackHtml)), e.errorData.length > 0 && t.push(e.errorData.map(Ux).join("\n\n")), t.join("\n\n");
28927
+ return e.tracebackHtml && t.push(Kb(e.tracebackHtml)), e.errorData.length > 0 && t.push(e.errorData.map(Wx).join("\n\n")), t.join("\n\n");
28895
28928
  }
28896
28929
  //#endregion
28897
- export { Vf as $, Er as $t, Vy as A, Zc as At, mv as B, $r as Bt, qb as C, Al as Ct, ub as D, nl as Dt, Mb as E, hl as Et, xv as F, hi as Ft, wm as G, Gr as Gt, dv as H, ti as Ht, Sv as I, ui as It, Pp as J, Br as Jt, Dm as K, Xr as Kt, gv as L, ci as Lt, Gv as M, Qc as Mt, Rv as N, $c as Nt, db as O, el as Ot, Lv as P, Mc as Pt, Hf as Q, Nr as Qt, hv as R, li as Rt, ox as S, Pl as St, zb as T, _l as Tt, W_ as U, Zr as Ut, fv as V, ei as Vt, Hm as W, Jr as Wt, yp as X, Fr as Xt, Np as Y, Vr as Yt, np as Z, Ir as Zt, kx as _, pn as _n, Wl as _t, Ax as a, Pn as an, Hd as at, wx as b, Hl as bt, Fx as c, kn as cn, Ed as ct, Dx as d, Cn as dn, gd as dt, cr as en, bf as et, Ex as f, Sn as fn, dd as ft, Sx as g, hn as gn, Jl as gt, $ as h, gn as hn, ql as ht, Vx as i, Ln as in, Jd as it, Uv as j, Gc as jt, Ky as k, tl as kt, Px as l, En as ln, Cd as lt, ux as m, yn as mn, hu as mt, Wx as n, pr as nn, Qd as nt, yx as o, Nn as on, zd as ot, bx as p, xn as pn, cd as pt, Cm as q, Yr as qt, Ux as r, Bn as rn, Xd as rt, px as s, jn as sn, Td as st, Hx as t, wr as tn, sf as tt, Ox as u, wn as un, vd as ut, dx as v, Kl as vt, Kb as w, Fl as wt, Tx as x, Bl as xt, Ix as y, Gl as yt, _v as z, ri as zt };
28930
+ export { bf as $, cr as $t, By as A, Gc as At, pv as B, ei as Bt, qb as C, Fl as Ct, ub as D, el as Dt, Mb as E, nl as Et, bv as F, ui as Ft, wm as G, Xr as Gt, uv as H, Zr as Ht, xv as I, ci as It, Np as J, Vr as Jt, Cm as K, Yr as Kt, hv as L, li as Lt, Wv as M, $c as Mt, Lv as N, Mc as Nt, db as O, tl as Ot, Iv as P, hi as Pt, Vf as Q, Er as Qt, mv as R, ri as Rt, ox as S, Al as St, zb as T, hl as Tt, U_ as U, Jr as Ut, dv as V, ti as Vt, Vm as W, Gr as Wt, np as X, Ir as Xt, yp as Y, Fr as Yt, Hf as Z, Nr as Zt, Ax as _, Kl as _t, jx as a, Nn as an, zd as at, wx as b, Bl as bt, Ix as c, En as cn, Cd as ct, Dx as d, Sn as dn, dd as dt, wr as en, sf as et, Ex as f, xn as fn, cd as ft, Sx as g, pn as gn, Wl as gt, $ as h, hn, Jl as ht, Hx as i, Pn as in, Hd as it, Hv as j, Qc as jt, Gy as k, Zc as kt, Fx as l, wn as ln, vd as lt, ux as m, gn as mn, ql as mt, Gx as n, Bn as nn, Xd as nt, yx as o, jn as on, Td as ot, bx as p, yn as pn, hu as pt, Pp as q, Br as qt, Wx as r, Ln as rn, Jd as rt, px as s, kn as sn, Ed as st, Ux as t, pr as tn, Qd as tt, Ox as u, Cn as un, gd as ut, dx as v, Gl as vt, Kb as w, _l as wt, Tx as x, Pl as xt, Lx as y, Hl as yt, gv as z, $r as zt };