@kedem/okdb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/LICENSE +57 -0
  2. package/README.md +344 -0
  3. package/banner.jpg +0 -0
  4. package/bin/okdb.js +2 -0
  5. package/docs/OKDB-ARCHITECTURE.md +1036 -0
  6. package/docs/auth-and-sync.md +558 -0
  7. package/docs/auth-permissions.md +143 -0
  8. package/docs/change-log.md +169 -0
  9. package/docs/data-model.md +174 -0
  10. package/docs/embeddings.md +338 -0
  11. package/docs/files.md +131 -0
  12. package/docs/fts.md +139 -0
  13. package/docs/functions.md +514 -0
  14. package/docs/getting-started.md +233 -0
  15. package/docs/http-api.md +705 -0
  16. package/docs/index.md +115 -0
  17. package/docs/indexes.md +207 -0
  18. package/docs/logging.md +116 -0
  19. package/docs/manifest.json +38 -0
  20. package/docs/migration.md +154 -0
  21. package/docs/pipelines.md +598 -0
  22. package/docs/plugins.md +144 -0
  23. package/docs/querying.md +204 -0
  24. package/docs/queue.md +637 -0
  25. package/docs/sync.md +156 -0
  26. package/docs/transactions.md +140 -0
  27. package/docs/ttl.md +375 -0
  28. package/okdb.js +1 -0
  29. package/package.json +26 -0
  30. package/public/admin-app.js +1 -0
  31. package/public/android-chrome-192x192.png +0 -0
  32. package/public/android-chrome-512x512.png +0 -0
  33. package/public/apple-touch-icon.png +0 -0
  34. package/public/components/admin-route-host.ok.js +1 -0
  35. package/public/components/env-picker.ok.js +1 -0
  36. package/public/components/field-path-input.ok.js +1 -0
  37. package/public/components/field.html +6 -0
  38. package/public/components/geo-map.ok.js +1 -0
  39. package/public/components/ok-cron-input.ok.js +1 -0
  40. package/public/components/ok-dropzone.ok.js +1 -0
  41. package/public/components/ok-js-input.ok.js +1 -0
  42. package/public/components/ok-json-input.ok.js +1 -0
  43. package/public/components/ok-text-monaco-input.ok.js +1 -0
  44. package/public/components/theme-toggle.ok.js +1 -0
  45. package/public/favicon-16x16.png +0 -0
  46. package/public/favicon-32x32.png +0 -0
  47. package/public/favicon.ico +0 -0
  48. package/public/images/logo.png +0 -0
  49. package/public/images/logo.svg +333 -0
  50. package/public/index.html +6 -0
  51. package/public/layouts/_default.ok.html +1 -0
  52. package/public/layouts/okdb-cube.ok.html +1 -0
  53. package/public/login-app.js +1 -0
  54. package/public/login.html +1 -0
  55. package/public/modules/ok.js +1 -0
  56. package/public/sections/api/index.ok.html +1 -0
  57. package/public/sections/api/parts/api-endpoint.ok.js +1 -0
  58. package/public/sections/auth/index.ok.html +1 -0
  59. package/public/sections/auth/modals/create-token-modal.ok.js +1 -0
  60. package/public/sections/auth/modals/edit-token-modal.ok.js +1 -0
  61. package/public/sections/auth/modals/perm-info-popover.ok.js +1 -0
  62. package/public/sections/auth/parts/token-detail.ok.js +1 -0
  63. package/public/sections/auth/parts/token-list.ok.js +1 -0
  64. package/public/sections/db/index.ok.html +1 -0
  65. package/public/sections/db/modals/add-item-modal.ok.js +1 -0
  66. package/public/sections/db/modals/create-env-modal.ok.js +1 -0
  67. package/public/sections/db/modals/create-fts-modal.ok.js +1 -0
  68. package/public/sections/db/modals/create-index-modal.ok.js +1 -0
  69. package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -0
  70. package/public/sections/db/modals/demo-env-modal.ok.js +1 -0
  71. package/public/sections/db/modals/remove-env-modal.ok.js +1 -0
  72. package/public/sections/db/modals/schema-edit-modal.ok.js +1 -0
  73. package/public/sections/db/parts/db-overview.ok.js +1 -0
  74. package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -0
  75. package/public/sections/db/parts/edit-row.ok.js +1 -0
  76. package/public/sections/db/parts/tm-timeline.ok.js +1 -0
  77. package/public/sections/db/parts/type-changelog.ok.js +1 -0
  78. package/public/sections/db/parts/type-list.ok.js +1 -0
  79. package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -0
  80. package/public/sections/db/parts/type-schema-tab.ok.js +1 -0
  81. package/public/sections/db/parts/type-viewer.ok.js +1 -0
  82. package/public/sections/db/parts/type-violations-tab.ok.js +1 -0
  83. package/public/sections/docs/index.ok.html +1 -0
  84. package/public/sections/embeddings/index.ok.html +1 -0
  85. package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -0
  86. package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -0
  87. package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -0
  88. package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -0
  89. package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -0
  90. package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -0
  91. package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -0
  92. package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -0
  93. package/public/sections/embeddings/parts/embed-overview.ok.js +1 -0
  94. package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -0
  95. package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -0
  96. package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -0
  97. package/public/sections/embeddings/parts/engines-overview.ok.js +1 -0
  98. package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -0
  99. package/public/sections/engines/engine-panel-shared-style.js +1 -0
  100. package/public/sections/engines/engine-ui-utils.js +1 -0
  101. package/public/sections/engines/index.ok.html +1 -0
  102. package/public/sections/engines/modals/engine-modal.ok.js +1 -0
  103. package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -0
  104. package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -0
  105. package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -0
  106. package/public/sections/engines/parts/engine-resource-card.ok.js +1 -0
  107. package/public/sections/engines/parts/engine-row-item.ok.js +1 -0
  108. package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -0
  109. package/public/sections/files/index.ok.html +1 -0
  110. package/public/sections/files/parts/files-blob-status.ok.js +1 -0
  111. package/public/sections/files/parts/files-collection-list.ok.js +1 -0
  112. package/public/sections/files/parts/files-collection-panel.ok.js +1 -0
  113. package/public/sections/files/parts/files-file-list.ok.js +1 -0
  114. package/public/sections/files/parts/files-overview.ok.js +1 -0
  115. package/public/sections/files/parts/files-path-browser.ok.js +1 -0
  116. package/public/sections/files/parts/files-upload-panel.ok.js +1 -0
  117. package/public/sections/functions/index.ok.html +1 -0
  118. package/public/sections/functions/modals/function-modal.ok.js +1 -0
  119. package/public/sections/functions/parts/function-detail.ok.js +1 -0
  120. package/public/sections/functions/parts/function-logs.ok.js +1 -0
  121. package/public/sections/functions/parts/function-runner.ok.js +1 -0
  122. package/public/sections/functions/parts/functions-list.ok.js +1 -0
  123. package/public/sections/license/index.ok.html +1 -0
  124. package/public/sections/license/parts/license-panel.ok.js +1 -0
  125. package/public/sections/processors/index.ok.html +1 -0
  126. package/public/sections/queue/index.ok.html +1 -0
  127. package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -0
  128. package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -0
  129. package/public/sections/queue/modals/edit-job-modal.ok.js +1 -0
  130. package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -0
  131. package/public/sections/queue/modals/job-type-modal.ok.js +1 -0
  132. package/public/sections/queue/parts/ok-job-form.ok.js +1 -0
  133. package/public/sections/queue/parts/queue-buckets.ok.js +1 -0
  134. package/public/sections/queue/parts/queue-job-types.ok.js +1 -0
  135. package/public/sections/queue/parts/queue-jobs.ok.js +1 -0
  136. package/public/sections/queue/parts/queue-types.ok.js +1 -0
  137. package/public/sections/queue/parts/queue-workers.ok.js +1 -0
  138. package/public/sections/sync/index.ok.html +5 -0
  139. package/public/sections/sync/parts/sync-node-detail.ok.js +1 -0
  140. package/public/sections/sync/parts/sync-retention.ok.js +1 -0
  141. package/public/sections/sync/parts/sync-topology.ok.js +1 -0
  142. package/public/sections/system/index.ok.html +1 -0
  143. package/public/sections/system/modals/data-ops-modal.ok.js +1 -0
  144. package/public/sections/system/parts/system-api-panel.ok.js +1 -0
  145. package/public/sections/system/parts/system-auth-panel.ok.js +1 -0
  146. package/public/sections/system/parts/system-log-history.ok.js +1 -0
  147. package/public/sections/system/parts/system-log.ok.js +1 -0
  148. package/public/sections/system/parts/system-status.ok.js +1 -0
  149. package/public/sections/system/parts/system-sync-panel.ok.js +1 -0
  150. package/public/sections/views/index.ok.html +1 -0
  151. package/public/sections/views/modals/create-view-modal.ok.js +1 -0
  152. package/public/sections/views/parts/view-detail.ok.js +1 -0
  153. package/public/sections/views/parts/views-list.ok.js +1 -0
  154. package/public/sections/views/parts/views-overview.ok.js +1 -0
  155. package/public/setup-app.js +1 -0
  156. package/public/setup.html +1 -0
  157. package/public/site.webmanifest +1 -0
  158. package/public/stores/auth-store.js +1 -0
  159. package/public/stores/events-store.js +1 -0
  160. package/public/stores/functions-store.js +1 -0
  161. package/public/stores/okdb-store.js +1 -0
  162. package/public/stores/theme-store.js +1 -0
  163. package/public/styles.css +1 -0
  164. package/public/test-cron-input.html +10 -0
  165. package/public/test-json-input.html +101 -0
  166. package/public/util/permissions.js +1 -0
  167. package/public/util/sift-schema.js +1 -0
  168. package/public/vendor/okjs/ok.esm.min.js +2 -0
  169. package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -0
  170. package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -0
  171. package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -0
  172. package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -0
  173. package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -0
  174. package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -0
  175. package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -0
  176. package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -0
  177. package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -0
  178. package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -0
  179. package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -0
  180. package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -0
  181. package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -0
  182. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -0
  183. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -0
  184. package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -0
  185. package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -0
  186. package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -0
  187. package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -0
  188. package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -0
  189. package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -0
  190. package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -0
  191. package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -0
  192. package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -0
  193. package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -0
  194. package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -0
  195. package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -0
  196. package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -0
  197. package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -0
  198. package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -0
  199. package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -0
  200. package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -0
  201. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -0
  202. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -0
  203. package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -0
  204. package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -0
  205. package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -0
  206. package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -0
  207. package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -0
  208. package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -0
  209. package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -0
  210. package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -0
  211. package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -0
  212. package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -0
  213. package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -0
  214. package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -0
  215. package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -0
  216. package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -0
  217. package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -0
  218. package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -0
  219. package/public/vendor/okjs/toolkit/manifest.js +1 -0
  220. package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -0
  221. package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -0
  222. package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -0
  223. package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -0
  224. package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -0
  225. package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -0
  226. package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -0
  227. package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -0
  228. package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -0
  229. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -0
  230. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -0
  231. package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -0
  232. package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -0
  233. package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -0
  234. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -0
  235. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -0
  236. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -0
  237. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -0
  238. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -0
  239. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -0
  240. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -0
  241. package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -0
  242. package/public/view-models/type-query-vm.js +1 -0
  243. package/types/environment.d.ts +130 -0
  244. package/types/errors.d.ts +98 -0
  245. package/types/features/admin.d.ts +4 -0
  246. package/types/features/api.d.ts +18 -0
  247. package/types/features/auth.d.ts +31 -0
  248. package/types/features/embeddings.d.ts +39 -0
  249. package/types/features/engines.d.ts +23 -0
  250. package/types/features/files.d.ts +29 -0
  251. package/types/features/fts.d.ts +25 -0
  252. package/types/features/functions.d.ts +23 -0
  253. package/types/features/mcp.d.ts +17 -0
  254. package/types/features/pipelines.d.ts +19 -0
  255. package/types/features/queue.d.ts +189 -0
  256. package/types/features/sync.d.ts +34 -0
  257. package/types/features/time-machine.d.ts +32 -0
  258. package/types/features/views.d.ts +16 -0
  259. package/types/index.d.ts +153 -0
  260. package/types/options.d.ts +202 -0
@@ -0,0 +1 @@
1
+ function _0x7fa0(_0x4d46d8,_0x4a6e44){_0x4d46d8=_0x4d46d8-0x18c;const _0x9e935c=_0x9e93();let _0x7fa0c3=_0x9e935c[_0x4d46d8];return _0x7fa0c3;}const _0x5bb13f=_0x7fa0;(function(_0x210072,_0x4e73e6){const _0x2cfd68=_0x7fa0,_0x33ec8e=_0x210072();while(!![]){try{const _0x538ed5=parseInt(_0x2cfd68(0x36b))/0x1+parseInt(_0x2cfd68(0x369))/0x2+parseInt(_0x2cfd68(0x3e2))/0x3*(-parseInt(_0x2cfd68(0x3a9))/0x4)+parseInt(_0x2cfd68(0x352))/0x5*(-parseInt(_0x2cfd68(0x2c9))/0x6)+parseInt(_0x2cfd68(0x2b2))/0x7*(-parseInt(_0x2cfd68(0x3cd))/0x8)+parseInt(_0x2cfd68(0x3ca))/0x9+parseInt(_0x2cfd68(0x295))/0xa*(-parseInt(_0x2cfd68(0x288))/0xb);if(_0x538ed5===_0x4e73e6)break;else _0x33ec8e['push'](_0x33ec8e['shift']());}catch(_0x5dfc80){_0x33ec8e['push'](_0x33ec8e['shift']());}}}(_0x9e93,0x63f63));function _0x9e93(){const _0x2d1eec=['\x20is\x20a\x20','Bistro','Onboarding\x20Flow','A/B\x20Testing\x20Framework','Electronics','desktop','Grace','Morning','trim','Roberts','🗺️','Love\x20it!','Cat','Architecture\x20enthusiast\x20and\x20frequent\x20museum-goer\x20with\x20a\x20love\x20for\x20strong\x20espresso.','Chrome','\x0a<div\x20class=\x22dm\x22>\x0a\x0a\x20\x20<!--\x20══\x20STEP:\x20Choose\x20preset\x20══════════════════════════════════════════════════\x20-->\x0a\x20\x20<if\x20:=\x22step\x20===\x20\x27choose\x27\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22dm-hero\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-hero__sparkle\x22>✦</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-hero__title\x22>Generate\x20Demo\x20Environment</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-hero__sub\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Choose\x20a\x20preset\x20to\x20instantly\x20fill\x20a\x20new\x20environment\x20with\x20realistic\x20data,\x0a\x20\x20\x20\x20\x20\x20\x20\x20indexes,\x20and\x20full-text\x20search\x20—\x20ready\x20to\x20explore\x20in\x20seconds.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20class=\x22dm-presets\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20as=\x22repeat\x22\x20:of=\x22PRESETS\x22\x20let:item=\x22p\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20class=\x22dm-preset\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22p.badge\x20===\x20\x27geo\x27\x20?\x20\x27dm-preset--geo\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22selectPreset(p)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27--pc:\x27\x20+\x20p.color\x20+\x20\x27;\x20--pg:\x27\x20+\x20p.glow\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-preset__bg\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-preset__icon\x22>{{\x20p.icon\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-preset__name\x22>{{\x20p.name\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-preset__tag\x22>{{\x20p.tagline\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-preset__chips\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20p.types.length\x20}}\x20types</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-chip-dot\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20p.types.reduce((s,t)=>s+t.defaultCount,0).toLocaleString()\x20}}+\x20records</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.fts.length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-chip-dot\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>FTS</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.badge\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-chip-dot\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--pc);\x20font-weight:600;\x22>📍\x20GEO</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-preset__arrow\x22>→</div>\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20class=\x22dm-footer\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20══\x20STEP:\x20Configure\x20══════════════════════════════════════════════════════\x20-->\x0a\x20\x20<if\x20:=\x22step\x20===\x20\x27configure\x27\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:18px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22back()\x22\x20class=\x22dm-back-btn\x22\x20title=\x22Back\x20to\x20presets\x22>←</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-preset-badge\x22\x20:style=\x22\x27--pc:\x27\x20+\x20preset.color\x20+\x20\x27;\x20--pg:\x27\x20+\x20preset.glow\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20preset.icon\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:700;\x20font-size:15px;\x22>{{\x20preset.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-size:12px;\x22>·\x20Configure</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Env\x20name\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20opacity:.55;\x20letter-spacing:.03em;\x22>Environment\x20name</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22envName\x22\x20@input=\x22envName\x20=\x20$el.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-family:monospace;\x20font-size:13px;\x22\x20autofocus\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.\x20demo-shop\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Scale\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20opacity:.55;\x20letter-spacing:.03em;\x22>Dataset\x20scale</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20as=\x22repeat\x22\x20:of=\x22SCALE_OPTIONS\x22\x20let:item=\x22s\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22scale\x20=\x20s.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22dm-scale-btn\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22scale\x20===\x20s.value\x20?\x20\x27dm-scale-btn--active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22scale\x20===\x20s.value\x20?\x20\x27--pc:\x27\x20+\x20preset.color\x20:\x20\x27\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20s.label\x20}}&nbsp;<span\x20style=\x22font-size:10px;\x20opacity:.55;\x22>{{\x20s.hint\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Type\x20counts\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20opacity:.55;\x20letter-spacing:.03em;\x22>Types\x20&amp;\x20counts</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-type-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20as=\x22repeat\x22\x20:of=\x22preset.types\x22\x20let:item=\x22t\x22\x20class=\x22dm-type-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-type-row__name\x22>{{\x20t.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-type-row__bar-wrap\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-type-row__bar\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27width:\x27\x20+\x20Math.min(100,\x20Math.round((typeCounts[t.key]\x20??\x20t.defaultCount)\x20*\x20scale\x20/\x20(t.defaultCount\x20*\x204)\x20*\x20100))\x20+\x20\x27%;\x20background:\x27\x20+\x20preset.color\x20+\x20\x2755;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-type-row__count\x22\x20:style=\x22\x27color:\x27\x20+\x20preset.color\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20Math.max(1,\x20Math.round((typeCounts[t.key]\x20??\x20t.defaultCount)\x20*\x20scale)).toLocaleString()\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Options\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:20px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22dm-check-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22enableIndexes\x22\x20@change=\x22enableIndexes\x20=\x20$el.checked\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Indexes\x20<span\x20style=\x22opacity:.4;\x20font-size:11px;\x22>({{\x20preset.indexes.length\x20}})</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22dm-check-label\x22\x20:style=\x22!preset.fts.length\x20?\x20\x27opacity:.4;\x20pointer-events:none;\x27\x20:\x20\x27\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22enableFts\x22\x20@change=\x22enableFts\x20=\x20$el.checked\x22\x20:disabled=\x22!preset.fts.length\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Full-text\x20search\x20<span\x20style=\x22opacity:.4;\x20font-size:11px;\x22>({{\x20preset.fts.length\x20}})</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Summary\x20pill\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-summary\x22\x20:style=\x22\x27border-color:\x27\x20+\x20preset.color\x20+\x20\x2733;\x20background:\x27\x20+\x20preset.glow\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>Will\x20create</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b\x20:style=\x22\x27color:\x27\x20+\x20preset.color\x20+\x20\x27;\x27\x22>{{\x20totalRecords.toLocaleString()\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>records\x20across</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>{{\x20preset.types.length\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>types</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22enableIndexes\x20&&\x20preset.indexes.length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22color:var(--okdb-purple);\x22>{{\x20preset.indexes.length\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>indexes</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22enableFts\x20&&\x20preset.fts.length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22color:var(--okdb-accent);\x22>FTS</b>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x22>→</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22font-family:monospace;\x20font-size:12px;\x22>{{\x20envName\x20||\x20\x27…\x27\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-footer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22dm-gen-btn\x22\x20:disabled=\x22!envName.trim()\x22\x20@click=\x22start()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27--pc:\x27\x20+\x20preset.color\x20+\x20\x27;\x20--pg:\x27\x20+\x20preset.glow\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20✦\x20Generate\x20{{\x20totalRecords.toLocaleString()\x20}}\x20records\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20══\x20STEP:\x20Generating\x20═════════════════════════════════════════════════════\x20-->\x0a\x20\x20<if\x20:=\x22step\x20===\x20\x27generating\x27\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Header\x20/\x20overall\x20progress\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-gen-header\x22\x20:style=\x22\x27--pc:\x27\x20+\x20preset.color\x20+\x20\x27;\x20--pg:\x27\x20+\x20preset.glow\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20margin-bottom:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-pulsing-icon\x22>{{\x20preset.icon\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Generating\x20{{\x20preset.name\x20}}\x20data…</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:auto;\x20font-family:monospace;\x20font-size:13px;\x20opacity:.55;\x22>{{\x20progressPct\x20}}%</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-progress-track\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-progress-fill\x20dm-progress-fill--shimmer\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27width:\x27\x20+\x20progressPct\x20+\x20\x27%;\x20background:\x27\x20+\x20preset.color\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Per-step\x20rows\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-steps\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20as=\x22repeat\x22\x20:of=\x22progress\x22\x20let:item=\x22p\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22dm-step\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22\x27dm-step--\x27\x20+\x20p.status\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-step__icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.status\x20===\x20\x27running\x27\x22><span\x20class=\x22dm-spin\x22>◌</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.status\x20===\x20\x27done\x27\x22>✓</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.status\x20===\x20\x27error\x27\x22>✗</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.status\x20===\x20\x27pending\x27\x22>{{\x20p.icon\x20}}</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-step__label\x22>{{\x20p.label\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.total\x20>\x201\x20&&\x20p.status\x20!==\x20\x27pending\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-step__count\x22>{{\x20p.done.toLocaleString()\x20}}\x20/\x20{{\x20p.total.toLocaleString()\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.total\x20>\x201\x20&&\x20p.status\x20===\x20\x27running\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-step__mini-bar\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-step__mini-fill\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27width:\x27\x20+\x20(p.total\x20?\x20Math.round(p.done/p.total*100)\x20:\x200)\x20+\x20\x27%;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-error\x22>✗\x20{{\x20error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-footer\x22><button\x20@click=\x22cancel()\x22>Close</button></div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20══\x20STEP:\x20Done\x20═══════════════════════════════════════════════════════════\x20-->\x0a\x20\x20<if\x20:=\x22step\x20===\x20\x27done\x27\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20align-items:center;\x20gap:22px;\x20padding:12px\x200\x206px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-done-orb\x22\x20:style=\x22\x27--pc:\x27\x20+\x20preset.color\x20+\x20\x27;\x20--pg:\x27\x20+\x20preset.glow\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22dm-done-orb__icon\x22>{{\x20preset.icon\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-done-orb__ring\x20dm-done-orb__ring--1\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-done-orb__ring\x20dm-done-orb__ring--2\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:700;\x20margin-bottom:8px;\x22>Environment\x20Ready!</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20font-family:monospace;\x20opacity:.5;\x20letter-spacing:.05em;\x22>{{\x20resultStats?.env\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-done-stats\x22\x20:style=\x22\x27--pc:\x27\x20+\x20preset.color\x20+\x20\x27;\x20--pg:\x27\x20+\x20preset.glow\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat__val\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20resultStats?.totalRecords?.toLocaleString()\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat__lbl\x22>Records</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat-divider\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat__val\x22\x20style=\x22color:var(--okdb-purple);\x22>{{\x20Object.keys(resultStats?.types\x20??\x20{}).length\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat__lbl\x22>Types</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat-divider\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat__val\x22\x20style=\x22color:var(--okdb-accent);\x22>{{\x20resultStats?.indexes\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat__lbl\x22>Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22resultStats?.fts\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat-divider\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat__val\x22\x20style=\x22color:var(--okdb-warning);\x22>{{\x20resultStats?.fts\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22dm-stat__lbl\x22>FTS</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Close</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22dm-gen-btn\x22\x20@click=\x22openEnv()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27--pc:\x27\x20+\x20preset.color\x20+\x20\x27;\x20--pg:\x27\x20+\x20preset.glow\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Open\x20Environment\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>','Frank','architecture','seo','Geo-indexed\x20places\x20&\x20people','emp','Tara','Silver','Boutique','Observability\x20and\x20Monitoring\x20at\x20Scale','cityexplorer','Remote\x20worker\x20building\x20a\x20list\x20of\x20the\x20world\x27s\x20best\x20coworking-friendly\x20cafes.','department','City\x20History','tools','Carter','Wolf','This\x20article\x20covers\x20the\x20essentials\x20you\x20need\x20to\x20know.\x20We\x20explore\x20key\x20concepts,\x20practical\x20examples,\x20and\x20real-world\x20applications\x20that\x20you\x20can\x20apply\x20immediately.\x20Whether\x20you\x27re\x20a\x20beginner\x20or\x20an\x20experienced\x20professional,\x20you\x27ll\x20find\x20actionable\x20insights\x20here.','Dubai','$attr','Data\x20Pipeline','Posts','linkedin.com','Stag','Deli','archived','Sydney','Camera','Fresh','_start','_addStep','Data\x20Warehouse','Finance','Designer','processing','growth','Copper','Liam','Flex','design','Analytics\x20Dashboard','Little','Nook','tags','Rachel','fields','Premium','Vibe','SQL','demo-places','modal','data:','location','Stand','type','Rusty','post','performance','Deep\x20Dive\x20into\x20Machine\x20Learning\x20Basics','Performance','Marketing','cust','count','employees','Amsterdam','tutorial','Space','places','authorId','David','completed','/products','Why\x20','Open','Contemporary\x20space\x20blending\x20design,\x20sustainability\x20and\x20an\x20outstanding\x20experience.','github.com','Nothing\x20groundbreaking\x20but\x20solid\x20and\x20reliable.','replace','defaultCount','Night\x20owl\x20and\x20cocktail\x20connoisseur\x20—\x20on\x20a\x20mission\x20to\x20try\x20every\x20great\x20bar\x20in\x20town.','Great\x20atmosphere\x20and\x20incredibly\x20friendly\x20staff.','Small','shipped','/dashboard','Sam','Jolly','Co-op','Exactly\x20what\x20I\x20needed\x20today\x20—\x20no\x20complaints.','Tokyo','in-progress','Old','Places','var(--okdb-purple)','Clothing','defaultEnv','/pricing','split','\x20in\x20depth\x20—\x20with\x20practical\x20examples.','react','Architecture\x20&\x20Design','Database\x20Indexing\x20Deep\x20Dive','pending','Using\x20it\x20every\x20day.','Tiny','Would\x20recommend\x20to\x20friends.','prod','Supply','40fVCdJt','Local','\x20across\x20the\x20organisation.','Functional\x20Programming\x20in\x20JavaScript','person','Documentation\x20Site','I\x20disagree\x20with\x20some\x20points\x20but\x20overall\x20great\x20read.','Departments','Kotlin','\x20failed','Green','_tick','Modern\x20establishment\x20with\x20a\x20focus\x20on\x20quality\x20and\x20an\x20unforgettable\x20guest\x20experience.','low','Works','Content\x20Hub','Authors','Seoul','Getting\x20Started\x20with\x20Modern\x20Web\x20Development','Large','graphql','Huge','bronze','667938RkUpaV','Security','781106EyeAXm','toLowerCase','Mobile\x20App\x20v2','rev','Nomad','message','Dark','type:','Health','postId','restaurant','types','geo','resultStats','cafe','gym','find','Noah','Iconic\x20neighbourhood\x20institution\x20beloved\x20for\x20its\x20authenticity\x20and\x20character.','api','React','round','Apex','Highly\x20recommend','Lift','Admin\x20Console','category','Alice','Royal','Market','Might\x20return\x20it.','Berlin','proton.me','posts','docker','Smith','user','Press','indexes','completedSteps','step','Fit','Index','lead','Vega','Taylor','Zhang','\x22\x20failed','GraphQL\x20Best\x20Practices\x20for\x20Production','Skyline','css','API','Developer\x20SDK','padStart','/docs','envName','Force','download','yahoo.com','demo-env-modal','content','\x20Place','1044692Gxcbhv','Frontend','UrbanGear','Popular\x20spot\x20among\x20locals\x20for\x20its\x20relaxed\x20vibe\x20and\x20consistently\x20high\x20standards.','Release\x20Automation','SKU-','google.com','Still\x20testing\x20it\x20out.','lon','Living\x20Culture','bar','Posts,\x20authors\x20&\x20comments','Vienna','Exactly\x20as\x20described','Microservices\x20vs\x20Monolith:\x20When\x20to\x20Choose','Urban','Espresso','customers','Rabbit','Lucky','/env/','Foster','length','people','color-mix(in\x20srgb,\x20var(--okdb-success)\x2020%,\x20transparent)','Local\x20guide\x20and\x20travel\x20blogger\x20sharing\x20the\x20best\x20spots\x20in\x20every\x20city\x20I\x20visit.','Lifelong\x20traveller\x20collecting\x20experiences,\x20flavours\x20and\x20stories\x20from\x20around\x20the\x20globe.','Dock','San\x20Francisco','Create\x20environment\x20\x22','Desk','Coordinator','Insert\x20','6107292pBKbhb','purchase','pageview','2574632xKIuuS','/envs','Victoria','Highland','FTS\x20\x22','country','departments','/type/','lat','JavaScript','Lux','level','var(--okdb-danger)','Backpack','Kubernetes','Iris','signup','Goods','testing','key','var(--okdb-accent)','9JArHHz','Garden','Fitness\x20fanatic,\x20craft\x20beer\x20lover\x20and\x20weekend\x20market\x20explorer.','Owl','auth','totalSteps','Bean','push','Lead','Dog','Move','Urban\x20explorer\x20with\x20a\x20passion\x20for\x20hole-in-the-wall\x20spots\x20and\x20authentic\x20local\x20culture.','Mumbai','fts','typeCounts','min','\x0a/*\x20──\x20Root\x20────────────────────────────────────────────────────\x20*/\x0a.dm\x20{\x0a\x20\x20min-width:\x20560px;\x0a\x20\x20max-width:\x20660px;\x0a}\x0a\x0a/*\x20──\x20Hero\x20────────────────────────────────────────────────────\x20*/\x0a.dm-hero\x20{\x0a\x20\x20text-align:\x20center;\x0a\x20\x20padding:\x204px\x200\x2018px;\x0a}\x0a.dm-hero__sparkle\x20{\x0a\x20\x20font-size:\x2030px;\x0a\x20\x20margin-bottom:\x2010px;\x0a\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-accent),\x20var(--okdb-purple)\x2040%,\x20var(--okdb-success)\x2075%,\x20var(--okdb-warning));\x0a\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20background-clip:\x20text;\x0a\x20\x20animation:\x20dm-hue\x206s\x20linear\x20infinite;\x0a\x20\x20display:\x20inline-block;\x0a}\x0a.dm-hero__title\x20{\x0a\x20\x20font-size:\x2020px;\x0a\x20\x20font-weight:\x20700;\x0a\x20\x20margin-bottom:\x208px;\x0a\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-app-fg),\x20#ffffff);\x0a\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20background-clip:\x20text;\x0a}\x0a.dm-hero__sub\x20{\x0a\x20\x20font-size:\x2013px;\x0a\x20\x20opacity:\x20.55;\x0a\x20\x20max-width:\x20400px;\x0a\x20\x20margin:\x200\x20auto;\x0a\x20\x20line-height:\x201.65;\x0a}\x0a\x0a/*\x20──\x20Preset\x20grid\x20─────────────────────────────────────────────\x20*/\x0a.dm-presets\x20{\x0a\x20\x20display:\x20grid;\x0a\x20\x20grid-template-columns:\x201fr\x201fr;\x0a\x20\x20gap:\x2010px;\x0a\x20\x20padding:\x204px\x200\x2018px;\x0a}\x0a.dm-preset\x20{\x0a\x20\x20position:\x20relative;\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20gap:\x205px;\x0a\x20\x20padding:\x2018px\x2018px\x2014px;\x0a\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20border-radius:\x2014px;\x0a\x20\x20cursor:\x20pointer;\x0a\x20\x20text-align:\x20left;\x0a\x20\x20overflow:\x20hidden;\x0a\x20\x20transition:\x20border-color\x20.2s,\x20transform\x20.2s,\x20box-shadow\x20.2s;\x0a}\x0a/*\x20City\x20Explorer:\x20spans\x20both\x20columns\x20with\x20a\x20horizontal\x20layout\x20*/\x0a.dm-preset--geo\x20{\x0a\x20\x20grid-column:\x201\x20/\x20-1;\x0a\x20\x20flex-direction:\x20row;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x2016px;\x0a\x20\x20padding:\x2016px\x2020px;\x0a}\x0a.dm-preset--geo\x20.dm-preset__icon\x20{\x0a\x20\x20font-size:\x2032px;\x0a\x20\x20flex-shrink:\x200;\x0a}\x0a.dm-preset--geo\x20.dm-preset__name,\x0a.dm-preset--geo\x20.dm-preset__tag,\x0a.dm-preset--geo\x20.dm-preset__chips\x20{\x20}\x0a.dm-preset--geo\x20.dm-preset__name\x20{\x20font-size:\x2016px;\x20}\x0a.dm-preset--geo\x20.dm-preset__arrow\x20{\x0a\x20\x20margin-left:\x20auto;\x0a\x20\x20position:\x20static;\x0a\x20\x20font-size:\x2016px;\x0a\x20\x20opacity:\x20.3;\x0a\x20\x20transition:\x20opacity\x20.2s,\x20transform\x20.2s;\x0a}\x0a.dm-preset--geo:hover\x20.dm-preset__arrow\x20{\x20opacity:\x20.9;\x20transform:\x20translateX(4px);\x20}\x0a/*\x20Geo\x20pulse\x20ring\x20on\x20the\x20icon\x20*/\x0a.dm-preset--geo\x20.dm-preset__icon::after\x20{\x0a\x20\x20content:\x20\x27\x27;\x0a\x20\x20position:\x20absolute;\x0a\x20\x20width:\x2048px;\x0a\x20\x20height:\x2048px;\x0a\x20\x20border-radius:\x2050%;\x0a\x20\x20border:\x201px\x20solid\x20var(--pc,\x20var(--okdb-orange));\x0a\x20\x20opacity:\x200;\x0a\x20\x20animation:\x20dm-geo-ring\x202.5s\x20ease-out\x20infinite;\x0a}\x0a.dm-preset__bg\x20{\x0a\x20\x20position:\x20absolute;\x0a\x20\x20inset:\x200;\x0a\x20\x20background:\x20radial-gradient(circle\x20at\x2025%\x2025%,\x20var(--pg,\x20transparent),\x20transparent\x2065%);\x0a\x20\x20opacity:\x200;\x0a\x20\x20transition:\x20opacity\x20.3s;\x0a\x20\x20pointer-events:\x20none;\x0a}\x0a.dm-preset:hover\x20{\x0a\x20\x20border-color:\x20var(--pc,\x20var(--okdb-accent));\x0a\x20\x20box-shadow:\x200\x200\x200\x201px\x20var(--pc,\x20var(--okdb-accent))33,\x200\x208px\x2028px\x20var(--pg,\x20transparent);\x0a\x20\x20transform:\x20translateY(-2px);\x0a}\x0a.dm-preset--geo:hover\x20{\x20transform:\x20translateY(-2px);\x20}\x0a.dm-preset:hover\x20.dm-preset__bg\x20{\x20opacity:\x201;\x20}\x0a.dm-preset__icon\x20{\x0a\x20\x20font-size:\x2026px;\x0a\x20\x20line-height:\x201;\x0a\x20\x20margin-bottom:\x204px;\x0a\x20\x20filter:\x20drop-shadow(0\x200\x208px\x20var(--pc,\x20#fff));\x0a\x20\x20position:\x20relative;\x0a}\x0a.dm-preset__name\x20{\x0a\x20\x20font-size:\x2015px;\x0a\x20\x20font-weight:\x20700;\x0a\x20\x20color:\x20var(--pc,\x20#fff);\x0a\x20\x20position:\x20relative;\x0a}\x0a.dm-preset__tag\x20{\x0a\x20\x20font-size:\x2012px;\x0a\x20\x20opacity:\x20.5;\x0a\x20\x20line-height:\x201.4;\x0a\x20\x20position:\x20relative;\x0a}\x0a.dm-preset__chips\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20gap:\x205px;\x0a\x20\x20font-size:\x2011px;\x0a\x20\x20opacity:\x20.45;\x0a\x20\x20margin-top:\x205px;\x0a\x20\x20position:\x20relative;\x0a\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20align-items:\x20center;\x0a}\x0a.dm-chip-dot\x20{\x20opacity:\x20.5;\x20}\x0a.dm-preset__arrow\x20{\x0a\x20\x20position:\x20absolute;\x0a\x20\x20bottom:\x2014px;\x0a\x20\x20right:\x2016px;\x0a\x20\x20font-size:\x2014px;\x0a\x20\x20opacity:\x20.2;\x0a\x20\x20transition:\x20opacity\x20.2s,\x20transform\x20.2s;\x0a}\x0a.dm-preset:not(.dm-preset--geo):hover\x20.dm-preset__arrow\x20{\x20opacity:\x20.8;\x20transform:\x20translateX(3px);\x20}\x0a@keyframes\x20dm-geo-ring\x20{\x0a\x20\x200%\x20\x20\x20{\x20opacity:\x20.6;\x20transform:\x20scale(.6);\x20}\x0a\x20\x20100%\x20{\x20opacity:\x200;\x20\x20transform:\x20scale(2.2);\x20}\x0a}\x0a\x0a/*\x20──\x20Back\x20button\x20─────────────────────────────────────────────\x20*/\x0a.dm-back-btn\x20{\x0a\x20\x20font-size:\x2016px;\x0a\x20\x20padding:\x203px\x2010px;\x0a\x20\x20opacity:\x20.5;\x0a\x20\x20border-radius:\x206px;\x0a\x20\x20transition:\x20opacity\x20.15s;\x0a}\x0a.dm-back-btn:hover\x20{\x20opacity:\x201;\x20}\x0a\x0a/*\x20──\x20Preset\x20badge\x20(configure\x20step)\x20──────────────────────────\x20*/\x0a.dm-preset-badge\x20{\x0a\x20\x20font-size:\x2022px;\x0a\x20\x20display:\x20inline-flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20justify-content:\x20center;\x0a\x20\x20width:\x2036px;\x0a\x20\x20height:\x2036px;\x0a\x20\x20border-radius:\x2010px;\x0a\x20\x20background:\x20var(--pg,\x20var(--okdb-app-surface));\x0a\x20\x20border:\x201px\x20solid\x20var(--pc,\x20var(--okdb-app-border))33;\x0a\x20\x20filter:\x20drop-shadow(0\x200\x208px\x20var(--pc,\x20transparent));\x0a}\x0a\x0a/*\x20──\x20Scale\x20buttons\x20───────────────────────────────────────────\x20*/\x0a.dm-scale-btn\x20{\x0a\x20\x20padding:\x205px\x2012px;\x0a\x20\x20font-size:\x2012px;\x0a\x20\x20border-radius:\x207px;\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20transition:\x20all\x20.15s;\x0a}\x0a.dm-scale-btn--active\x20{\x0a\x20\x20background:\x20var(--pc,\x20var(--okdb-accent))22\x20!important;\x0a\x20\x20border-color:\x20var(--pc,\x20var(--okdb-accent))\x20!important;\x0a\x20\x20color:\x20var(--pc,\x20var(--okdb-accent))\x20!important;\x0a\x20\x20font-weight:\x20600;\x0a}\x0a\x0a/*\x20──\x20Type\x20count\x20table\x20────────────────────────────────────────\x20*/\x0a.dm-type-table\x20{\x0a\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20border-radius:\x209px;\x0a\x20\x20overflow:\x20hidden;\x0a}\x0a.dm-type-row\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x2010px;\x0a\x20\x20padding:\x208px\x2014px;\x0a\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a}\x0a.dm-type-row:last-child\x20{\x20border-bottom:\x20none;\x20}\x0a.dm-type-row__name\x20{\x0a\x20\x20font-family:\x20monospace;\x0a\x20\x20font-size:\x2012px;\x0a\x20\x20width:\x2090px;\x0a\x20\x20flex-shrink:\x200;\x0a\x20\x20opacity:\x20.8;\x0a}\x0a.dm-type-row__bar-wrap\x20{\x0a\x20\x20flex:\x201;\x0a\x20\x20height:\x204px;\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border-radius:\x202px;\x0a\x20\x20overflow:\x20hidden;\x0a}\x0a.dm-type-row__bar\x20{\x0a\x20\x20height:\x20100%;\x0a\x20\x20border-radius:\x202px;\x0a\x20\x20transition:\x20width\x20.25s\x20ease-out;\x0a\x20\x20min-width:\x204px;\x0a}\x0a.dm-type-row__count\x20{\x0a\x20\x20font-family:\x20monospace;\x0a\x20\x20font-size:\x2012px;\x0a\x20\x20font-weight:\x20600;\x0a\x20\x20width:\x2070px;\x0a\x20\x20text-align:\x20right;\x0a\x20\x20flex-shrink:\x200;\x0a}\x0a\x0a/*\x20──\x20Checkbox\x20labels\x20─────────────────────────────────────────\x20*/\x0a.dm-check-label\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x207px;\x0a\x20\x20cursor:\x20pointer;\x0a\x20\x20font-size:\x2013px;\x0a\x20\x20user-select:\x20none;\x0a}\x0a\x0a/*\x20──\x20Summary\x20pill\x20────────────────────────────────────────────\x20*/\x0a.dm-summary\x20{\x0a\x20\x20padding:\x2010px\x2014px;\x0a\x20\x20border-radius:\x209px;\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20font-size:\x2013px;\x0a\x20\x20display:\x20flex;\x0a\x20\x20gap:\x205px;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20line-height:\x201.6;\x0a}\x0a\x0a/*\x20──\x20Generate\x20button\x20─────────────────────────────────────────\x20*/\x0a.dm-gen-btn\x20{\x0a\x20\x20background:\x20var(--pg,\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent))\x20!important;\x0a\x20\x20border:\x201px\x20solid\x20var(--pc,\x20var(--okdb-accent))\x20!important;\x0a\x20\x20color:\x20var(--pc,\x20var(--okdb-accent))\x20!important;\x0a\x20\x20font-weight:\x20700;\x0a\x20\x20font-size:\x2013px;\x0a\x20\x20padding:\x207px\x2020px;\x0a\x20\x20border-radius:\x208px;\x0a\x20\x20transition:\x20all\x20.2s;\x0a\x20\x20letter-spacing:\x20.01em;\x0a}\x0a.dm-gen-btn:hover:not(:disabled)\x20{\x0a\x20\x20background:\x20var(--pc,\x20var(--okdb-accent))33\x20!important;\x0a\x20\x20box-shadow:\x200\x200\x2020px\x20var(--pc,\x20var(--okdb-accent))44;\x0a}\x0a.dm-gen-btn:disabled\x20{\x0a\x20\x20opacity:\x20.4;\x0a\x20\x20cursor:\x20not-allowed;\x0a}\x0a\x0a/*\x20──\x20Footer\x20row\x20──────────────────────────────────────────────\x20*/\x0a.dm-footer\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20gap:\x208px;\x0a\x20\x20justify-content:\x20flex-end;\x0a\x20\x20padding-top:\x2012px;\x0a\x20\x20border-top:\x201px\x20solid\x20var(--okdb-app-surface);\x0a}\x0a\x0a/*\x20──\x20Generation\x20header\x20───────────────────────────────────────\x20*/\x0a.dm-gen-header\x20{\x0a\x20\x20padding:\x2014px\x2016px;\x0a\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20border-radius:\x2010px;\x0a\x20\x20box-shadow:\x20inset\x200\x200\x2040px\x20var(--pg,\x20transparent);\x0a}\x0a.dm-pulsing-icon\x20{\x0a\x20\x20font-size:\x2020px;\x0a\x20\x20display:\x20inline-block;\x0a\x20\x20animation:\x20dm-pulse\x201.5s\x20ease-in-out\x20infinite;\x0a\x20\x20filter:\x20drop-shadow(0\x200\x206px\x20var(--pc,\x20transparent));\x0a}\x0a.dm-progress-track\x20{\x0a\x20\x20height:\x207px;\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border-radius:\x204px;\x0a\x20\x20overflow:\x20hidden;\x0a}\x0a.dm-progress-fill\x20{\x0a\x20\x20height:\x20100%;\x0a\x20\x20border-radius:\x204px;\x0a\x20\x20transition:\x20width\x20.35s\x20ease-out;\x0a\x20\x20position:\x20relative;\x0a}\x0a.dm-progress-fill--shimmer::after\x20{\x0a\x20\x20content:\x20\x27\x27;\x0a\x20\x20position:\x20absolute;\x0a\x20\x20inset:\x200;\x0a\x20\x20background:\x20linear-gradient(90deg,\x20transparent,\x20rgba(255,255,255,.25),\x20transparent);\x0a\x20\x20animation:\x20dm-shimmer\x201.5s\x20linear\x20infinite;\x0a}\x0a\x0a/*\x20──\x20Step\x20rows\x20───────────────────────────────────────────────\x20*/\x0a.dm-steps\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20gap:\x202px;\x0a\x20\x20max-height:\x20320px;\x0a\x20\x20overflow-y:\x20auto;\x0a\x20\x20padding-right:\x204px;\x0a}\x0a.dm-step\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x209px;\x0a\x20\x20padding:\x207px\x2010px;\x0a\x20\x20border-radius:\x207px;\x0a\x20\x20font-size:\x2012px;\x0a\x20\x20transition:\x20background\x20.1s;\x0a}\x0a.dm-step--pending\x20\x20{\x20opacity:\x20.32;\x20}\x0a.dm-step--running\x20\x20{\x20background:\x20var(--okdb-app-surface);\x20opacity:\x201;\x20}\x0a.dm-step--done\x20\x20\x20\x20\x20{\x20opacity:\x20.6;\x20}\x0a.dm-step--error\x20\x20\x20\x20{\x20background:\x20var(--okdb-danger-deep-bg);\x20opacity:\x201;\x20}\x0a.dm-step__icon\x20{\x0a\x20\x20width:\x2018px;\x0a\x20\x20text-align:\x20center;\x0a\x20\x20flex-shrink:\x200;\x0a\x20\x20font-size:\x2012px;\x0a}\x0a.dm-step--done\x20.dm-step__icon\x20\x20{\x20color:\x20var(--okdb-success);\x20}\x0a.dm-step--running\x20.dm-step__icon\x20{\x20color:\x20var(--okdb-accent);\x20}\x0a.dm-step--error\x20.dm-step__icon\x20{\x20color:\x20var(--okdb-danger);\x20}\x0a.dm-step__label\x20{\x20flex:\x201;\x20}\x0a.dm-step__count\x20{\x0a\x20\x20font-size:\x2011px;\x0a\x20\x20font-family:\x20monospace;\x0a\x20\x20opacity:\x20.5;\x0a\x20\x20flex-shrink:\x200;\x0a}\x0a.dm-step__mini-bar\x20{\x0a\x20\x20width:\x2070px;\x0a\x20\x20height:\x203px;\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border-radius:\x202px;\x0a\x20\x20overflow:\x20hidden;\x0a\x20\x20flex-shrink:\x200;\x0a}\x0a.dm-step__mini-fill\x20{\x0a\x20\x20height:\x20100%;\x0a\x20\x20background:\x20var(--okdb-accent);\x0a\x20\x20border-radius:\x202px;\x0a\x20\x20transition:\x20width\x20.2s\x20ease-out;\x0a}\x0a\x0a/*\x20──\x20Error\x20banner\x20────────────────────────────────────────────\x20*/\x0a.dm-error\x20{\x0a\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20font-size:\x2013px;\x0a\x20\x20padding:\x209px\x2013px;\x0a\x20\x20background:\x20var(--okdb-danger-deep-bg);\x0a\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x0a\x20\x20border-radius:\x207px;\x0a}\x0a\x0a/*\x20──\x20Done\x20orb\x20────────────────────────────────────────────────\x20*/\x0a.dm-done-orb\x20{\x0a\x20\x20position:\x20relative;\x0a\x20\x20width:\x2096px;\x0a\x20\x20height:\x2096px;\x0a\x20\x20display:\x20flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20justify-content:\x20center;\x0a}\x0a.dm-done-orb__icon\x20{\x0a\x20\x20font-size:\x2040px;\x0a\x20\x20position:\x20relative;\x0a\x20\x20z-index:\x202;\x0a\x20\x20filter:\x20drop-shadow(0\x200\x2016px\x20var(--pc,\x20var(--okdb-accent)));\x0a\x20\x20animation:\x20dm-pulse\x202.5s\x20ease-in-out\x20infinite;\x0a}\x0a.dm-done-orb__ring\x20{\x0a\x20\x20position:\x20absolute;\x0a\x20\x20inset:\x200;\x0a\x20\x20border-radius:\x2050%;\x0a\x20\x20border:\x201px\x20solid\x20var(--pc,\x20var(--okdb-accent));\x0a}\x0a.dm-done-orb__ring--1\x20{\x0a\x20\x20opacity:\x20.4;\x0a\x20\x20animation:\x20dm-ring-pulse\x202s\x20ease-in-out\x20infinite;\x0a}\x0a.dm-done-orb__ring--2\x20{\x0a\x20\x20opacity:\x20.2;\x0a\x20\x20animation:\x20dm-ring-pulse\x202s\x20ease-in-out\x20infinite\x20.7s;\x0a\x20\x20transform:\x20scale(1.3);\x0a}\x0a\x0a/*\x20──\x20Done\x20stats\x20──────────────────────────────────────────────\x20*/\x0a.dm-done-stats\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x2020px;\x0a\x20\x20padding:\x2016px\x2032px;\x0a\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20border:\x201px\x20solid\x20var(--pc,\x20var(--okdb-accent))33;\x0a\x20\x20border-radius:\x2014px;\x0a\x20\x20box-shadow:\x200\x200\x2030px\x20var(--pg,\x20transparent);\x0a}\x0a.dm-stat\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x205px;\x0a}\x0a.dm-stat__val\x20{\x0a\x20\x20font-size:\x2028px;\x0a\x20\x20font-weight:\x20800;\x0a\x20\x20line-height:\x201;\x0a\x20\x20letter-spacing:\x20-.02em;\x0a}\x0a.dm-stat__lbl\x20{\x0a\x20\x20font-size:\x2010px;\x0a\x20\x20text-transform:\x20uppercase;\x0a\x20\x20letter-spacing:\x20.08em;\x0a\x20\x20opacity:\x20.45;\x0a}\x0a.dm-stat-divider\x20{\x0a\x20\x20width:\x201px;\x0a\x20\x20height:\x2036px;\x0a\x20\x20background:\x20var(--okdb-app-border);\x0a\x20\x20flex-shrink:\x200;\x0a}\x0a\x0a/*\x20──\x20Animations\x20──────────────────────────────────────────────\x20*/\x0a@keyframes\x20dm-hue\x20{\x0a\x20\x20from\x20{\x20filter:\x20hue-rotate(0deg);\x20}\x0a\x20\x20to\x20\x20\x20{\x20filter:\x20hue-rotate(360deg);\x20}\x0a}\x0a@keyframes\x20dm-pulse\x20{\x0a\x20\x200%,\x20100%\x20{\x20transform:\x20scale(1);\x20}\x0a\x20\x2050%\x20\x20\x20\x20\x20\x20\x20{\x20transform:\x20scale(1.12);\x20}\x0a}\x0a@keyframes\x20dm-ring-pulse\x20{\x0a\x20\x200%,\x20100%\x20{\x20opacity:\x20.3;\x20transform:\x20scale(1);\x20}\x0a\x20\x2050%\x20\x20\x20\x20\x20\x20\x20{\x20opacity:\x20.7;\x20transform:\x20scale(1.1);\x20}\x0a}\x0a@keyframes\x20dm-shimmer\x20{\x0a\x20\x20from\x20{\x20transform:\x20translateX(-100%);\x20}\x0a\x20\x20to\x20\x20\x20{\x20transform:\x20translateX(300%);\x20}\x0a}\x0a@keyframes\x20dm-spin\x20{\x0a\x20\x20from\x20{\x20transform:\x20rotate(0deg);\x20}\x0a\x20\x20to\x20\x20\x20{\x20transform:\x20rotate(360deg);\x20}\x0a}\x0a.dm-spin\x20{\x0a\x20\x20display:\x20inline-block;\x0a\x20\x20animation:\x20dm-spin\x201s\x20linear\x20infinite;\x0a}\x0a','Customers','max','Saved\x20me\x20hours\x20of\x20debugging.\x20Thank\x20you!','AWS','color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent)','Grove','Tipsy','checkins','var(--okdb-success)','scale','gold','Would\x20love\x20to\x20see\x20a\x20follow-up\x20article\x20on\x20this\x20topic.','Operations','orders','label','reviews','Secure\x20by\x20Design:\x20API\x20Security\x20Patterns','title','totalRecords','gmail.com','products','Henry','Stone','close','/contact','Power','Analytics','Furniture','General','Pro','Docker','Ultra','Excellent\x20value','demo-analytics','Hub','Uma','/login','sessions','reliability','Table','direct','Eco','Employees','hackernews.com','\x20is\x20a\x20strategic\x20initiative\x20to\x20improve\x20','Architect','Lee','Parker','senior','Mobile','A\x20vibrant,\x20energetic\x20space\x20that\x20buzzes\x20with\x20life\x20from\x20morning\x20to\x20night.','park','color-mix(in\x20srgb,\x20var(--okdb-purple)\x2020%,\x20transparent)','/signup','Palazzo','error','Bob','New\x20York','Stylish\x20space\x20with\x20impeccable\x20service\x20and\x20an\x20Instagram-worthy\x20interior.','Analyst','Charger','Museum\x20of\x20','Chair','Shop','Rust','Lab','POST','name','Artisan','Stumbled\x20in\x20by\x20chance\x20and\x20absolutely\x20loved\x20it.','Passionate\x20foodie\x20and\x20amateur\x20photographer\x20exploring\x20the\x20city\x20one\x20café\x20at\x20a\x20time.','Tutorial','demo-shop','Cozy','Node.js','fts:','Heritage','Checkins','Imperial','Melbourne','stringify','Retreat','quality','Nano','City\x20Explorer','\x20team\x20drives\x20innovation\x20and\x20','TypeScript','Sports','\x22\x20on\x20','The\x20Future\x20of\x20Distributed\x20Systems','_done','Science\x20&\x20Technology','toLocaleString','Quarter','Insert\x20into\x20\x22','on-hold','Peter','Events','Core','device','node','Technology','Roasted','Top\x2010\x20UX\x20Patterns\x20for\x20Mobile\x20Apps','Just\x20implemented\x20this\x20—\x20worked\x20perfectly!','API\x20Gateway','Search\x20Engine','Lion','placeId','/blog','enableFts','One\x20of\x20my\x20absolute\x20favourites\x20in\x20the\x20city.','env','Carol','Makers','cmt','House','Consultant','Corner','open-source','Security\x20Hardening','total','Nice\x20vibes\x20but\x20gets\x20a\x20bit\x20crowded\x20on\x20weekends.','Paris','place','Horse','Quinn','Square','Museum\x20member,\x20park\x20runner\x20and\x20enthusiastic\x20brunch-seeker\x20on\x20weekends.','Register\x20type:\x20','Sunset','Toronto','efficiency','choose','outlook.com','aws','Hotel','toISOString','Martinez','Emma','Arc','Cloud','Rustic','description','Auth\x20Service','Bear','/settings','databases','tablet','Edge','Brew','/about','Peak','Watch','json','A\x20must-visit\x20destination\x20known\x20for\x20quality,\x20character\x20and\x20outstanding\x20hospitality.','Index\x20','generate','Active','Design','running','\x20Park','Intimate\x20and\x20unpretentious\x20—\x20the\x20kind\x20of\x20place\x20that\x20instantly\x20feels\x20like\x20home.','City','Disappointed','Barcelona','map','Hall','Deep\x20Dive:\x20','Database\x20Migration','Award-winning\x20venue\x20celebrating\x20local\x20culture,\x20craft\x20and\x20genuine\x20creativity.','reloadEnvs','London','reddit.com','critical','Communication','login','scroll','Black','python','generating','Expected\x20more','from','progress','Mia','Highly\x20rated\x20local\x20favourite\x20with\x20excellent\x20reviews\x20and\x20a\x20warm,\x20welcoming\x20atmosphere.','events','Harbour','$ok','Good\x20value\x20for\x20the\x20quality\x20of\x20the\x20experience.','Customer\x20Portal','Singapore','/index/','Green\x20Software\x20Engineering\x20Principles','analytics','shop','security','Engineer','twitter.com','Grand','Studio','\x20is\x20engineered\x20for\x20peak\x20performance\x20and\x20everyday\x20reliability.\x20Features\x20premium\x20materials\x20and\x20an\x20intuitive\x20design.','Nelson','Swift','The\x20Complete\x20Guide\x20to\x20Database\x20Optimization','Store','\x20years\x20of\x20experience\x20building\x20production\x20systems.','Loft','Room','Products','Platform\x20Rewrite','personId','Harbor','Highly\x20recommend\x20to\x20anyone\x20visiting\x20the\x20area.','Grind','AI-Assisted\x20Development\x20Workflows','Fox','done','📍\x20Geo\x20index','Normal','Walsh','stores','customerId','Hidden','Emporium','Books','sess','Events,\x20sessions\x20&\x20pageviews','/transaction','Products,\x20customers\x20&\x20orders','status','Opinion','Botanical','Building\x20Real-time\x20Dashboards','Data\x20Science','catch','77NJyMQT','Pod','floor','comments','Team\x20Directory','Performance\x20Audit','okdb','Amazing\x20experience,\x20will\x20definitely\x20be\x20back!','city','Eagle','Office','/fts/','principal','17280qKDptI','hotel','The\x20Ultimate\x20','search','Max','authors','Maison','Leadership','Create\x20env\x20failed\x20(','Yard','Brass','configure','Rome','var(--okdb-orange)','Orders','A\x20community\x20staple\x20for\x20years,\x20proudly\x20serving\x20residents\x20and\x20visitors\x20with\x20heart.','review','rating','mobile','Thanks\x20for\x20sharing\x20this.\x20Very\x20insightful.','Yusuf','E-Commerce','Safari','Partner\x20API','museum','\x20specialist\x20with\x20','The\x20','pageviews','A\x20perfect\x20spot\x20for\x20a\x20relaxed\x20afternoon.','7FjgIUi','accessibility','idx:','Building\x20Scalable\x20APIs\x20with\x20Node.js','Club','Great\x20article!\x20Really\x20helped\x20me\x20understand\x20the\x20concept.','tag','Residence','Ibrahim','ord','Craft','published','Zoe','devops','This\x20is\x20exactly\x20what\x20I\x20was\x20looking\x20for!','Mixed\x20feelings\x20overall.','State\x20Management\x20in\x20Modern\x20Frontend','now','Headphones','effectiveCounts','reduce','application/json','price','200082nPrpvI','Design\x20System','javascript','Hidden\x20gem\x20tucked\x20away\x20in\x20the\x20heart\x20of\x20the\x20city\x20—\x20loved\x20by\x20locals\x20and\x20visitors\x20alike.','Prime','slice','ecommerce','Coffee','Cape\x20Town','Engineering','form_submit','preset','A\x20Practical\x20Guide\x20to\x20','Kitchen','var(--okdb-warning)'];_0x9e93=function(){return _0x2d1eec;};return _0x9e93();}function makePRNG(_0x390191){let _0x457ee0=(0x9e3779b9^_0x390191)>>>0x0||0x1;return()=>(_0x457ee0^=_0x457ee0<<0xd,_0x457ee0^=_0x457ee0>>>0x11,_0x457ee0^=_0x457ee0<<0x5,(_0x457ee0>>>0x0)/0x100000000);}const pick=(_0x2dcf44,_0x2a825d)=>_0x2dcf44[Math[_0x5bb13f(0x28a)](_0x2a825d()*_0x2dcf44[_0x5bb13f(0x3bf)])],rng=(_0x15c291,_0x106661,_0x4221f9)=>Math[_0x5bb13f(0x28a)](_0x4221f9()*(_0x106661-_0x15c291+0x1))+_0x15c291,uid=(_0x3839fe,_0x1706e6)=>_0x3839fe+'-'+String(_0x1706e6)[_0x5bb13f(0x3a0)](0x4,'0'),email=(_0x432da0,_0x6c0980,_0x44d95d)=>_0x432da0[_0x5bb13f(0x36c)]()+'.'+_0x6c0980[_0x5bb13f(0x36c)]()+rng(0x1,0x63,_0x44d95d)+'@'+pick([_0x5bb13f(0x1af),_0x5bb13f(0x3a5),_0x5bb13f(0x222),_0x5bb13f(0x38b),'icloud.com'],_0x44d95d),dateAgo=(_0x3deed1,_0x5e59b8)=>new Date(Date[_0x5bb13f(0x2c3)]()-0x5265c00*rng(0x0,_0x3deed1,_0x5e59b8))[_0x5bb13f(0x225)]()[_0x5bb13f(0x347)]('T')[0x0],dateFwd=(_0x1d8535,_0x9f1eea)=>new Date(Date['now']()+0x5265c00*rng(0x1,_0x1d8535,_0x9f1eea))['toISOString']()['split']('T')[0x0],FIRST=[_0x5bb13f(0x386),_0x5bb13f(0x1d4),_0x5bb13f(0x20d),_0x5bb13f(0x32c),_0x5bb13f(0x227),_0x5bb13f(0x2e8),_0x5bb13f(0x2de),_0x5bb13f(0x1b1),_0x5bb13f(0x3dc),'Jack','Kate',_0x5bb13f(0x30c),_0x5bb13f(0x254),_0x5bb13f(0x37c),'Olivia',_0x5bb13f(0x1fc),'Quinn',_0x5bb13f(0x313),_0x5bb13f(0x33b),_0x5bb13f(0x2ed),_0x5bb13f(0x1bf),'Victor','Wendy',_0x5bb13f(0x2a9),_0x5bb13f(0x2be)],LAST=['Anderson','Brown',_0x5bb13f(0x2f6),'Davis','Evans',_0x5bb13f(0x3be),_0x5bb13f(0x35c),_0x5bb13f(0x243),_0x5bb13f(0x2ba),'Jones','King',_0x5bb13f(0x1ca),_0x5bb13f(0x226),_0x5bb13f(0x266),'Owen',_0x5bb13f(0x1cb),_0x5bb13f(0x21a),_0x5bb13f(0x2e1),_0x5bb13f(0x38e),_0x5bb13f(0x398),_0x5bb13f(0x397),_0x5bb13f(0x278),'Young',_0x5bb13f(0x399)],CITIES=[_0x5bb13f(0x1d5),_0x5bb13f(0x248),_0x5bb13f(0x38a),_0x5bb13f(0x33f),_0x5bb13f(0x301),_0x5bb13f(0x21f),'Paris',_0x5bb13f(0x327),_0x5bb13f(0x25b),_0x5bb13f(0x2f9),_0x5bb13f(0x363),'São\x20Paulo',_0x5bb13f(0x197),_0x5bb13f(0x2d1),_0x5bb13f(0x3b5)],COUNTRIES=['US','GB','DE','FR','JP','AU','CA','BR','IN','SG','NL','SE','ES','IT','MX'],DEVICES=[_0x5bb13f(0x2dd),_0x5bb13f(0x2a7),_0x5bb13f(0x230)],PAGES=['/',_0x5bb13f(0x32e),_0x5bb13f(0x233),_0x5bb13f(0x346),_0x5bb13f(0x209),_0x5bb13f(0x1b4),_0x5bb13f(0x1d1),_0x5bb13f(0x1c0),_0x5bb13f(0x33a),_0x5bb13f(0x22e),_0x5bb13f(0x3a1)],PROD_ADJ=[_0x5bb13f(0x1bb),_0x5bb13f(0x1b9),'Elite',_0x5bb13f(0x299),'Smart',_0x5bb13f(0x1ef),_0x5bb13f(0x1c5),_0x5bb13f(0x315),'Turbo',_0x5bb13f(0x30d),_0x5bb13f(0x267),_0x5bb13f(0x316)],PROD_NOUN=[_0x5bb13f(0x2c4),'Keyboard','Monitor',_0x5bb13f(0x3da),_0x5bb13f(0x1da),_0x5bb13f(0x3c7),'Lamp',_0x5bb13f(0x302),'Speaker','Tablet',_0x5bb13f(0x235),'Router',_0x5bb13f(0x1d8),'Mouse',_0x5bb13f(0x31c),_0x5bb13f(0x289),_0x5bb13f(0x1be),_0x5bb13f(0x3c4)],PROD_CAT=[_0x5bb13f(0x2dc),_0x5bb13f(0x1b7),_0x5bb13f(0x344),_0x5bb13f(0x1f3),_0x5bb13f(0x27d),_0x5bb13f(0x2d6),_0x5bb13f(0x18c),'Toys',_0x5bb13f(0x373),_0x5bb13f(0x292)],ORDER_STATUS=[_0x5bb13f(0x34c),_0x5bb13f(0x309),_0x5bb13f(0x339),'delivered','cancelled'],DOMAINS=[_0x5bb13f(0x1af),_0x5bb13f(0x3a5),_0x5bb13f(0x222)],CITY_CENTERS=[{'name':_0x5bb13f(0x248),'country':'GB','lat':51.5074,'lon':-0.1278},{'name':_0x5bb13f(0x217),'country':'FR','lat':48.8566,'lon':2.3522},{'name':'New\x20York','country':'US','lat':40.7128,'lon':-74.006},{'name':_0x5bb13f(0x33f),'country':'JP','lat':35.6762,'lon':139.6503},{'name':_0x5bb13f(0x301),'country':'AU','lat':-33.8688,'lon':151.2093},{'name':_0x5bb13f(0x38a),'country':'DE','lat':52.52,'lon':13.405},{'name':_0x5bb13f(0x3c5),'country':'US','lat':37.7749,'lon':-122.4194},{'name':_0x5bb13f(0x327),'country':'NL','lat':52.3676,'lon':4.9041},{'name':'Singapore','country':'SG','lat':1.3521,'lon':103.8198},{'name':_0x5bb13f(0x241),'country':'ES','lat':41.3851,'lon':2.1734},{'name':_0x5bb13f(0x2f9),'country':'AE','lat':25.2048,'lon':55.2708},{'name':'Toronto','country':'CA','lat':43.6532,'lon':-79.3832},{'name':_0x5bb13f(0x2a1),'country':'IT','lat':41.9028,'lon':12.4964},{'name':_0x5bb13f(0x1eb),'country':'AU','lat':-37.8136,'lon':144.9631},{'name':_0x5bb13f(0x363),'country':'KR','lat':37.5665,'lon':126.978}],PLACE_CATS=[_0x5bb13f(0x375),'bar',_0x5bb13f(0x379),'museum',_0x5bb13f(0x1cf),_0x5bb13f(0x296),_0x5bb13f(0x37a),_0x5bb13f(0x25f)],PLACE_ADJ=[_0x5bb13f(0x22a),'Golden',_0x5bb13f(0x2ee),'Blue','Red',_0x5bb13f(0x18c),'Harbor','Urban',_0x5bb13f(0x1e0),'Wild',_0x5bb13f(0x353),'Velvet',_0x5bb13f(0x1e5),'Vintage',_0x5bb13f(0x27b),'Royal',_0x5bb13f(0x263),_0x5bb13f(0x310),_0x5bb13f(0x35c),_0x5bb13f(0x1b2)],PLACE_NOUN=[_0x5bb13f(0x2d6),_0x5bb13f(0x2d9),_0x5bb13f(0x1c3),_0x5bb13f(0x1a1),'Terrace',_0x5bb13f(0x212),_0x5bb13f(0x311),'Den','House',_0x5bb13f(0x29e),_0x5bb13f(0x1f9),_0x5bb13f(0x26b),_0x5bb13f(0x388),_0x5bb13f(0x21b),_0x5bb13f(0x26c),_0x5bb13f(0x29e)],BAR_ADJ=['Lazy',_0x5bb13f(0x24e),'Iron',_0x5bb13f(0x29f),_0x5bb13f(0x30b),_0x5bb13f(0x371),_0x5bb13f(0x341),_0x5bb13f(0x31e),_0x5bb13f(0x33c),_0x5bb13f(0x2ee),_0x5bb13f(0x1a2),_0x5bb13f(0x3bc)],BAR_ANIMAL=[_0x5bb13f(0x274),_0x5bb13f(0x194),_0x5bb13f(0x219),_0x5bb13f(0x2e4),_0x5bb13f(0x22d),_0x5bb13f(0x2f7),_0x5bb13f(0x18e),_0x5bb13f(0x207),_0x5bb13f(0x291),'Crow',_0x5bb13f(0x3bb),_0x5bb13f(0x2fe)],CAFE_PRE=[_0x5bb13f(0x2df),'Daily','Urban',_0x5bb13f(0x1e0),_0x5bb13f(0x303),_0x5bb13f(0x353),_0x5bb13f(0x202),'Ground','Wake',_0x5bb13f(0x330),'Little','Slow'],CAFE_SFX=[_0x5bb13f(0x2d0),'Roast',_0x5bb13f(0x232),'Cup',_0x5bb13f(0x191),_0x5bb13f(0x272),'Blend',_0x5bb13f(0x3b9),_0x5bb13f(0x390),'Filter'],MUSEUM_SUB=['Natural\x20History','Modern\x20Art','Contemporary\x20Art',_0x5bb13f(0x1f7),_0x5bb13f(0x2f4),'Photography',_0x5bb13f(0x34a),'Maritime\x20Heritage',_0x5bb13f(0x3b2)],PARK_ADJ_P=['Central',_0x5bb13f(0x3cf),'Riverside',_0x5bb13f(0x284),_0x5bb13f(0x387),'Memorial',_0x5bb13f(0x21e),_0x5bb13f(0x35c),_0x5bb13f(0x23f),_0x5bb13f(0x257),_0x5bb13f(0x3d0),'West'],HOTEL_ADJ_H=[_0x5bb13f(0x263),'Royal',_0x5bb13f(0x1ea),_0x5bb13f(0x18c),_0x5bb13f(0x270),_0x5bb13f(0x23f),_0x5bb13f(0x39c),_0x5bb13f(0x1e8),_0x5bb13f(0x2ef),_0x5bb13f(0x29b),_0x5bb13f(0x1d2)],HOTEL_NOUN_H=[_0x5bb13f(0x224),'Suites','Inn',_0x5bb13f(0x2b9),'Lodge','Place',_0x5bb13f(0x210),_0x5bb13f(0x1ed),'Apartments'],GYM_PRE=[_0x5bb13f(0x394),_0x5bb13f(0x234),_0x5bb13f(0x1fe),_0x5bb13f(0x1b5),_0x5bb13f(0x23a),_0x5bb13f(0x195),_0x5bb13f(0x383),'Pulse',_0x5bb13f(0x3a3),_0x5bb13f(0x2cd)],GYM_SFX=[_0x5bb13f(0x264),_0x5bb13f(0x2b6),'Zone','Hub',_0x5bb13f(0x1dd),'Base',_0x5bb13f(0x360),_0x5bb13f(0x329),_0x5bb13f(0x322)],SHOP_ADJ=[_0x5bb13f(0x1b8),'Local',_0x5bb13f(0x212),'Village',_0x5bb13f(0x3b8),'Artisan','Indie',_0x5bb13f(0x2bc),_0x5bb13f(0x20e)],SHOP_NOUN=[_0x5bb13f(0x269),_0x5bb13f(0x1db),_0x5bb13f(0x388),_0x5bb13f(0x2ff),_0x5bb13f(0x33d),_0x5bb13f(0x3de),_0x5bb13f(0x351),_0x5bb13f(0x27c),'Collective'],PLACE_DESCS=[_0x5bb13f(0x255),_0x5bb13f(0x237),_0x5bb13f(0x2cc),_0x5bb13f(0x35e),_0x5bb13f(0x2a4),_0x5bb13f(0x246),_0x5bb13f(0x1d6),_0x5bb13f(0x3ac),_0x5bb13f(0x1ce),_0x5bb13f(0x23e),_0x5bb13f(0x37d),_0x5bb13f(0x331)],PERSON_BIOS=[_0x5bb13f(0x1e2),'Tech\x20worker\x20who\x20spends\x20weekends\x20hiking\x20and\x20discovering\x20hidden\x20restaurant\x20gems.',_0x5bb13f(0x2e5),_0x5bb13f(0x3c2),_0x5bb13f(0x18d),_0x5bb13f(0x2f2),_0x5bb13f(0x336),_0x5bb13f(0x21c),_0x5bb13f(0x3c3),_0x5bb13f(0x196)],CHECKIN_NOTES=[_0x5bb13f(0x28f),_0x5bb13f(0x337),_0x5bb13f(0x271),_0x5bb13f(0x2b1),_0x5bb13f(0x20b),_0x5bb13f(0x216),_0x5bb13f(0x33e),_0x5bb13f(0x259),_0x5bb13f(0x333),'Exceptional\x20quality\x20—\x20genuinely\x20exceeded\x20expectations.',_0x5bb13f(0x1e1),'Great\x20first\x20visit,\x20already\x20planning\x20to\x20return.',null,null,null];function _scatter(_0x1317b5,_0x41804d,_0x21890c){const _0x301761=_0x5bb13f;return{'lat':Math[_0x301761(0x380)](0xf4240*(_0x1317b5[_0x301761(0x3d5)]+0x2*(_0x21890c()-0.5)*_0x41804d))/0xf4240,'lon':Math['round'](0xf4240*(_0x1317b5[_0x301761(0x3b1)]+0x2*(_0x21890c()-0.5)*_0x41804d))/0xf4240};}function _placeName(_0x2b15a3,_0x46d6f2){const _0x546e98=_0x5bb13f;switch(_0x2b15a3){case'restaurant':return'The\x20'+pick(PLACE_ADJ,_0x46d6f2)+'\x20'+pick(PLACE_NOUN,_0x46d6f2);case _0x546e98(0x3b3):return'The\x20'+pick(BAR_ADJ,_0x46d6f2)+'\x20'+pick(BAR_ANIMAL,_0x46d6f2);case'cafe':return pick(CAFE_PRE,_0x46d6f2)+'\x20'+pick(CAFE_SFX,_0x46d6f2);case _0x546e98(0x2ad):return _0x546e98(0x1d9)+pick(MUSEUM_SUB,_0x46d6f2);case _0x546e98(0x1cf):return pick(PARK_ADJ_P,_0x46d6f2)+_0x546e98(0x23d);case _0x546e98(0x296):return'The\x20'+pick(HOTEL_ADJ_H,_0x46d6f2)+'\x20'+pick(HOTEL_NOUN_H,_0x46d6f2);case _0x546e98(0x37a):return pick(GYM_PRE,_0x46d6f2)+'\x20'+pick(GYM_SFX,_0x46d6f2);case _0x546e98(0x25f):return _0x546e98(0x2af)+pick(SHOP_ADJ,_0x46d6f2)+'\x20'+pick(SHOP_NOUN,_0x46d6f2);default:return pick(PLACE_ADJ,_0x46d6f2)+_0x546e98(0x3a8);}}function generateCityExplorer(_0x15d88a,_0x98ebf8){const _0xf8ff93=_0x5bb13f,_0x3ef75a={};return _0x3ef75a[_0xf8ff93(0x32a)]=Array[_0xf8ff93(0x252)]({'length':_0x15d88a[_0xf8ff93(0x32a)]},(_0x32831b,_0x12e51f)=>{const _0x57a892=_0xf8ff93,_0x2a1b4e=pick(CITY_CENTERS,_0x98ebf8),_0x2fa3c1=pick(PLACE_CATS,_0x98ebf8);return{'key':uid(_0x57a892(0x218),_0x12e51f+0x1),'value':{'name':_placeName(_0x2fa3c1,_0x98ebf8),'category':_0x2fa3c1,'city':_0x2a1b4e['name'],'country':_0x2a1b4e[_0x57a892(0x3d2)],'location':_scatter(_0x2a1b4e,0.035,_0x98ebf8),'rating':Math['round'](rng(0x1c,0x32,_0x98ebf8))/0xa,'reviewCount':rng(0x5,0xbb8,_0x98ebf8),'priceLevel':rng(0x1,0x4,_0x98ebf8),'description':pick(PLACE_DESCS,_0x98ebf8),'phone':'+'+rng(0x1,0x63,_0x98ebf8)+'\x20'+rng(0x64,0x3e7,_0x98ebf8)+'-'+rng(0x3e8,0x270f,_0x98ebf8),'openNow':_0x98ebf8()>0.3,'verified':_0x98ebf8()>0.25,'createdAt':dateAgo(0x2da,_0x98ebf8)}};}),_0x3ef75a[_0xf8ff93(0x3c0)]=Array[_0xf8ff93(0x252)]({'length':_0x15d88a['people']},(_0x2bbc0a,_0x1742ff)=>{const _0x32a61c=_0xf8ff93,_0x2e2dcc=pick(CITY_CENTERS,_0x98ebf8),_0x5a704f=pick(FIRST,_0x98ebf8),_0x1dd168=pick(LAST,_0x98ebf8);return{'key':uid(_0x32a61c(0x356),_0x1742ff+0x1),'value':{'name':_0x5a704f+'\x20'+_0x1dd168,'email':email(_0x5a704f,_0x1dd168,_0x98ebf8),'city':_0x2e2dcc[_0x32a61c(0x1df)],'country':_0x2e2dcc['country'],'home':_scatter(_0x2e2dcc,0.055,_0x98ebf8),'bio':pick(PERSON_BIOS,_0x98ebf8),'interests':[...new Set([pick(PLACE_CATS,_0x98ebf8),pick(PLACE_CATS,_0x98ebf8),pick(PLACE_CATS,_0x98ebf8)])],'memberSince':dateAgo(0x447,_0x98ebf8),'checkinsCount':rng(0x0,0x5a,_0x98ebf8)}};}),_0x3ef75a[_0xf8ff93(0x1a3)]=Array[_0xf8ff93(0x252)]({'length':_0x15d88a[_0xf8ff93(0x1a3)]},(_0x543fbf,_0x5a772a)=>({'key':uid('ci',_0x5a772a+0x1),'value':{'personId':uid(_0xf8ff93(0x356),rng(0x1,_0x15d88a[_0xf8ff93(0x3c0)],_0x98ebf8)),'placeId':uid('place',rng(0x1,_0x15d88a[_0xf8ff93(0x32a)],_0x98ebf8)),'rating':rng(0x1,0x5,_0x98ebf8),'note':pick(CHECKIN_NOTES,_0x98ebf8),'hasPhoto':_0x98ebf8()>0.58,'timestamp':new Date(Date[_0xf8ff93(0x2c3)]()-rng(0x0,0x757b12c00,_0x98ebf8))[_0xf8ff93(0x225)]()}})),_0x3ef75a;}const POST_TITLES=[_0x5bb13f(0x364),_0x5bb13f(0x268),_0x5bb13f(0x2b5),'Understanding\x20Event-Driven\x20Architecture',_0x5bb13f(0x203),_0x5bb13f(0x321),'Docker\x20and\x20Kubernetes:\x20A\x20Practical\x20Guide',_0x5bb13f(0x355),_0x5bb13f(0x1f5),'Mastering\x20TypeScript\x20in\x202025',_0x5bb13f(0x285),_0x5bb13f(0x3b7),_0x5bb13f(0x39b),_0x5bb13f(0x2c2),_0x5bb13f(0x2f0),_0x5bb13f(0x1ac),'WebAssembly:\x20The\x20Next\x20Frontier',_0x5bb13f(0x25d),_0x5bb13f(0x273),_0x5bb13f(0x34b)],TAG_NAMES=[_0x5bb13f(0x2cb),_0x5bb13f(0x349),_0x5bb13f(0x200),_0x5bb13f(0x39d),'typescript',_0x5bb13f(0x24f),_0x5bb13f(0x38d),_0x5bb13f(0x223),_0x5bb13f(0x366),'ux',_0x5bb13f(0x30e),_0x5bb13f(0x22f),_0x5bb13f(0x260),_0x5bb13f(0x2a7),_0x5bb13f(0x2bf),_0x5bb13f(0x2e9),_0x5bb13f(0x3df),'performance',_0x5bb13f(0x2b3),_0x5bb13f(0x2ea),_0x5bb13f(0x25e),_0x5bb13f(0x37e),_0x5bb13f(0x213),'career',_0x5bb13f(0x2f5),_0x5bb13f(0x328),'beginner','advanced'],POST_CATS=[_0x5bb13f(0x201),'Design','Business',_0x5bb13f(0x1e3),_0x5bb13f(0x283),'News','Research'],COMMENT_BODIES=[_0x5bb13f(0x2b7),_0x5bb13f(0x2a8),'Could\x20you\x20elaborate\x20more\x20on\x20the\x20second\x20point?',_0x5bb13f(0x2c0),'Bookmarked.\x20Will\x20definitely\x20revisit\x20this\x20later.','The\x20examples\x20were\x20very\x20clear.\x20Well\x20done!',_0x5bb13f(0x358),_0x5bb13f(0x1a7),_0x5bb13f(0x204),_0x5bb13f(0x19e)],EVT_TYPES=[_0x5bb13f(0x3cc),'click',_0x5bb13f(0x24d),_0x5bb13f(0x2d3),_0x5bb13f(0x3cb),_0x5bb13f(0x3dd),_0x5bb13f(0x24c),'logout',_0x5bb13f(0x298),_0x5bb13f(0x3a4),'video_play','share'],REFERRERS=[_0x5bb13f(0x3af),_0x5bb13f(0x262),_0x5bb13f(0x332),_0x5bb13f(0x1c4),_0x5bb13f(0x249),_0x5bb13f(0x1c7),_0x5bb13f(0x2fd)],ROLES=[_0x5bb13f(0x261),_0x5bb13f(0x308),'Manager',_0x5bb13f(0x1d7),'Director',_0x5bb13f(0x193),_0x5bb13f(0x3c8),'Specialist',_0x5bb13f(0x1c9),_0x5bb13f(0x211)],DEPTS=[_0x5bb13f(0x2d2),_0x5bb13f(0x23b),'Product',_0x5bb13f(0x323),'Sales',_0x5bb13f(0x1a8),'HR',_0x5bb13f(0x307)],LEVELS=['junior','mid',_0x5bb13f(0x1cc),_0x5bb13f(0x396),_0x5bb13f(0x294),'director'],SKILLS=[_0x5bb13f(0x3d6),'Python',_0x5bb13f(0x37f),_0x5bb13f(0x1e6),_0x5bb13f(0x317),_0x5bb13f(0x1ba),_0x5bb13f(0x19f),_0x5bb13f(0x1f2),'GraphQL',_0x5bb13f(0x3db),'Figma',_0x5bb13f(0x1b6),_0x5bb13f(0x29c),_0x5bb13f(0x24b),_0x5bb13f(0x1dc),'Go',_0x5bb13f(0x267),_0x5bb13f(0x35a)],PROJ_NAMES=[_0x5bb13f(0x26e),_0x5bb13f(0x36d),_0x5bb13f(0x205),_0x5bb13f(0x2fb),_0x5bb13f(0x25a),_0x5bb13f(0x30f),_0x5bb13f(0x22c),'Notification\x20System',_0x5bb13f(0x206),'Billing\x20Integration',_0x5bb13f(0x384),'CI/CD\x20Overhaul',_0x5bb13f(0x28d),_0x5bb13f(0x214),_0x5bb13f(0x39f),'Internal\x20Tooling',_0x5bb13f(0x245),'Load\x20Testing',_0x5bb13f(0x357),_0x5bb13f(0x2da),_0x5bb13f(0x2db),_0x5bb13f(0x2ca),_0x5bb13f(0x3ad),_0x5bb13f(0x2ac),_0x5bb13f(0x306)],PROJ_STATUS=['planning',_0x5bb13f(0x340),_0x5bb13f(0x2a5),_0x5bb13f(0x32d),_0x5bb13f(0x1fb)];function generateEcommerce(_0x26f2cb,_0xb75fc7){const _0x2cfce7=_0x5bb13f,_0x12ca57={};return _0x12ca57[_0x2cfce7(0x1b0)]=Array[_0x2cfce7(0x252)]({'length':_0x26f2cb[_0x2cfce7(0x1b0)]},(_0x439423,_0x4c241c)=>{const _0x4b51c9=_0x2cfce7,_0x513df0=pick(PROD_ADJ,_0xb75fc7),_0x35dade=pick(PROD_NOUN,_0xb75fc7);return{'key':uid(_0x4b51c9(0x350),_0x4c241c+0x1),'value':{'name':_0x513df0+'\x20'+_0x35dade,'category':pick(PROD_CAT,_0xb75fc7),'price':Math['round'](0x64*(rng(0x5,0x3e7,_0xb75fc7)+0.99*_0xb75fc7()))/0x64,'stock':rng(0x0,0x1f4,_0xb75fc7),'rating':Math['round'](rng(0x19,0x32,_0xb75fc7))/0xa,'reviewCount':rng(0x0,0x4b0,_0xb75fc7),'description':'The\x20'+_0x513df0+'\x20'+_0x35dade+_0x4b51c9(0x265),'sku':_0x4b51c9(0x3ae)+rng(0x2710,0x1869f,_0xb75fc7),'brand':pick(['TechCore',_0x4b51c9(0x3ab),_0x4b51c9(0x36f),_0x4b51c9(0x381),_0x4b51c9(0x3d7)],_0xb75fc7),'createdAt':dateAgo(0x16d,_0xb75fc7)}};}),_0x12ca57[_0x2cfce7(0x3ba)]=Array[_0x2cfce7(0x252)]({'length':_0x26f2cb[_0x2cfce7(0x3ba)]},(_0x19e4dd,_0x111b73)=>{const _0x5d730f=_0x2cfce7,_0x5b16dd=pick(FIRST,_0xb75fc7),_0x1a3389=pick(LAST,_0xb75fc7);return{'key':uid(_0x5d730f(0x324),_0x111b73+0x1),'value':{'name':_0x5b16dd+'\x20'+_0x1a3389,'email':email(_0x5b16dd,_0x1a3389,_0xb75fc7),'city':pick(CITIES,_0xb75fc7),'country':pick(COUNTRIES,_0xb75fc7),'tier':pick([_0x5d730f(0x368),'silver',_0x5d730f(0x1a6),'platinum'],_0xb75fc7),'totalOrders':rng(0x0,0x32,_0xb75fc7),'totalSpent':Math[_0x5d730f(0x380)](0x64*rng(0x0,0x3a98,_0xb75fc7))/0x64,'joinDate':dateAgo(0x2da,_0xb75fc7),'newsletter':_0xb75fc7()>0.4}};}),_0x12ca57[_0x2cfce7(0x1a9)]=Array[_0x2cfce7(0x252)]({'length':_0x26f2cb[_0x2cfce7(0x1a9)]},(_0x20a7f7,_0x4394f9)=>{const _0x1b606e=_0x2cfce7,_0x34751d=rng(0x1,0x5,_0xb75fc7),_0x111fd1=Array['from']({'length':_0x34751d},()=>{const _0x2289ee=_0x7fa0,_0x53d473=Math[_0x2289ee(0x380)](0x64*rng(0x5,0x1f3,_0xb75fc7))/0x64,_0x2ff16f=rng(0x1,0x4,_0xb75fc7);return{'productId':uid(_0x2289ee(0x350),rng(0x1,_0x26f2cb[_0x2289ee(0x1b0)],_0xb75fc7)),'qty':_0x2ff16f,'price':_0x53d473,'total':Math[_0x2289ee(0x380)](_0x53d473*_0x2ff16f*0x64)/0x64};});return{'key':uid(_0x1b606e(0x2bb),_0x4394f9+0x1),'value':{'customerId':uid(_0x1b606e(0x324),rng(0x1,_0x26f2cb[_0x1b606e(0x3ba)],_0xb75fc7)),'status':pick(ORDER_STATUS,_0xb75fc7),'items':_0x111fd1,'subtotal':_0x111fd1[_0x1b606e(0x2c6)]((_0x4074c6,_0x28e02b)=>_0x4074c6+_0x28e02b['total'],0x0),'shipping':Math[_0x1b606e(0x380)](0x64*rng(0x0,0x14,_0xb75fc7))/0x64,'total':_0x111fd1[_0x1b606e(0x2c6)]((_0x1c065e,_0x5473b7)=>_0x1c065e+_0x5473b7[_0x1b606e(0x215)],0x0)+Math[_0x1b606e(0x380)](0x64*rng(0x0,0x14,_0xb75fc7))/0x64,'createdAt':dateAgo(0xb4,_0xb75fc7),'shippedAt':_0xb75fc7()>0.3?dateAgo(0x3c,_0xb75fc7):null,'address':{'city':pick(CITIES,_0xb75fc7),'country':pick(COUNTRIES,_0xb75fc7)}}};}),_0x12ca57[_0x2cfce7(0x1ab)]=Array[_0x2cfce7(0x252)]({'length':_0x26f2cb[_0x2cfce7(0x1ab)]},(_0x3f387c,_0x318655)=>{const _0x477688=_0x2cfce7,_0x1287de=rng(0x1,0x5,_0xb75fc7);return{'key':uid(_0x477688(0x36e),_0x318655+0x1),'value':{'productId':uid(_0x477688(0x350),rng(0x1,_0x26f2cb['products'],_0xb75fc7)),'customerId':uid(_0x477688(0x324),rng(0x1,_0x26f2cb['customers'],_0xb75fc7)),'stars':_0x1287de,'title':pick(_0x1287de>=0x4?[_0x477688(0x2e3),'Great\x20quality',_0x477688(0x3b6),_0x477688(0x382),_0x477688(0x1bc)]:[_0x477688(0x240),'Not\x20worth\x20it',_0x477688(0x251),'Decent\x20but\x20flawed'],_0xb75fc7),'body':(_0x1287de>=0x4?'Really\x20happy\x20with\x20this\x20purchase.':'Decent\x20but\x20has\x20some\x20issues.')+'\x20'+pick([_0x477688(0x34f),_0x477688(0x34d),_0x477688(0x3b0),_0x477688(0x2c1),_0x477688(0x389)],_0xb75fc7),'verified':_0xb75fc7()>0.2,'helpful':rng(0x0,0xc8,_0xb75fc7),'createdAt':dateAgo(0x16d,_0xb75fc7)}};}),_0x12ca57;}function generateAnalytics(_0x577022,_0xba80b9){const _0x50f390=_0x5bb13f,_0x311383={};return _0x311383[_0x50f390(0x1c1)]=Array[_0x50f390(0x252)]({'length':_0x577022[_0x50f390(0x1c1)]},(_0x583a5a,_0x131ba5)=>({'key':uid(_0x50f390(0x27e),_0x131ba5+0x1),'value':{'userId':_0xba80b9()>0.35?uid(_0x50f390(0x38f),rng(0x1,0x1f4,_0xba80b9)):null,'device':pick(DEVICES,_0xba80b9),'country':pick(COUNTRIES,_0xba80b9),'city':pick(CITIES,_0xba80b9),'duration':rng(0x5,0xe10,_0xba80b9),'pageCount':rng(0x1,0x1e,_0xba80b9),'bounced':_0xba80b9()<0.38,'browser':pick([_0x50f390(0x2e6),'Firefox',_0x50f390(0x2ab),_0x50f390(0x231),_0x50f390(0x228)],_0xba80b9),'startedAt':new Date(Date[_0x50f390(0x2c3)]()-rng(0x0,0x9a7ec800,_0xba80b9))[_0x50f390(0x225)]()}})),_0x311383[_0x50f390(0x256)]=Array[_0x50f390(0x252)]({'length':_0x577022[_0x50f390(0x256)]},(_0x131b73,_0x1b932c)=>({'key':uid('evt',_0x1b932c+0x1),'value':{'type':pick(EVT_TYPES,_0xba80b9),'sessionId':uid(_0x50f390(0x27e),rng(0x1,_0x577022['sessions'],_0xba80b9)),'userId':_0xba80b9()>0.35?uid(_0x50f390(0x38f),rng(0x1,0x1f4,_0xba80b9)):null,'page':pick(PAGES,_0xba80b9),'device':pick(DEVICES,_0xba80b9),'country':pick(COUNTRIES,_0xba80b9),'timestamp':new Date(Date[_0x50f390(0x2c3)]()-rng(0x0,0x9a7ec800,_0xba80b9))[_0x50f390(0x225)](),'value':_0xba80b9()>0.7?Math['round'](0x64*rng(0x1,0x2710,_0xba80b9))/0x64:null}})),_0x311383[_0x50f390(0x2b0)]=Array[_0x50f390(0x252)]({'length':_0x577022['pageviews']},(_0x55d8be,_0x4d274e)=>({'key':uid('pv',_0x4d274e+0x1),'value':{'page':pick(PAGES,_0xba80b9),'sessionId':uid('sess',rng(0x1,_0x577022[_0x50f390(0x1c1)],_0xba80b9)),'referrer':pick(REFERRERS,_0xba80b9),'timeOnPage':rng(0x0,0x258,_0xba80b9),'exitPage':_0xba80b9()>0.7,'timestamp':new Date(Date[_0x50f390(0x2c3)]()-rng(0x0,0x9a7ec800,_0xba80b9))[_0x50f390(0x225)]()}})),_0x311383;}function generateBlog(_0x5e3683,_0x5d8390){const _0x1ff3c5=_0x5bb13f,_0x334246={};_0x334246[_0x1ff3c5(0x29a)]=Array['from']({'length':_0x5e3683['authors']},(_0x4bc05c,_0x5364cc)=>{const _0x460662=_0x1ff3c5,_0x11eb15=pick(FIRST,_0x5d8390),_0x2680d6=pick(LAST,_0x5d8390),_0x5b450f=pick([_0x460662(0x3aa),'Backend','DevOps','Design',_0x460662(0x286),_0x460662(0x1cd),_0x460662(0x36a),_0x460662(0x229)],_0x5d8390);return{'key':uid(_0x460662(0x18f),_0x5364cc+0x1),'value':{'name':_0x11eb15+'\x20'+_0x2680d6,'email':email(_0x11eb15,_0x2680d6,_0x5d8390),'bio':_0x11eb15+_0x460662(0x2d8)+_0x5b450f+_0x460662(0x2ae)+rng(0x2,0x12,_0x5d8390)+_0x460662(0x26a),'specialty':_0x5b450f,'location':pick(CITIES,_0x5d8390),'twitter':'@'+_0x11eb15[_0x460662(0x36c)]()+_0x2680d6[_0x460662(0x36c)](),'postCount':0x0}};});const _0x2713e3=Math[_0x1ff3c5(0x19a)](_0x5e3683[_0x1ff3c5(0x312)],TAG_NAMES[_0x1ff3c5(0x3bf)]);return _0x334246['tags']=Array[_0x1ff3c5(0x252)]({'length':_0x2713e3},(_0x62644e,_0x9c1c06)=>({'key':uid(_0x1ff3c5(0x2b8),_0x9c1c06+0x1),'value':{'name':TAG_NAMES[_0x9c1c06],'count':rng(0x5,0x78,_0x5d8390),'color':pick([_0x1ff3c5(0x3e1),_0x1ff3c5(0x343),_0x1ff3c5(0x1a4),'var(--okdb-warning)',_0x1ff3c5(0x3d9)],_0x5d8390)}})),_0x334246[_0x1ff3c5(0x38c)]=Array[_0x1ff3c5(0x252)]({'length':_0x5e3683[_0x1ff3c5(0x38c)]},(_0x4319ba,_0x3b59e0)=>{const _0x353dca=_0x1ff3c5,_0x4b6e03=POST_TITLES[_0x3b59e0%POST_TITLES[_0x353dca(0x3bf)]],_0x282a76=pick(['','','',_0x353dca(0x244),_0x353dca(0x297),_0x353dca(0x2d5),_0x353dca(0x32f)],_0x5d8390),_0x265c83=_0x282a76?''+_0x282a76+_0x4b6e03:_0x4b6e03,_0x4ed3c1=_0x5d8390()>0.25?_0x353dca(0x2bd):pick(['draft',_0x353dca(0x300)],_0x5d8390);return{'key':uid(_0x353dca(0x31f),_0x3b59e0+0x1),'value':{'title':_0x265c83,'slug':_0x265c83[_0x353dca(0x36c)]()[_0x353dca(0x334)](/[^a-z0-9]+/g,'-')[_0x353dca(0x334)](/^-|-$/g,''),'authorId':uid(_0x353dca(0x18f),rng(0x1,_0x5e3683[_0x353dca(0x29a)],_0x5d8390)),'category':pick(POST_CATS,_0x5d8390),'status':_0x4ed3c1,'tags':[...new Set([uid('tag',rng(0x1,_0x2713e3,_0x5d8390)),uid(_0x353dca(0x2b8),rng(0x1,_0x2713e3,_0x5d8390))])],'content':_0x353dca(0x2f8),'excerpt':'A\x20comprehensive\x20guide\x20to\x20understanding\x20'+_0x4b6e03['toLowerCase']()+_0x353dca(0x348),'readTime':rng(0x2,0x16,_0x5d8390),'views':rng(0x32,0x13880,_0x5d8390),'likes':rng(0x5,0xbb8,_0x5d8390),'featured':_0x5d8390()>0.85,'publishedAt':'published'===_0x4ed3c1?dateAgo(0x190,_0x5d8390):null,'createdAt':dateAgo(0x1c2,_0x5d8390)}};}),_0x334246[_0x1ff3c5(0x28b)]=Array['from']({'length':_0x5e3683[_0x1ff3c5(0x28b)]},(_0x48f7fe,_0x394df9)=>({'key':uid(_0x1ff3c5(0x20f),_0x394df9+0x1),'value':{'postId':uid('post',rng(0x1,_0x5e3683[_0x1ff3c5(0x38c)],_0x5d8390)),'authorName':pick(FIRST,_0x5d8390)+'\x20'+pick(LAST,_0x5d8390),'email':'user'+rng(0x1,0x270f,_0x5d8390)+'@'+pick(DOMAINS,_0x5d8390),'body':pick(COMMENT_BODIES,_0x5d8390),'likes':rng(0x0,0x96,_0x5d8390),'approved':_0x5d8390()>0.1,'createdAt':dateAgo(0x16d,_0x5d8390)}})),_0x334246;}function generateTeam(_0x51e4bc,_0x453b70){const _0x469b3b=_0x5bb13f,_0x1ae425={},_0x468b72=Array[_0x469b3b(0x252)]({'length':_0x51e4bc[_0x469b3b(0x3d3)]},(_0x234a30,_0x35109d)=>uid('dept',_0x35109d+0x1));return _0x1ae425['departments']=_0x468b72[_0x469b3b(0x242)]((_0x3851d2,_0x1a04f4)=>({'key':_0x3851d2,'value':{'name':DEPTS[_0x1a04f4%DEPTS['length']],'head':'','headcount':rng(0x4,0x23,_0x453b70),'budget':rng(0x186a0,0x2dc6c0,_0x453b70),'location':pick(CITIES,_0x453b70),'description':_0x469b3b(0x2af)+DEPTS[_0x1a04f4%DEPTS[_0x469b3b(0x3bf)]]+_0x469b3b(0x1f1)+pick([_0x469b3b(0x30a),_0x469b3b(0x1ee),_0x469b3b(0x220),'culture'],_0x453b70)+_0x469b3b(0x354)}})),_0x1ae425[_0x469b3b(0x326)]=Array[_0x469b3b(0x252)]({'length':_0x51e4bc['employees']},(_0x146676,_0x6d5995)=>{const _0x1a46ea=_0x469b3b,_0x2e5391=pick(FIRST,_0x453b70),_0x2bea2d=pick(LAST,_0x453b70);return{'key':uid(_0x1a46ea(0x2ec),_0x6d5995+0x1),'value':{'name':_0x2e5391+'\x20'+_0x2bea2d,'email':email(_0x2e5391,_0x2bea2d,_0x453b70),'role':pick(ROLES,_0x453b70),'department':pick(_0x468b72,_0x453b70),'level':pick(LEVELS,_0x453b70),'skills':[...new Set([pick(SKILLS,_0x453b70),pick(SKILLS,_0x453b70),pick(SKILLS,_0x453b70)])],'salary':rng(0xbb80,0x445c0,_0x453b70),'hireDate':dateAgo(0x721,_0x453b70),'manager':_0x6d5995>0x0?uid(_0x1a46ea(0x2ec),rng(0x1,Math[_0x1a46ea(0x19d)](0x1,_0x6d5995),_0x453b70)):null,'location':pick(CITIES,_0x453b70),'remote':_0x453b70()>0.45}};}),_0x1ae425['projects']=Array[_0x469b3b(0x252)]({'length':_0x51e4bc['projects']},(_0x51cf50,_0x5ca0c7)=>{const _0x290e52=_0x469b3b,_0x1c7e92=rng(0x2,0x8,_0x453b70);return{'key':uid('proj',_0x5ca0c7+0x1),'value':{'name':PROJ_NAMES[_0x5ca0c7%PROJ_NAMES['length']],'department':pick(_0x468b72,_0x453b70),'status':pick(PROJ_STATUS,_0x453b70),'lead':uid(_0x290e52(0x2ec),rng(0x1,_0x51e4bc['employees'],_0x453b70)),'team':[...new Set(Array['from']({'length':_0x1c7e92},()=>uid(_0x290e52(0x2ec),rng(0x1,_0x51e4bc[_0x290e52(0x326)],_0x453b70))))],'budget':rng(0x2710,0x927c0,_0x453b70),'startDate':dateAgo(0x16d,_0x453b70),'deadline':dateFwd(0xb4,_0x453b70),'progress':rng(0x0,0x64,_0x453b70),'priority':pick([_0x290e52(0x35f),'medium','high',_0x290e52(0x24a)],_0x453b70),'description':PROJ_NAMES[_0x5ca0c7%PROJ_NAMES[_0x290e52(0x3bf)]]+_0x290e52(0x1c8)+pick([_0x290e52(0x1c2),_0x290e52(0x320),'user\x20experience','developer\x20productivity',_0x290e52(0x260)],_0x453b70)+'.'}};}),_0x1ae425;}const PRESETS=[{'id':_0x5bb13f(0x2cf),'icon':'🛒','name':_0x5bb13f(0x2aa),'tagline':_0x5bb13f(0x281),'color':_0x5bb13f(0x1a4),'glow':_0x5bb13f(0x3c1),'defaultEnv':_0x5bb13f(0x1e4),'types':[{'key':'products','label':_0x5bb13f(0x26d),'defaultCount':0xfa},{'key':_0x5bb13f(0x3ba),'label':_0x5bb13f(0x19c),'defaultCount':0x64},{'key':'orders','label':_0x5bb13f(0x2a3),'defaultCount':0x1f4},{'key':'reviews','label':'Reviews','defaultCount':0x12c}],'indexes':[[_0x5bb13f(0x1b0),_0x5bb13f(0x385)],[_0x5bb13f(0x1b0),_0x5bb13f(0x2c8)],['customers',_0x5bb13f(0x290)],[_0x5bb13f(0x3ba),'tier'],[_0x5bb13f(0x1a9),'status'],[_0x5bb13f(0x1a9),_0x5bb13f(0x27a)]],'fts':[{'type':_0x5bb13f(0x1b0),'name':_0x5bb13f(0x298),'fields':[_0x5bb13f(0x1df),_0x5bb13f(0x22b)]}],'generate':generateEcommerce},{'id':_0x5bb13f(0x25e),'icon':'📊','name':_0x5bb13f(0x1b6),'tagline':_0x5bb13f(0x27f),'color':_0x5bb13f(0x3e1),'glow':_0x5bb13f(0x1a0),'defaultEnv':_0x5bb13f(0x1bd),'types':[{'key':_0x5bb13f(0x256),'label':_0x5bb13f(0x1fd),'defaultCount':0x3e8},{'key':_0x5bb13f(0x1c1),'label':'Sessions','defaultCount':0xc8},{'key':'pageviews','label':'Pageviews','defaultCount':0x7d0}],'indexes':[[_0x5bb13f(0x256),_0x5bb13f(0x31d)],[_0x5bb13f(0x256),_0x5bb13f(0x3d2)],[_0x5bb13f(0x1c1),'userId'],[_0x5bb13f(0x1c1),_0x5bb13f(0x1ff)],[_0x5bb13f(0x2b0),'page'],[_0x5bb13f(0x2b0),'sessionId']],'fts':[],'generate':generateAnalytics},{'id':'blog','icon':'📝','name':_0x5bb13f(0x361),'tagline':_0x5bb13f(0x3b4),'color':_0x5bb13f(0x343),'glow':_0x5bb13f(0x1d0),'defaultEnv':'demo-blog','types':[{'key':'posts','label':_0x5bb13f(0x2fc),'defaultCount':0x96},{'key':_0x5bb13f(0x29a),'label':_0x5bb13f(0x362),'defaultCount':0x14},{'key':_0x5bb13f(0x312),'label':'Tags','defaultCount':0x1c},{'key':_0x5bb13f(0x28b),'label':'Comments','defaultCount':0x190}],'indexes':[[_0x5bb13f(0x38c),_0x5bb13f(0x385)],['posts',_0x5bb13f(0x32b)],[_0x5bb13f(0x38c),_0x5bb13f(0x282)],[_0x5bb13f(0x28b),_0x5bb13f(0x374)],['tags',_0x5bb13f(0x325)]],'fts':[{'type':_0x5bb13f(0x38c),'name':_0x5bb13f(0x298),'fields':[_0x5bb13f(0x1ad),_0x5bb13f(0x3a7)]}],'generate':generateBlog},{'id':'team','icon':'👥','name':_0x5bb13f(0x28c),'tagline':'Employees,\x20departments\x20&\x20projects','color':_0x5bb13f(0x2d7),'glow':'color-mix(in\x20srgb,\x20var(--okdb-warning)\x2020%,\x20transparent)','defaultEnv':'demo-team','types':[{'key':'employees','label':_0x5bb13f(0x1c6),'defaultCount':0x50},{'key':'departments','label':_0x5bb13f(0x359),'defaultCount':0x8},{'key':'projects','label':'Projects','defaultCount':0x1e}],'indexes':[[_0x5bb13f(0x326),_0x5bb13f(0x2f3)],[_0x5bb13f(0x326),_0x5bb13f(0x3d8)],[_0x5bb13f(0x326),'location'],['projects','status'],['projects',_0x5bb13f(0x2f3)]],'fts':[{'type':_0x5bb13f(0x326),'name':'search','fields':[_0x5bb13f(0x1df),'role','skills']}],'generate':generateTeam},{'id':_0x5bb13f(0x2f1),'icon':_0x5bb13f(0x2e2),'name':_0x5bb13f(0x1f0),'tagline':_0x5bb13f(0x2eb),'color':_0x5bb13f(0x2a2),'glow':'color-mix(in\x20srgb,\x20var(--okdb-orange)\x2020%,\x20transparent)','defaultEnv':_0x5bb13f(0x318),'badge':_0x5bb13f(0x377),'types':[{'key':_0x5bb13f(0x32a),'label':_0x5bb13f(0x342),'defaultCount':0xc8},{'key':_0x5bb13f(0x3c0),'label':'People','defaultCount':0x50},{'key':_0x5bb13f(0x1a3),'label':_0x5bb13f(0x1e9),'defaultCount':0x12c}],'indexes':[[_0x5bb13f(0x32a),_0x5bb13f(0x31b),{'type':'geo','precision':0x7}],[_0x5bb13f(0x32a),'category'],[_0x5bb13f(0x32a),'city'],[_0x5bb13f(0x32a),_0x5bb13f(0x2a6)],['people','home',{'type':_0x5bb13f(0x377),'precision':0x5}],[_0x5bb13f(0x3c0),_0x5bb13f(0x290)],['checkins',_0x5bb13f(0x26f)],[_0x5bb13f(0x1a3),_0x5bb13f(0x208)]],'fts':[{'type':_0x5bb13f(0x32a),'name':_0x5bb13f(0x298),'fields':['name',_0x5bb13f(0x22b)]}],'generate':generateCityExplorer}],SCALE_OPTIONS=[{'value':0.25,'label':'¼×','hint':_0x5bb13f(0x34e)},{'value':0.5,'label':'½×','hint':_0x5bb13f(0x338)},{'value':0x1,'label':'1×','hint':_0x5bb13f(0x277)},{'value':0x2,'label':'2×','hint':_0x5bb13f(0x365)},{'value':0x4,'label':'4×','hint':_0x5bb13f(0x367)}],BATCH_SIZE=0x32;export default{'tag':_0x5bb13f(0x3a6),'attr':{'modal':{},'onDone':{}},'context':_0x45f070=>({'step':_0x5bb13f(0x221),'preset':null,'envName':'','scale':0x1,'enableFts':!0x0,'enableIndexes':!0x0,'typeCounts':{},'progress':[],'totalSteps':0x0,'completedSteps':0x0,'error':null,'resultStats':null,'PRESETS':PRESETS,'SCALE_OPTIONS':SCALE_OPTIONS,get 'effectiveCounts'(){const _0x45355c=_0x5bb13f,_0x5944be={};for(const _0x4b0af6 of this[_0x45355c(0x2d4)]?.[_0x45355c(0x376)]??[])_0x5944be[_0x4b0af6['key']]=Math[_0x45355c(0x19d)](0x1,Math[_0x45355c(0x380)]((this[_0x45355c(0x199)][_0x4b0af6[_0x45355c(0x3e0)]]??_0x4b0af6[_0x45355c(0x335)])*this[_0x45355c(0x1a5)]));return _0x5944be;},get 'totalRecords'(){const _0x34c888=_0x5bb13f;return Object['values'](this[_0x34c888(0x2c5)])[_0x34c888(0x2c6)]((_0x47b154,_0x3a526a)=>_0x47b154+_0x3a526a,0x0);},get 'progressPct'(){const _0x107081=_0x5bb13f;return this[_0x107081(0x190)]?Math['min'](0x64,Math[_0x107081(0x380)](this['completedSteps']/this[_0x107081(0x190)]*0x64)):0x0;},'selectPreset'(_0x39fc66){const _0x1a0080=_0x5bb13f;this[_0x1a0080(0x2d4)]=_0x39fc66,this[_0x1a0080(0x3a2)]=_0x39fc66[_0x1a0080(0x345)],this[_0x1a0080(0x199)]={};for(const _0x37e7cc of _0x39fc66[_0x1a0080(0x376)])this[_0x1a0080(0x199)][_0x37e7cc[_0x1a0080(0x3e0)]]=_0x37e7cc[_0x1a0080(0x335)];this[_0x1a0080(0x393)]=_0x1a0080(0x2a0);},'back'(){const _0x29e245=_0x5bb13f;_0x29e245(0x2a0)===this[_0x29e245(0x393)]&&(this[_0x29e245(0x393)]=_0x29e245(0x221));},'cancel'(){const _0x3f562f=_0x5bb13f;_0x45f070[_0x3f562f(0x2fa)][_0x3f562f(0x319)][_0x3f562f(0x1b3)]();},'_addStep'(_0x4295f4,_0xfc174f,_0x414cbc,_0x185563){const _0x29f3b1=_0x5bb13f;this[_0x29f3b1(0x253)][_0x29f3b1(0x192)]({'id':_0x4295f4,'label':_0xfc174f,'done':0x0,'total':_0x414cbc,'icon':_0x185563,'status':_0x29f3b1(0x34c)}),this[_0x29f3b1(0x190)]++;},'_start'(_0x2ea7e5){const _0x5dd5b3=_0x5bb13f,_0x262e02=this[_0x5dd5b3(0x253)]['find'](_0x1ca958=>_0x1ca958['id']===_0x2ea7e5);_0x262e02&&(_0x262e02[_0x5dd5b3(0x282)]=_0x5dd5b3(0x23c));},'_done'(_0x25e0b6){const _0x4ac5b6=_0x5bb13f,_0x5a9359=this[_0x4ac5b6(0x253)][_0x4ac5b6(0x37b)](_0x2ed240=>_0x2ed240['id']===_0x25e0b6);_0x5a9359&&(_0x5a9359[_0x4ac5b6(0x282)]=_0x4ac5b6(0x275),_0x5a9359[_0x4ac5b6(0x275)]=_0x5a9359['total'],this[_0x4ac5b6(0x392)]++);},'_error'(_0x2da99d){const _0xdba50d=_0x5bb13f,_0x565731=this['progress'][_0xdba50d(0x37b)](_0x11402c=>_0x11402c['id']===_0x2da99d);_0x565731&&(_0x565731[_0xdba50d(0x282)]=_0xdba50d(0x1d3),this[_0xdba50d(0x392)]++);},'_tick'(_0x1b96ab,_0x546b44){const _0xf0fbce=_0x5bb13f,_0x3c4a3c=this[_0xf0fbce(0x253)][_0xf0fbce(0x37b)](_0x40e4ec=>_0x40e4ec['id']===_0x1b96ab);_0x3c4a3c&&(_0x3c4a3c['done']=_0x546b44);},async 'start'(){const _0x4b5104=_0x5bb13f;if(_0x4b5104(0x250)===this['step'])return;const _0x22a114=this[_0x4b5104(0x3a2)][_0x4b5104(0x2e0)]();if(!_0x22a114||!this[_0x4b5104(0x2d4)])return;this[_0x4b5104(0x393)]=_0x4b5104(0x250),this[_0x4b5104(0x253)]=[],this[_0x4b5104(0x190)]=0x0,this[_0x4b5104(0x392)]=0x0,this[_0x4b5104(0x1d3)]=null,this['resultStats']={'env':_0x22a114,'types':{},'indexes':0x0,'fts':0x0,'totalRecords':0x0};const _0x32d45d=this[_0x4b5104(0x2d4)],_0x4307f6=this['effectiveCounts'],_0x239d19=__ENV__[_0x4b5104(0x39e)],_0x1295d2=_0x239d19+_0x4b5104(0x3bd)+encodeURIComponent(_0x22a114);this[_0x4b5104(0x305)](_0x4b5104(0x20c),_0x4b5104(0x3c6)+_0x22a114+'\x22',0x1,'🌐');for(const _0x1d6c87 of _0x32d45d['types'])this['_addStep'](_0x4b5104(0x372)+_0x1d6c87[_0x4b5104(0x3e0)],_0x4b5104(0x21d)+_0x1d6c87[_0x4b5104(0x3e0)],0x1,'⬡');for(const _0x430587 of _0x32d45d[_0x4b5104(0x376)])this['_addStep'](_0x4b5104(0x31a)+_0x430587[_0x4b5104(0x3e0)],_0x4b5104(0x3c9)+_0x4307f6[_0x430587['key']][_0x4b5104(0x1f8)]()+'\x20'+_0x430587[_0x4b5104(0x1aa)][_0x4b5104(0x36c)](),_0x4307f6[_0x430587[_0x4b5104(0x3e0)]],'⬢');if(this['enableIndexes'])for(const [_0x1d5595,_0x41c489,_0x1e9dfc]of _0x32d45d[_0x4b5104(0x391)]){const _0x142823=_0x4b5104(0x377)===_0x1e9dfc?.[_0x4b5104(0x31d)];this[_0x4b5104(0x305)]('idx:'+_0x1d5595+':'+_0x41c489,(_0x142823?_0x4b5104(0x276):_0x4b5104(0x395))+'\x20'+_0x1d5595+'.'+_0x41c489,0x1,_0x142823?'📍':'⌖');}if(this[_0x4b5104(0x20a)]&&_0x32d45d[_0x4b5104(0x198)]['length']){for(const _0xc986f1 of _0x32d45d['fts'])this[_0x4b5104(0x305)]('fts:'+_0xc986f1['type']+':'+_0xc986f1['name'],_0x4b5104(0x3d1)+_0xc986f1[_0x4b5104(0x1df)]+_0x4b5104(0x1f4)+_0xc986f1[_0x4b5104(0x31d)],0x1,'⌘');}try{this[_0x4b5104(0x304)](_0x4b5104(0x20c));const _0x50fa2d=await fetch(_0x239d19+_0x4b5104(0x3ce),{'method':_0x4b5104(0x1de),'headers':{'Content-Type':_0x4b5104(0x2c7)},'body':JSON[_0x4b5104(0x1ec)]({'name':_0x22a114,'sync':!0x0,'compression':!0x0})});if(!_0x50fa2d['ok']&&0x199!==_0x50fa2d[_0x4b5104(0x282)]){const _0x29fdad=await _0x50fa2d[_0x4b5104(0x236)]()[_0x4b5104(0x287)](()=>({}));throw new Error(_0x29fdad?.[_0x4b5104(0x1d3)]?.[_0x4b5104(0x370)]||_0x4b5104(0x29d)+_0x50fa2d[_0x4b5104(0x282)]+')');}this['_done'](_0x4b5104(0x20c));for(const _0x3cc0c9 of _0x32d45d['types']){this[_0x4b5104(0x304)](_0x4b5104(0x372)+_0x3cc0c9[_0x4b5104(0x3e0)]);const _0x42f2d0=await fetch(_0x1295d2+'/type/'+encodeURIComponent(_0x3cc0c9[_0x4b5104(0x3e0)]),{'method':_0x4b5104(0x1de)});if(!_0x42f2d0['ok']&&0x199!==_0x42f2d0['status']){const _0x32ccd7=await _0x42f2d0[_0x4b5104(0x236)]()[_0x4b5104(0x287)](()=>({}));throw new Error(_0x32ccd7?.['error']?.['message']||'Register\x20type\x20\x22'+_0x3cc0c9[_0x4b5104(0x3e0)]+_0x4b5104(0x39a));}this[_0x4b5104(0x1f6)](_0x4b5104(0x372)+_0x3cc0c9['key']);}const _0x659769=makePRNG(0x7fffffff&Date[_0x4b5104(0x2c3)]()),_0x3fd49d=_0x32d45d[_0x4b5104(0x239)](_0x4307f6,_0x659769);for(const _0x1f41f4 of _0x32d45d[_0x4b5104(0x376)]){const _0x490ec6=_0x4b5104(0x31a)+_0x1f41f4[_0x4b5104(0x3e0)],_0x234a32=_0x3fd49d[_0x1f41f4[_0x4b5104(0x3e0)]]??[];this[_0x4b5104(0x304)](_0x490ec6);let _0x2575f5=0x0;for(let _0x4e54a5=0x0;_0x4e54a5<_0x234a32[_0x4b5104(0x3bf)];_0x4e54a5+=0x32){const _0x1fe161=_0x234a32[_0x4b5104(0x2ce)](_0x4e54a5,_0x4e54a5+0x32),_0x5161eb=_0x1fe161[_0x4b5104(0x242)](({key:_0x41b97c,value:_0x158bfa})=>({'action':'put','type':_0x1f41f4[_0x4b5104(0x3e0)],'key':_0x41b97c,'value':_0x158bfa})),_0x23e29b=await fetch(_0x1295d2+_0x4b5104(0x280),{'method':_0x4b5104(0x1de),'headers':{'Content-Type':'application/json'},'body':JSON[_0x4b5104(0x1ec)]({'operations':_0x5161eb})});if(!_0x23e29b['ok']){const _0x2e74d9=await _0x23e29b[_0x4b5104(0x236)]()[_0x4b5104(0x287)](()=>({}));throw new Error(_0x2e74d9?.[_0x4b5104(0x1d3)]?.[_0x4b5104(0x370)]||_0x4b5104(0x1fa)+_0x1f41f4[_0x4b5104(0x3e0)]+_0x4b5104(0x39a));}_0x2575f5+=_0x1fe161[_0x4b5104(0x3bf)],this[_0x4b5104(0x35d)](_0x490ec6,_0x2575f5),await new Promise(_0x5c8068=>setTimeout(_0x5c8068,0x0));}this[_0x4b5104(0x378)][_0x4b5104(0x376)][_0x1f41f4['key']]=_0x234a32[_0x4b5104(0x3bf)],this[_0x4b5104(0x378)][_0x4b5104(0x1ae)]+=_0x234a32[_0x4b5104(0x3bf)],this['_done'](_0x490ec6);}if(this['enableIndexes'])for(const [_0x1cc8fb,_0x5b6223,_0x532d4a]of _0x32d45d[_0x4b5104(0x391)]){const _0x40ece5=_0x4b5104(0x2b4)+_0x1cc8fb+':'+_0x5b6223;this[_0x4b5104(0x304)](_0x40ece5);const _0x19ce5f=await fetch(_0x1295d2+_0x4b5104(0x3d4)+encodeURIComponent(_0x1cc8fb)+_0x4b5104(0x25c)+encodeURIComponent(_0x5b6223),{'method':_0x4b5104(0x1de),'headers':{'Content-Type':_0x4b5104(0x2c7)},'body':JSON[_0x4b5104(0x1ec)](_0x532d4a||{})});if(!_0x19ce5f['ok']){const _0x4798c3=await _0x19ce5f[_0x4b5104(0x236)]()['catch'](()=>({}));throw new Error(_0x4798c3?.[_0x4b5104(0x1d3)]?.[_0x4b5104(0x370)]||_0x4b5104(0x238)+_0x1cc8fb+'.'+_0x5b6223+_0x4b5104(0x35b));}this[_0x4b5104(0x378)][_0x4b5104(0x391)]++,this[_0x4b5104(0x1f6)](_0x40ece5);}if(this['enableFts'])for(const _0x3a0619 of _0x32d45d[_0x4b5104(0x198)]){const _0x26aa48=_0x4b5104(0x1e7)+_0x3a0619[_0x4b5104(0x31d)]+':'+_0x3a0619['name'];this[_0x4b5104(0x304)](_0x26aa48),(await fetch(_0x1295d2+_0x4b5104(0x3d4)+encodeURIComponent(_0x3a0619['type'])+_0x4b5104(0x293)+encodeURIComponent(_0x3a0619[_0x4b5104(0x1df)]),{'method':_0x4b5104(0x1de),'headers':{'Content-Type':'application/json'},'body':JSON[_0x4b5104(0x1ec)]({'fields':_0x3a0619[_0x4b5104(0x314)]})}))['ok']?(this[_0x4b5104(0x378)][_0x4b5104(0x198)]++,this[_0x4b5104(0x1f6)](_0x26aa48)):this['_error'](_0x26aa48);}this[_0x4b5104(0x393)]=_0x4b5104(0x275);}catch(_0x54e370){this['error']=_0x54e370?.[_0x4b5104(0x370)]||'Generation\x20failed';for(const _0x35ae48 of this['progress'])_0x4b5104(0x23c)===_0x35ae48[_0x4b5104(0x282)]&&this['_error'](_0x35ae48['id']);}},async 'openEnv'(){const _0x13091f=_0x5bb13f,_0x4ef967=this[_0x13091f(0x3a2)][_0x13091f(0x2e0)]();_0x45f070['$ok'][_0x13091f(0x279)][_0x13091f(0x28e)]['selectEnv'](_0x4ef967),await _0x45f070[_0x13091f(0x258)][_0x13091f(0x279)][_0x13091f(0x28e)][_0x13091f(0x247)](),await _0x45f070[_0x13091f(0x2fa)][_0x13091f(0x319)][_0x13091f(0x1b3)](),await _0x45f070[_0x13091f(0x2fa)]['onDone']?.(_0x4ef967);}}),'template':_0x5bb13f(0x2e7),'style':_0x5bb13f(0x19b)};
@@ -0,0 +1 @@
1
+ function _0x52af(){const _0x47c7dd=['355974IPzoQk','data','\x0a<div\x20style=\x22min-width:400px;\x20max-width:500px;\x20display:flex;\x20flex-direction:column;\x20gap:16px;\x22>\x0a\x0a\x20\x20<!--\x20──\x20Warning\x20banner\x20──\x20-->\x0a\x20\x20<div\x20style=\x22background:#1f1008;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-orange)\x2067%,\x20transparent);\x20border-radius:8px;\x20padding:12px\x2014px;\x20display:flex;\x20gap:10px;\x20align-items:flex-start;\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22font-size:18px;\x20flex-shrink:0;\x20line-height:1.2;\x22>⚠️</span>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20line-height:1.6;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20color:var(--okdb-orange);\x20margin-bottom:3px;\x22>This\x20will\x20permanently\x20delete\x20the\x20environment.</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20The\x20LMDB\x20data\x20files\x20for\x20<b\x20style=\x22font-family:monospace;\x22>{{\x20name\x20}}</b>\x20will\x20be\x20removed\x20from\x20disk.\x0a\x20\x20\x20\x20\x20\x20\x20\x20This\x20cannot\x20be\x20undone.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Env\x20stats\x20──\x20-->\x0a\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:1fr\x201fr;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22rem-stat\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22rem-stat__label\x22>Types</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22rem-stat__value\x22\x20style=\x22color:var(--okdb-purple);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22infoLoading\x22><span\x20style=\x22opacity:.4;\x22>…</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!infoLoading\x22>{{\x20fmt(typeCount)\x20}}</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22rem-stat\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22rem-stat__label\x22>Total\x20Records</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22rem-stat__value\x22\x20style=\x22color:var(--okdb-success);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22infoLoading\x22><span\x20style=\x22opacity:.4;\x22>…</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!infoLoading\x22>{{\x20fmt(recordCount)\x20}}</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Sub-envs\x20that\x20will\x20also\x20be\x20deleted\x20──\x20-->\x0a\x20\x20<if\x20:=\x22subEnvs.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22background:#111820;\x20border:1px\x20solid\x20#1e3050;\x20border-radius:8px;\x20padding:10px\x2014px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.06em;\x20opacity:.45;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Related\x20databases\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22subEnvs\x22\x20let:item=\x22e\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20flex:1;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22checkbox\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:checked=\x22!keepSubEnvs.has(e.name)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22toggleKeep(e.name)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22accent-color:var(--okdb-danger);\x20cursor:pointer;\x20flex-shrink:0;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20color:#7a9ab2;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20subEnvLabel(e.name)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22isEmbEnv(e.name)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22flex-shrink:0;\x20font-size:10px;\x20padding:1px\x205px;\x20border-radius:999px;\x20background:#4c1d95;\x20color:#c4b5fd;\x20border:1px\x20solid\x20#6d28d944;\x22>embeddings</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22flex-shrink:0;\x20font-size:10px;\x20opacity:.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22keepSubEnvs.has(e.name)\x22>keep</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!keepSubEnvs.has(e.name)\x22><span\x20style=\x22color:var(--okdb-danger);\x22>delete</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22keepSubEnvs.size\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:8px;\x20font-size:11px;\x20opacity:.5;\x20line-height:1.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Kept\x20databases\x20will\x20become\x20orphaned\x20and\x20can\x20be\x20managed\x20or\x20dismissed\x20later.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Locked\x20files\x20warning\x20(post-removal)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22warning\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-warning);\x20font-size:12px;\x20padding:8px\x2012px;\x20background:#221c08;\x20border-radius:6px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-warning)\x2020%,\x20transparent);\x20line-height:1.5;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20margin-bottom:3px;\x22>⚠\x20Some\x20files\x20could\x20not\x20be\x20deleted</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.8;\x22>{{\x20warning\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20margin-top:4px;\x20font-size:11px;\x22>These\x20files\x20may\x20be\x20locked\x20by\x20another\x20OKDB\x20process.\x20Stop\x20all\x20other\x20instances\x20and\x20delete\x20them\x20manually.</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Confirm\x20input\x20(hidden\x20after\x20warning\x20state)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22!warning\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20opacity:.6;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Type\x20<code\x20style=\x22font-size:12px;\x20color:var(--okdb-orange);\x20background:#1f1008;\x20padding:1px\x205px;\x20border-radius:3px;\x22>{{\x20name\x20}}</code>\x20to\x20confirm\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:placeholder=\x22name\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22confirm\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22confirm\x20=\x20$el.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@keydown.enter=\x22remove()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20autofocus\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-family:monospace;\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Error\x20──\x20-->\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x20padding:8px\x2012px;\x20background:var(--okdb-danger-deep-bg);\x20border-radius:6px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x22>\x0a\x20\x20\x20\x20\x20\x20{{\x20error\x20}}\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Buttons\x20──\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20justify-content:flex-end;\x20padding-top:4px;\x20border-top:1px\x20solid\x20var(--okdb-app-surface-2);\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22\x20:disabled=\x22busy\x22>{{\x20warning\x20?\x20\x27Close\x27\x20:\x20\x27Cancel\x27\x20}}</button>\x0a\x20\x20\x20\x20<if\x20:=\x22!warning\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22remove()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!canRemove\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22background:var(--okdb-danger-deep-border);\x20border-color:#991b1b;\x20color:var(--okdb-danger);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22canRemove\x20?\x20\x27background:var(--okdb-danger-deep-border);\x20border-color:#b91c1c;\x20color:var(--okdb-danger);\x20cursor:pointer;\x27\x20:\x20\x27opacity:.4;\x20cursor:not-allowed;\x27\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20busy\x20?\x20\x27Removing…\x27\x20:\x20\x27🗑\x20Remove\x20Environment\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a</div>','?keepSubEnvs=','toLocaleString','loadInfo','error','$ok','\x0a\x20\x20\x20\x20\x20\x20remove-env-modal\x20.rem-stat\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#13191f;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20#1e2d3c;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x204px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20remove-env-modal\x20.rem-stat__label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.06em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.45;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20remove-env-modal\x20.rem-stat__value\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2020px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','filesLocked','3rEWvmt','742637tYoTGv','32113NHpWrl','reduce','name','delete','Some\x20files\x20could\x20not\x20be\x20deleted\x20(may\x20be\x20locked):\x20','2021555qRdsSn','add','/info','busy','DELETE','envs','warning','length','onDone','envInfo','orphaned','count','slice','json','4730516InhjgZ','close','infoLoading','8cLUwfL','startsWith','join','5625972jDXhOt','types','keepSubEnvs','1515736fCvMje','modal','remove-env-modal','$attr','stores'];_0x52af=function(){return _0x47c7dd;};return _0x52af();}function _0x40ef(_0x970ec4,_0x18eacd){_0x970ec4=_0x970ec4-0x1b7;const _0x52af7d=_0x52af();let _0x40ef26=_0x52af7d[_0x970ec4];return _0x40ef26;}const _0xbea769=_0x40ef;(function(_0x1254b2,_0x3dd864){const _0x1be405=_0x40ef,_0x2be8ed=_0x1254b2();while(!![]){try{const _0x28d2a8=-parseInt(_0x1be405(0x1e0))/0x1+parseInt(_0x1be405(0x1cf))/0x2+parseInt(_0x1be405(0x1de))/0x3*(-parseInt(_0x1be405(0x1c6))/0x4)+parseInt(_0x1be405(0x1b8))/0x5+-parseInt(_0x1be405(0x1d4))/0x6+parseInt(_0x1be405(0x1df))/0x7*(parseInt(_0x1be405(0x1c9))/0x8)+parseInt(_0x1be405(0x1cc))/0x9;if(_0x28d2a8===_0x3dd864)break;else _0x2be8ed['push'](_0x2be8ed['shift']());}catch(_0x45e827){_0x2be8ed['push'](_0x2be8ed['shift']());}}}(_0x52af,0x9732b));export default{'tag':_0xbea769(0x1d1),'attr':{'modal':{},'envName':{},'onDone':{}},'context':_0x3651a8=>({'busy':!0x1,'confirm':'','error':null,'warning':null,'envInfo':null,'infoLoading':!0x1,'keepSubEnvs':new Set(),get 'name'(){const _0x2675ef=_0xbea769;return _0x3651a8[_0x2675ef(0x1d2)]['envName']||'';},get 'canRemove'(){const _0x5b8398=_0xbea769;return this['confirm']===this['name']&&!this[_0x5b8398(0x1bb)];},get 'subEnvs'(){const _0x5f5a83=_0xbea769,_0x28d75e=_0x3651a8[_0x5f5a83(0x1db)][_0x5f5a83(0x1d3)]['okdb'][_0x5f5a83(0x1bd)]||[],_0x10208c=this[_0x5f5a83(0x1e2)];return _0x28d75e['filter'](_0x1d4244=>_0x1d4244[_0x5f5a83(0x1e2)]!==_0x10208c&&!_0x1d4244[_0x5f5a83(0x1c2)]&&(_0x1d4244['parentEnv']===_0x10208c||_0x1d4244[_0x5f5a83(0x1e2)][_0x5f5a83(0x1ca)]('~'+_0x10208c+':')));},'isEmbEnv':_0x567a22=>_0x567a22['includes'](':emb:'),'subEnvLabel'(_0x2c7634){const _0x3f5b4b=_0xbea769,_0x1d75b3='~'+this[_0x3f5b4b(0x1e2)]+':';return _0x2c7634['startsWith'](_0x1d75b3)?_0x2c7634[_0x3f5b4b(0x1c4)](_0x1d75b3['length']):_0x2c7634;},'toggleKeep'(_0x166b95){const _0x455545=_0xbea769,_0xc5fc25=new Set(this[_0x455545(0x1ce)]);_0xc5fc25['has'](_0x166b95)?_0xc5fc25[_0x455545(0x1e3)](_0x166b95):_0xc5fc25[_0x455545(0x1b9)](_0x166b95),this[_0x455545(0x1ce)]=_0xc5fc25;},get 'typeCount'(){const _0x3cda63=_0xbea769;return Object['keys'](this['envInfo']?.[_0x3cda63(0x1cd)]??{})[_0x3cda63(0x1bf)];},get 'recordCount'(){const _0x4a3436=_0xbea769;return Object['values'](this[_0x4a3436(0x1c1)]?.['types']??{})[_0x4a3436(0x1e1)]((_0x8fb74c,_0x42baa6)=>_0x8fb74c+(_0x42baa6[_0x4a3436(0x1c3)]||0x0),0x0);},async 'loadInfo'(){const _0x4fa80a=_0xbea769;this[_0x4fa80a(0x1c8)]=!0x0;try{const _0x3dbc9f=await fetch(__ENV__['API']+'/env/'+encodeURIComponent(this[_0x4fa80a(0x1e2)])+_0x4fa80a(0x1ba));_0x3dbc9f['ok']&&(this[_0x4fa80a(0x1c1)]=(await _0x3dbc9f[_0x4fa80a(0x1c5)]())[_0x4fa80a(0x1d5)]);}catch{}finally{this['infoLoading']=!0x1;}},async 'remove'(){const _0xd58abd=_0xbea769;if(this['canRemove']){this[_0xd58abd(0x1bb)]=!0x0,this['error']=null,this[_0xd58abd(0x1be)]=null;try{let _0x1f0a0a=__ENV__['API']+'/env/'+encodeURIComponent(this[_0xd58abd(0x1e2)]);this['keepSubEnvs']['size']>0x0&&(_0x1f0a0a+=_0xd58abd(0x1d7)+encodeURIComponent([...this[_0xd58abd(0x1ce)]]['join'](',')));const _0x89470c=await fetch(_0x1f0a0a,{'method':_0xd58abd(0x1bc)}),_0x3bf930=await _0x89470c['json']()['catch'](()=>({}));if(!_0x89470c['ok'])throw new Error(_0x3bf930?.[_0xd58abd(0x1da)]?.['message']||_0x89470c['statusText']);const _0x579d8d=_0x3bf930[_0xd58abd(0x1d5)]??_0x3bf930;if(_0x579d8d[_0xd58abd(0x1be)]||_0x579d8d[_0xd58abd(0x1dd)]?.[_0xd58abd(0x1bf)])return this[_0xd58abd(0x1be)]=_0x579d8d[_0xd58abd(0x1be)]??_0xd58abd(0x1b7)+_0x579d8d[_0xd58abd(0x1dd)][_0xd58abd(0x1cb)](',\x20'),await _0x3651a8[_0xd58abd(0x1d2)]['onDone']?.(this[_0xd58abd(0x1e2)],_0x579d8d),void(this[_0xd58abd(0x1bb)]=!0x1);await _0x3651a8[_0xd58abd(0x1d2)]['modal'][_0xd58abd(0x1c7)](),await _0x3651a8[_0xd58abd(0x1d2)][_0xd58abd(0x1c0)]?.(this[_0xd58abd(0x1e2)],_0x579d8d);}catch(_0x4f8ca8){this[_0xd58abd(0x1da)]=_0x4f8ca8?.['message']||'Failed\x20to\x20remove\x20environment';}finally{this['busy']=!0x1;}}},'cancel'(){const _0x1da4c6=_0xbea769;_0x3651a8['$attr'][_0x1da4c6(0x1d0)][_0x1da4c6(0x1c7)]();},'fmt':_0x406764=>null==_0x406764?'—':Number(_0x406764)[_0xbea769(0x1d8)]()}),'init'(){const _0x516c74=_0xbea769;this[_0x516c74(0x1d9)]();},'template':_0xbea769(0x1d6),'style':_0xbea769(0x1dc)};
@@ -0,0 +1 @@
1
+ const _0x1fac42=_0x2256;(function(_0x5b6902,_0x11b7e2){const _0x442d71=_0x2256,_0x4338d7=_0x5b6902();while(!![]){try{const _0x5c3336=-parseInt(_0x442d71(0x235))/0x1*(-parseInt(_0x442d71(0x1ce))/0x2)+-parseInt(_0x442d71(0x1f8))/0x3*(-parseInt(_0x442d71(0x1f1))/0x4)+-parseInt(_0x442d71(0x23a))/0x5*(parseInt(_0x442d71(0x220))/0x6)+parseInt(_0x442d71(0x1de))/0x7*(parseInt(_0x442d71(0x232))/0x8)+-parseInt(_0x442d71(0x212))/0x9*(parseInt(_0x442d71(0x1fc))/0xa)+-parseInt(_0x442d71(0x243))/0xb+-parseInt(_0x442d71(0x226))/0xc*(parseInt(_0x442d71(0x1f0))/0xd);if(_0x5c3336===_0x11b7e2)break;else _0x4338d7['push'](_0x4338d7['shift']());}catch(_0x42a670){_0x4338d7['push'](_0x4338d7['shift']());}}}(_0x2732,0x8dc28));function _0x2256(_0xd2c662,_0x4f7b4c){_0xd2c662=_0xd2c662-0x1c3;const _0x273274=_0x2732();let _0x225602=_0x273274[_0xd2c662];return _0x225602;}import _0x1a4718 from'@toolkit/elements/ok-icon.ok.js';import _0x2f47db from'@toolkit/core/ok-overlay.ok.js';import _0x5364b4 from'../../../components/ok-json-input.ok.js';function i(_0x35013e){const _0x1dac9f=_0x2256;return null==_0x35013e?_0x35013e:JSON[_0x1dac9f(0x247)](JSON[_0x1dac9f(0x213)](_0x35013e));}function o(_0x48b788='',_0x4797da='string'){return{'name':_0x48b788,'type':_0x4797da,'nullable':!0x1,'required':!0x1,'description':'','enum':null,'const':null,'format':'','minimum':null,'maximum':null,'exclusiveMinimum':null,'exclusiveMaximum':null,'multipleOf':null,'minLength':null,'maxLength':null,'pattern':'','minItems':null,'maxItems':null,'uniqueItems':!0x1,'refType':'','refOnDelete':'no_action','children':[],'childrenAdditionalProps':!0x0,'items':null,'expanded':!0x1,'_extra':{}};}function a(_0x39a853,_0x2e7bba,_0x41c187,_0x14a681=0x0){const _0x152cd2=_0x2256,_0x3e5855=_0x2e7bba['type'];let _0x279a68,_0xfdb3e4=!0x1;Array[_0x152cd2(0x1fb)](_0x3e5855)?(_0xfdb3e4=_0x3e5855[_0x152cd2(0x1d7)](_0x152cd2(0x1c9)),_0x279a68=_0x3e5855['find'](_0x5dea75=>_0x152cd2(0x1c9)!==_0x5dea75)||'string'):_0x279a68=_0x3e5855||_0x152cd2(0x1d5);const _0x317726=o(_0x39a853,_0x279a68);if(_0x317726['nullable']=_0xfdb3e4,_0x317726[_0x152cd2(0x1e2)]=_0x41c187,_0x317726['description']=_0x2e7bba[_0x152cd2(0x207)]||'',Array[_0x152cd2(0x1fb)](_0x2e7bba['enum'])&&(_0x317726['enum']=_0x2e7bba[_0x152cd2(0x248)]),void 0x0!==_0x2e7bba[_0x152cd2(0x22a)]&&(_0x317726[_0x152cd2(0x22a)]={'value':_0x2e7bba[_0x152cd2(0x22a)]}),_0x2e7bba[_0x152cd2(0x20f)]&&(_0x317726['format']=_0x2e7bba['format']),void 0x0!==_0x2e7bba[_0x152cd2(0x205)]&&(_0x317726[_0x152cd2(0x205)]=_0x2e7bba[_0x152cd2(0x205)]),void 0x0!==_0x2e7bba[_0x152cd2(0x1cd)]&&(_0x317726[_0x152cd2(0x1cd)]=_0x2e7bba['maximum']),void 0x0!==_0x2e7bba[_0x152cd2(0x1ed)]&&(_0x317726[_0x152cd2(0x1ed)]=_0x2e7bba[_0x152cd2(0x1ed)]),void 0x0!==_0x2e7bba[_0x152cd2(0x1d0)]&&(_0x317726['exclusiveMaximum']=_0x2e7bba[_0x152cd2(0x1d0)]),void 0x0!==_0x2e7bba[_0x152cd2(0x20d)]&&(_0x317726['multipleOf']=_0x2e7bba['multipleOf']),void 0x0!==_0x2e7bba[_0x152cd2(0x1ec)]&&(_0x317726[_0x152cd2(0x1ec)]=_0x2e7bba[_0x152cd2(0x1ec)]),void 0x0!==_0x2e7bba[_0x152cd2(0x1ee)]&&(_0x317726[_0x152cd2(0x1ee)]=_0x2e7bba['maxLength']),_0x2e7bba[_0x152cd2(0x1dd)]&&(_0x317726[_0x152cd2(0x1dd)]=_0x2e7bba[_0x152cd2(0x1dd)]),void 0x0!==_0x2e7bba['minItems']&&(_0x317726['minItems']=_0x2e7bba['minItems']),void 0x0!==_0x2e7bba[_0x152cd2(0x1d1)]&&(_0x317726['maxItems']=_0x2e7bba[_0x152cd2(0x1d1)]),!0x0===_0x2e7bba[_0x152cd2(0x20c)]&&(_0x317726[_0x152cd2(0x20c)]=!0x0),_0x2e7bba['ref']&&_0x152cd2(0x225)==typeof _0x2e7bba[_0x152cd2(0x1d9)]&&_0x2e7bba['ref'][_0x152cd2(0x1e7)]&&(_0x317726['refType']=_0x2e7bba['ref'][_0x152cd2(0x1e7)],_0x317726[_0x152cd2(0x1cc)]=_0x2e7bba['ref'][_0x152cd2(0x1c4)]||_0x152cd2(0x1f3)),_0x152cd2(0x225)===_0x279a68&&_0x2e7bba[_0x152cd2(0x221)]&&_0x14a681<0x4){const _0x33a2e3=new Set(_0x2e7bba[_0x152cd2(0x1e2)]||[]);_0x317726[_0x152cd2(0x202)]=Object[_0x152cd2(0x20b)](_0x2e7bba[_0x152cd2(0x221)])[_0x152cd2(0x22d)](([_0x36428e,_0xb4adb0])=>a(_0x36428e,_0xb4adb0,_0x33a2e3[_0x152cd2(0x228)](_0x36428e),_0x14a681+0x1)),_0x317726[_0x152cd2(0x234)]=!0x1!==_0x2e7bba[_0x152cd2(0x208)];}_0x152cd2(0x244)===_0x279a68&&_0x2e7bba[_0x152cd2(0x206)]&&_0x152cd2(0x225)==typeof _0x2e7bba['items']&&_0x14a681<0x4&&(_0x317726[_0x152cd2(0x206)]=a(_0x152cd2(0x21f),_0x2e7bba['items'],!0x1,_0x14a681+0x1));const _0xb6a811=new Set([_0x152cd2(0x1e7),'description',_0x152cd2(0x248),_0x152cd2(0x22a),_0x152cd2(0x20f),_0x152cd2(0x205),_0x152cd2(0x1cd),_0x152cd2(0x1ed),_0x152cd2(0x1d0),_0x152cd2(0x20d),'minLength','maxLength',_0x152cd2(0x1dd),_0x152cd2(0x1f5),'maxItems','uniqueItems','properties',_0x152cd2(0x1e2),_0x152cd2(0x208),_0x152cd2(0x206),'default',_0x152cd2(0x1d2),_0x152cd2(0x1c5),_0x152cd2(0x1d9)]);for(const _0x36bf46 of Object[_0x152cd2(0x200)](_0x2e7bba))_0xb6a811['has'](_0x36bf46)||(_0x317726[_0x152cd2(0x215)][_0x36bf46]=i(_0x2e7bba[_0x36bf46]));return _0x317726;}function r(_0x554f16){const _0x25c120=_0x2256,_0x3ccdb0={};if(_0x554f16['nullable']&&_0x25c120(0x1c9)!==_0x554f16['type']?_0x3ccdb0[_0x25c120(0x1e7)]=[_0x554f16[_0x25c120(0x1e7)],_0x25c120(0x1c9)]:_0x3ccdb0[_0x25c120(0x1e7)]=_0x554f16[_0x25c120(0x1e7)],_0x554f16[_0x25c120(0x207)]&&(_0x3ccdb0[_0x25c120(0x207)]=_0x554f16[_0x25c120(0x207)]),_0x554f16['enum']&&_0x554f16[_0x25c120(0x248)]['length']>0x0&&(_0x3ccdb0[_0x25c120(0x248)]=_0x554f16[_0x25c120(0x248)]),null!==_0x554f16['const']&&void 0x0!==_0x554f16[_0x25c120(0x22a)]&&(_0x3ccdb0[_0x25c120(0x22a)]=_0x554f16[_0x25c120(0x22a)][_0x25c120(0x245)]),_0x554f16['format']&&(_0x3ccdb0[_0x25c120(0x20f)]=_0x554f16[_0x25c120(0x20f)]),null!==_0x554f16['minimum']&&void 0x0!==_0x554f16[_0x25c120(0x205)]&&(_0x3ccdb0[_0x25c120(0x205)]=_0x554f16[_0x25c120(0x205)]),null!==_0x554f16[_0x25c120(0x1cd)]&&void 0x0!==_0x554f16[_0x25c120(0x1cd)]&&(_0x3ccdb0[_0x25c120(0x1cd)]=_0x554f16[_0x25c120(0x1cd)]),null!==_0x554f16[_0x25c120(0x1ed)]&&void 0x0!==_0x554f16[_0x25c120(0x1ed)]&&(_0x3ccdb0[_0x25c120(0x1ed)]=_0x554f16[_0x25c120(0x1ed)]),null!==_0x554f16[_0x25c120(0x1d0)]&&void 0x0!==_0x554f16[_0x25c120(0x1d0)]&&(_0x3ccdb0['exclusiveMaximum']=_0x554f16[_0x25c120(0x1d0)]),null!==_0x554f16['multipleOf']&&void 0x0!==_0x554f16[_0x25c120(0x20d)]&&(_0x3ccdb0[_0x25c120(0x20d)]=_0x554f16[_0x25c120(0x20d)]),null!==_0x554f16[_0x25c120(0x1ec)]&&void 0x0!==_0x554f16[_0x25c120(0x1ec)]&&(_0x3ccdb0['minLength']=_0x554f16[_0x25c120(0x1ec)]),null!==_0x554f16['maxLength']&&void 0x0!==_0x554f16['maxLength']&&(_0x3ccdb0[_0x25c120(0x1ee)]=_0x554f16['maxLength']),_0x554f16[_0x25c120(0x1dd)]&&(_0x3ccdb0[_0x25c120(0x1dd)]=_0x554f16[_0x25c120(0x1dd)]),null!==_0x554f16['minItems']&&void 0x0!==_0x554f16[_0x25c120(0x1f5)]&&(_0x3ccdb0['minItems']=_0x554f16[_0x25c120(0x1f5)]),null!==_0x554f16[_0x25c120(0x1d1)]&&void 0x0!==_0x554f16['maxItems']&&(_0x3ccdb0[_0x25c120(0x1d1)]=_0x554f16[_0x25c120(0x1d1)]),_0x554f16[_0x25c120(0x20c)]&&(_0x3ccdb0[_0x25c120(0x20c)]=!0x0),_0x554f16['refType']&&(_0x3ccdb0['ref']={'type':_0x554f16[_0x25c120(0x237)]},_0x554f16[_0x25c120(0x1cc)]&&_0x25c120(0x1f3)!==_0x554f16[_0x25c120(0x1cc)]&&(_0x3ccdb0[_0x25c120(0x1d9)][_0x25c120(0x1c4)]=_0x554f16[_0x25c120(0x1cc)])),_0x25c120(0x225)===_0x554f16[_0x25c120(0x1e7)]&&_0x554f16[_0x25c120(0x202)][_0x25c120(0x23f)]>0x0){_0x3ccdb0[_0x25c120(0x221)]={};const _0x27268b=[];for(const _0x1e03f6 of _0x554f16[_0x25c120(0x202)])_0x3ccdb0[_0x25c120(0x221)][_0x1e03f6['name']]=r(_0x1e03f6),_0x1e03f6['required']&&_0x27268b[_0x25c120(0x1eb)](_0x1e03f6['name']);_0x27268b['length']>0x0&&(_0x3ccdb0[_0x25c120(0x1e2)]=_0x27268b),_0x3ccdb0[_0x25c120(0x208)]=_0x554f16['childrenAdditionalProps'];}if(_0x25c120(0x244)===_0x554f16['type']&&_0x554f16[_0x25c120(0x206)]&&(_0x3ccdb0[_0x25c120(0x206)]=r(_0x554f16[_0x25c120(0x206)])),_0x554f16[_0x25c120(0x215)]){for(const [_0x34e7e5,_0xfb0fea]of Object[_0x25c120(0x20b)](_0x554f16[_0x25c120(0x215)]))_0x3ccdb0[_0x34e7e5]=i(_0xfb0fea);}return _0x3ccdb0;}function l(_0x46e277){const _0x3de043=_0x2256;if(!_0x46e277||!_0x46e277[_0x3de043(0x221)])return[];const _0x12093e=new Set(_0x46e277[_0x3de043(0x1e2)]||[]);return Object[_0x3de043(0x20b)](_0x46e277[_0x3de043(0x221)])[_0x3de043(0x22d)](([_0x46cf09,_0x3b901d])=>a(_0x46cf09,_0x3b901d,_0x12093e['has'](_0x46cf09),0x0));}function _0x2732(){const _0x45a209=['enforce','type','\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-root\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x20640px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20960px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-toolbar\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-visual\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-height:\x2060vh;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20auto;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-props-hdr\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2028px\x20minmax(100px,\x201.5fr)\x20110px\x2036px\x2036px\x201fr\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x200\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-props-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2028px\x20minmax(100px,\x201.5fr)\x20110px\x2036px\x2036px\x201fr\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-col\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn.sem-expanded\x20{\x20transform:\x20rotate(90deg);\x20opacity:\x20.8;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-prop-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-prop-name\x20code\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-json-key);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Detail\x20/\x20constraints\x20panel\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-detail-panel\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2012px\x2012px\x2036px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2080px\x201fr\x2080px\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20input,\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20select\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraint-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraint-row\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x2040px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.35;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Nested\x20object/array\x20section\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-left:\x202px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-left:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x202px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-children\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-child-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-child-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x2060px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-overflow:\x20ellipsis;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-l2\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-left:\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-left:\x201px\x20solid\x20var(--okdb-app-border)66;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-left:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x204px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-add-child-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-add-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x200\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Foreign\x20key\x20section\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20#6366f133;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#6366f108;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-indigo);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20select\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x20100px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-clear\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-clear:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.4;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-hint\x20strong\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-indigo);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-json\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-height:\x20300px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20pre-wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-actions\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','name','split','push','minLength','exclusiveMinimum','maxLength','flatMap','39RtsOTI','1443588RBAckL','/types','no_action','No\x20documents\x20found\x20to\x20infer\x20schema\x20from.','minItems','/query','failures','3giKSfP','editDefinition','$attr','isArray','4407220CYIzdC','Schema\x20saved','toast','dirty','keys','\x22?\x20Validation\x20will\x20be\x20disabled.','children','Remove\x20schema\x20from\x20\x22','Schema\x20conflicts\x20with\x20existing\x20data','minimum','items','description','additionalProperties','_newChildNames','_inferSchemaFromData','entries','uniqueItems','multipleOf','schema','format','Property\x20\x22','Failed\x20to\x20fetch\x20samples','9HHYYHF','stringify','newPropName','_extra','modal','rows','json','Inferring\x20from\x20','catch','filter','status','hideEnforce','some','(item)','1380WoFnnv','properties','mode','DELETE','payload','object','1048164xcyCoV','POST','has','saveError','const','undefined','/type/','map','samplesUrl','join','message','trim','4048032OoyOFw','saveUrl','childrenAdditionalProps','23VRaMUa','confirm','refType','close','expanded','8630bDhilB','schema-edit-modal','Remove\x20failed','doc','Cannot\x20enable\x20enforce\x20—\x20','length','editEnforce','key','flat','7794941knCPWp','array','value','nullable','parse','enum','Failed\x20to\x20fetch\x20data','definition','success','envApiBase','error','application/json','onDelete','$defs','data','\x22\x20already\x20exists','\x20more)','null','loadTypesList','result','refOnDelete','maximum','88358QolCkv','\x0a<div\x20class=\x22sem-root\x22>\x0a\x0a\x20\x20<if\x20:=\x22saveBusy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22><ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon></div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Toolbar\x20-->\x0a\x20\x20<div\x20class=\x22sem-toolbar\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20:class=\x22mode\x20===\x20\x27visual\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22switchToVisual()\x22>Visual</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20:class=\x22mode\x20===\x20\x27json\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22switchToJson()\x22>JSON</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!hideEnforce\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:13px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20margin-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22editEnforce\x22\x20@change=\x22setEditEnforce($event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Enforce\x20mode\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>(reject\x20writes\x20that\x20violate)</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22generateFromData()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.75;\x22\x20title=\x22Sample\x20latest\x20documents\x20to\x20build\x20a\x20schema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22zap\x22></ok-icon>\x20Infer\x20from\x20data\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20═══════\x20Visual\x20mode\x20═══════\x20-->\x0a\x20\x20<if\x20:=\x22mode\x20===\x20\x27visual\x27\x22>\x0a\x20\x20<div\x20class=\x22sem-visual\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Properties\x20table\x20header\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22sem-props-hdr\x22>\x0a\x20\x20\x20\x20\x20\x20<div></div><div>Property</div><div>Type</div><div>Req</div><div>Null</div><div>Description</div><div></div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Recursive\x20row\x20rendering\x20for\x20depth\x200\x20-->\x0a\x20\x20\x20\x20<each\x20:of=\x22rows\x22\x20let:item=\x22row\x22\x20let:index=\x22i\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Main\x20property\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-props-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-expand-col\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22toggleRowExpanded(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22sem-expand-btn\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22row.expanded\x20?\x20\x27sem-expanded\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20details\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>›</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-prop-name\x22><code>{{\x20row.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.type\x22\x20@change=\x22setRowField(row,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:90px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.required\x22\x20@change=\x22toggleRowRequired(row)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.nullable\x22\x20@change=\x22toggleRowNullable(row)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22overflow:hidden;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22row.description\x22\x20@input=\x22setRowField(row,\x20\x27description\x27,\x20$event.target.value)\x22\x20placeholder=\x22—\x22\x20style=\x22width:100%;\x20font-size:12px;\x20box-sizing:border-box;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(rows,\x20i)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20padding:2px\x206px;\x20font-size:14px;\x20line-height:1;\x22\x20title=\x22Remove\x20property\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Expanded\x20detail\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.expanded\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-detail-panel\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20String\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27string\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Format</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.format\x20||\x20\x27\x27\x22\x20@change=\x22setRowConstraint(row,\x20\x27format\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date-time\x22>date-time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date\x22>date</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22time\x22>time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22email\x22>email</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uri\x22>uri</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uuid\x22>uuid</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22ipv4\x22>ipv4</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22ipv6\x22>ipv6</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22hostname\x22>hostname</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Min\x20Length</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minLength\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minLength\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Max\x20Length</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maxLength\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maxLength\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Pattern</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22row.pattern\x22\x20@input=\x22setRowConstraint(row,\x20\x27pattern\x27,\x20$event.target.value)\x22\x20placeholder=\x22regex…\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Number\x20/\x20Integer\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27number\x27\x20||\x20row.type\x20===\x20\x27integer\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Minimum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minimum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minimum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Maximum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maximum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maximum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Excl.\x20Min</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.exclusiveMinimum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27exclusiveMinimum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Excl.\x20Max</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.exclusiveMaximum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27exclusiveMaximum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Multiple\x20Of</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.multipleOf\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27multipleOf\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Array\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27array\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Min\x20Items</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minItems\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minItems\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Max\x20Items</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maxItems\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maxItems\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Unique</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.uniqueItems\x22\x20@change=\x22setRowConstraint(row,\x20\x27uniqueItems\x27,\x20$event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unique\x20items\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Enum\x20(all\x20types)\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraint-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Enum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22enumToString(row.enum)\x22\x20@change=\x22setRowConstraint(row,\x20\x27enum\x27,\x20$event.target.value)\x22\x20placeholder=\x22comma-separated\x20values…\x22\x20style=\x22flex:1;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sem-hint\x22>e.g.\x20active,\x20inactive,\x20pending</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Foreign\x20Key\x20Reference\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27string\x27\x20||\x20row.type\x20===\x20\x27integer\x27\x20||\x20row.type\x20===\x20\x27number\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22link\x22\x20style=\x22width:12px;\x20height:12px;\x20opacity:.6;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Foreign\x20Key\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Target\x20type</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.refType\x20||\x20\x27\x27\x22\x20@change=\x22setRowRef(row,\x20\x27refType\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typesList\x22\x20let:item=\x22t\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22t\x22>{{\x20t\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>On\x20delete</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.refOnDelete\x20||\x20\x27no_action\x27\x22\x20@change=\x22setRowRef(row,\x20\x27refOnDelete\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22no_action\x22>no\x20action</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22cascade\x22>cascade</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22set_null\x22>set\x20null</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22restrict\x22>restrict</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearRowRef(row)\x22\x20class=\x22sem-fk-clear\x22\x20title=\x22Remove\x20foreign\x20key\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-hint\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20field\x20references\x20a\x20key\x20in\x20<strong>{{\x20row.refType\x20}}</strong>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27cascade\x27\x22>Deleting\x20the\x20target\x20will\x20delete\x20this\x20document.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27set_null\x27\x22>Deleting\x20the\x20target\x20will\x20set\x20this\x20field\x20to\x20null.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27restrict\x27\x22>Deleting\x20the\x20target\x20will\x20be\x20blocked\x20while\x20this\x20reference\x20exists.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27no_action\x27\x22>Deleting\x20the\x20target\x20will\x20leave\x20this\x20field\x20as\x20a\x20dangling\x20reference.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Array\x20items\x20schema\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27array\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-label\x22>Item\x20Schema</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.items.type\x22\x20@change=\x22setRowField(row.items,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:90px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items.type\x20===\x20\x27string\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.items.format\x20||\x20\x27\x27\x22\x20@change=\x22setRowConstraint(row.items,\x20\x27format\x27,\x20$event.target.value)\x22\x20title=\x22Format\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>no\x20format</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date-time\x22>date-time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date\x22>date</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22email\x22>email</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uri\x22>uri</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uuid\x22>uuid</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20If\x20items\x20type\x20is\x20object,\x20show\x20nested\x20properties\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items.type\x20===\x20\x27object\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-children\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22row.items.children\x22\x20let:item=\x22child\x22\x20let:index=\x22ci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22>{{\x20child.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22child.type\x22\x20@change=\x22setRowField(child,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:80px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.required\x22\x20@change=\x22toggleRowRequired(child)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.nullable\x22\x20@change=\x22toggleRowNullable(child)\x22\x20/>\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(row.items.children,\x20ci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:13px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27items_\x27\x20+\x20row.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27items_\x27\x20+\x20row.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(row.items,\x20\x27items_\x27\x20+\x20row.name)\x22\x20placeholder=\x22Add\x20item\x20property…\x22\x20style=\x22flex:1;\x20font-size:11px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(row.items,\x20\x27items_\x27\x20+\x20row.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x208px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Nested\x20object\x20properties\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27object\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Properties\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20margin-left:auto;\x20font-weight:normal;\x20opacity:.6;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.childrenAdditionalProps\x22\x20@change=\x22setChildrenAdditionalProps(row,\x20$event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20allow\x20additional\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-children\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22row.children\x22\x20let:item=\x22child\x22\x20let:index=\x22ci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22>{{\x20child.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22child.type\x22\x20@change=\x22setRowField(child,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:80px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.required\x22\x20@change=\x22toggleRowRequired(child)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.nullable\x22\x20@change=\x22toggleRowNullable(child)\x22\x20/>\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22child.description\x22\x20@input=\x22setRowField(child,\x20\x27description\x27,\x20$event.target.value)\x22\x20placeholder=\x22desc\x22\x20style=\x22flex:1;\x20font-size:11px;\x20min-width:60px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(row.children,\x20ci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:13px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x202nd-level\x20nested:\x20show\x20sub-properties\x20for\x20object\x20children\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22child.type\x20===\x20\x27object\x27\x20&&\x20child.children.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-l2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22child.children\x22\x20let:item=\x22gc\x22\x20let:index=\x22gci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22\x20style=\x22font-size:10px;\x22>{{\x20gc.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22gc.type\x22\x20@change=\x22setRowField(gc,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:70px;\x20font-size:11px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:10px;\x20display:flex;\x20align-items:center;\x20gap:2px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22gc.required\x22\x20@change=\x22toggleRowRequired(gc)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(child.children,\x20gci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:12px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20placeholder=\x22Add\x20sub-property…\x22\x20style=\x22flex:1;\x20font-size:10px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22child.type\x20===\x20\x27object\x27\x20&&\x20child.children.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22\x20style=\x22margin-left:24px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20placeholder=\x22Add\x20sub-property…\x22\x20style=\x22flex:1;\x20font-size:10px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27obj_\x27\x20+\x20row.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27obj_\x27\x20+\x20row.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(row,\x20\x27obj_\x27\x20+\x20row.name)\x22\x20placeholder=\x22Add\x20property…\x22\x20style=\x22flex:1;\x20font-size:11px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(row,\x20\x27obj_\x27\x20+\x20row.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x208px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22rows.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:16px\x200;\x20opacity:.4;\x20font-size:13px;\x22>No\x20properties\x20defined\x20yet.\x20Add\x20one\x20below.</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Add\x20property\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22sem-add-row\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22newPropName\x22\x20@input=\x22newPropName\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addProperty()\x22\x20placeholder=\x22New\x20property\x20name…\x22\x20style=\x22flex:1;\x20min-width:140px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addProperty()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x20:disabled=\x22!newPropName.trim()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Additional\x20properties\x20toggle\x20-->\x0a\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20padding:8px\x200\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22additionalProps\x22\x20@change=\x22setAdditionalProps($event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20Allow\x20additional\x20properties\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>(fields\x20not\x20listed\x20above)</span>\x0a\x20\x20\x20\x20</label>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20═══════\x20JSON\x20mode\x20═══════\x20-->\x0a\x20\x20<if\x20:=\x22mode\x20===\x20\x27json\x27\x22>\x0a\x20\x20<div\x20class=\x22sem-json\x22>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20:value=\x22editDefinition\x22\x0a\x20\x20\x20\x20\x20\x20@change=\x22setEditDefinition($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22min-height:300px;\x20flex:1;\x20width:100%;\x22>\x0a\x20\x20\x20\x20</ok-json-input>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Save\x20error\x20-->\x0a\x20\x20<if\x20:=\x22saveError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22sem-error\x22>{{\x20saveError\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Actions\x20-->\x0a\x20\x20<div\x20class=\x22sem-actions\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22\x20style=\x22opacity:.7;\x22>Cancel</button>\x0a\x20\x20\x20\x20<if\x20:=\x22hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove()\x22\x20class=\x22btn-icon\x22\x20style=\x22color:var(--okdb-danger);\x20opacity:.8;\x20font-size:12px;\x20padding:5px\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x20schema\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<button\x20@click=\x22save()\x22\x20:disabled=\x22saveBusy\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:5px\x2014px;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22save\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20{{\x20hasSchema\x20?\x20\x27Update\x20Schema\x27\x20:\x20\x27Set\x20Schema\x27\x20}}\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a</div>\x0a','exclusiveMaximum','maxItems','$ref','PUT','Save\x20failed','string','details','includes','onDone','ref','visual','info','splice','pattern','14EBGNNF','additionalProps','shared','$ok','required','sort','/schema','saveBusy'];_0x2732=function(){return _0x45a209;};return _0x2732();}function s(_0x5bcae5,_0x4bb60d){const _0x5525bf=_0x2256,_0x221fe4={},_0x86bd40=[];for(const _0xedf591 of _0x5bcae5)_0x221fe4[_0xedf591['name']]=r(_0xedf591),_0xedf591['required']&&_0x86bd40[_0x5525bf(0x1eb)](_0xedf591['name']);const _0x15843a={'type':'object','properties':_0x221fe4};return _0x86bd40[_0x5525bf(0x23f)]>0x0&&(_0x15843a[_0x5525bf(0x1e2)]=_0x86bd40),_0x15843a[_0x5525bf(0x208)]=_0x4bb60d,_0x15843a;}export default{'tag':_0x1fac42(0x23b),'dependencies':[_0x1a4718,_0x2f47db,_0x5364b4],'attr':{'modal':{},'type':{},'schema':{},'envApiBase':{},'onDone':{},'saveUrl':{},'samplesUrl':{},'hideEnforce':{}},'context':_0xf6e1d8=>({'mode':_0x1fac42(0x1da),'editDefinition':{},'editEnforce':!0x1,'rows':[],'additionalProps':!0x0,'saveBusy':!0x1,'saveError':null,'dirty':!0x1,'newPropName':'','_newChildNames':{},'typesList':[],get 'hasSchema'(){const _0x597805=_0x1fac42;return!!_0xf6e1d8[_0x597805(0x1fa)]['schema'];},get 'hideEnforce'(){const _0x42016b=_0x1fac42;return!!_0xf6e1d8[_0x42016b(0x1fa)][_0x42016b(0x21d)];},'_init'(){const _0x4a398b=_0x1fac42,_0x443001=_0xf6e1d8['$attr'][_0x4a398b(0x20e)];_0x443001?.[_0x4a398b(0x24a)]?(this['editDefinition']=i(_0x443001['definition']),this[_0x4a398b(0x240)]=_0x443001[_0x4a398b(0x1e6)]??!0x1):(this[_0x4a398b(0x1f9)]={'type':_0x4a398b(0x225),'properties':{},'additionalProperties':!0x0},this[_0x4a398b(0x240)]=!0x1),this[_0x4a398b(0x217)]=l(this[_0x4a398b(0x1f9)]),this[_0x4a398b(0x1df)]=!0x1!==this['editDefinition']['additionalProperties'],this[_0x4a398b(0x1ff)]=!0x1,this[_0x4a398b(0x229)]=null;},'switchToVisual'(){const _0x30caa5=_0x1fac42;this[_0x30caa5(0x217)]=l(this[_0x30caa5(0x1f9)]),this[_0x30caa5(0x1df)]=!0x1!==this[_0x30caa5(0x1f9)][_0x30caa5(0x208)],this[_0x30caa5(0x222)]='visual';},'switchToJson'(){const _0x2e4e09=_0x1fac42;this['editDefinition']=s(this[_0x2e4e09(0x217)],this[_0x2e4e09(0x1df)]),this[_0x2e4e09(0x222)]=_0x2e4e09(0x218);},'addProperty'(){const _0x1a3e3e=_0x1fac42,_0x486bac=(this[_0x1a3e3e(0x214)]||'')['trim']();_0x486bac&&(this['rows'][_0x1a3e3e(0x21e)](_0x51b346=>_0x51b346['name']===_0x486bac)?_0xf6e1d8[_0x1a3e3e(0x1e1)][_0x1a3e3e(0x1e0)]?.[_0x1a3e3e(0x1fe)]?.[_0x1a3e3e(0x24d)]?.(_0x1a3e3e(0x210)+_0x486bac+_0x1a3e3e(0x1c7)):(this['rows'][_0x1a3e3e(0x1eb)](o(_0x486bac)),this['newPropName']='',this[_0x1a3e3e(0x1ff)]=!0x0));},'addChildProperty'(_0xcb646,_0x12cdca){const _0x301f6f=_0x1fac42,_0x1c4310=(this[_0x301f6f(0x209)][_0x12cdca]||'')['trim']();_0x1c4310&&(_0xcb646[_0x301f6f(0x202)][_0x301f6f(0x21e)](_0x118ebb=>_0x118ebb['name']===_0x1c4310)?_0xf6e1d8[_0x301f6f(0x1e1)]['shared']?.[_0x301f6f(0x1fe)]?.['error']?.('Property\x20\x22'+_0x1c4310+_0x301f6f(0x1c7)):(_0xcb646[_0x301f6f(0x202)][_0x301f6f(0x1eb)](o(_0x1c4310)),this[_0x301f6f(0x209)][_0x12cdca]='',this['dirty']=!0x0));},'removeProperty'(_0x3cb0d0,_0x13bf4a){const _0x239da7=_0x1fac42;_0x3cb0d0[_0x239da7(0x1dc)](_0x13bf4a,0x1),this[_0x239da7(0x1ff)]=!0x0;},'setRowField'(_0x1dba3a,_0x4ca300,_0x411e17){const _0xe22deb=_0x1fac42;_0x1dba3a[_0x4ca300]=_0x411e17,'type'===_0x4ca300&&('object'===_0x411e17&&0x0===_0x1dba3a[_0xe22deb(0x202)][_0xe22deb(0x23f)]&&(_0x1dba3a[_0xe22deb(0x202)]=[],_0x1dba3a[_0xe22deb(0x234)]=!0x0),'array'!==_0x411e17||_0x1dba3a[_0xe22deb(0x206)]||(_0x1dba3a[_0xe22deb(0x206)]=o(_0xe22deb(0x21f),_0xe22deb(0x1d5)))),this[_0xe22deb(0x1ff)]=!0x0;},'toggleRowExpanded'(_0x32b298){const _0x4d65e8=_0x1fac42;_0x32b298['expanded']=!_0x32b298[_0x4d65e8(0x239)];},'toggleRowRequired'(_0x219a17){const _0x25ecfe=_0x1fac42;_0x219a17['required']=!_0x219a17[_0x25ecfe(0x1e2)],this['dirty']=!0x0;},'toggleRowNullable'(_0x267b11){const _0x53135f=_0x1fac42;_0x267b11[_0x53135f(0x246)]=!_0x267b11[_0x53135f(0x246)],this['dirty']=!0x0;},'setChildrenAdditionalProps'(_0x3b4d39,_0x2064e7){const _0xd2c400=_0x1fac42;_0x3b4d39['childrenAdditionalProps']=_0x2064e7,this[_0xd2c400(0x1ff)]=!0x0;},'setRowConstraint'(_0x40ba3e,_0x50dac0,_0x3c974b){const _0x291361=_0x1fac42;[_0x291361(0x205),_0x291361(0x1cd),_0x291361(0x1ed),_0x291361(0x1d0),_0x291361(0x20d),'minLength','maxLength',_0x291361(0x1f5),_0x291361(0x1d1)][_0x291361(0x1d7)](_0x50dac0)?_0x40ba3e[_0x50dac0]=''===_0x3c974b||null===_0x3c974b?null:Number(_0x3c974b):'uniqueItems'===_0x50dac0?_0x40ba3e[_0x50dac0]=!!_0x3c974b:_0x291361(0x248)===_0x50dac0?_0x3c974b&&''!==_0x3c974b[_0x291361(0x231)]()?_0x40ba3e[_0x291361(0x248)]=_0x3c974b[_0x291361(0x1ea)](',')['map'](_0x3e126a=>{const _0x122ba4=_0x291361;_0x3e126a=_0x3e126a[_0x122ba4(0x231)]();try{return JSON[_0x122ba4(0x247)](_0x3e126a);}catch{return _0x3e126a;}}):_0x40ba3e['enum']=null:_0x40ba3e[_0x50dac0]=_0x3c974b,this[_0x291361(0x1ff)]=!0x0;},'enumToString':_0x17afd9=>_0x17afd9&&Array[_0x1fac42(0x1fb)](_0x17afd9)?_0x17afd9[_0x1fac42(0x22d)](_0x558acd=>_0x1fac42(0x1d5)==typeof _0x558acd?_0x558acd:JSON['stringify'](_0x558acd))[_0x1fac42(0x22f)](',\x20'):'','setAdditionalProps'(_0x2c0a75){const _0x12c741=_0x1fac42;this[_0x12c741(0x1df)]=_0x2c0a75,this[_0x12c741(0x1ff)]=!0x0;},async 'loadTypesList'(){const _0x2b7a28=_0x1fac42;try{const _0x16d4ab=await fetch(_0xf6e1d8[_0x2b7a28(0x1fa)][_0x2b7a28(0x24c)]+_0x2b7a28(0x1f2));if(_0x16d4ab['ok']){const _0x37df26=await _0x16d4ab[_0x2b7a28(0x218)]();this['typesList']=(_0x37df26[_0x2b7a28(0x1cb)]??_0x37df26['data']??_0x37df26['types']??[])[_0x2b7a28(0x22d)](_0xeb8668=>'string'==typeof _0xeb8668?_0xeb8668:_0xeb8668[_0x2b7a28(0x1e7)]??_0xeb8668[_0x2b7a28(0x1e9)])[_0x2b7a28(0x21b)](_0x39f48a=>_0x39f48a&&!_0x39f48a['startsWith']('~'))[_0x2b7a28(0x1e3)]();}}catch{}},'setRowRef'(_0x35db1e,_0x4f3725,_0x2de6d1){const _0x24a759=_0x1fac42;_0x24a759(0x237)===_0x4f3725?(_0x35db1e[_0x24a759(0x237)]=_0x2de6d1,_0x2de6d1||(_0x35db1e['refOnDelete']='no_action')):'refOnDelete'===_0x4f3725&&(_0x35db1e[_0x24a759(0x1cc)]=_0x2de6d1),this[_0x24a759(0x1ff)]=!0x0;},'clearRowRef'(_0x282fa6){const _0x421ebb=_0x1fac42;_0x282fa6['refType']='',_0x282fa6[_0x421ebb(0x1cc)]=_0x421ebb(0x1f3),this[_0x421ebb(0x1ff)]=!0x0;},'setEditDefinition'(_0x254198){const _0x4c0e07=_0x1fac42;this[_0x4c0e07(0x1f9)]=_0x254198,this[_0x4c0e07(0x1ff)]=!0x0;},'setEditEnforce'(_0x17eb1e){const _0x12db43=_0x1fac42;this[_0x12db43(0x240)]=_0x17eb1e,this['dirty']=!0x0;},async 'generateFromData'(){const _0x4a30e3=_0x1fac42;if(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x1e7)]||_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x22e)])try{let _0x1d2925;if(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x22e)]){const _0x2fae2f=await fetch(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x22e)]);if(!_0x2fae2f['ok'])throw new Error(_0x4a30e3(0x211));const _0x5cbc17=await _0x2fae2f[_0x4a30e3(0x218)]();_0x1d2925=(_0x5cbc17['data']??_0x5cbc17[_0x4a30e3(0x1cb)]??[])[_0x4a30e3(0x22d)](_0x8661ee=>_0x8661ee[_0x4a30e3(0x23d)]??_0x8661ee[_0x4a30e3(0x224)]??_0x8661ee[_0x4a30e3(0x245)]??_0x8661ee);}else{const _0x25a0b5=await fetch(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x24c)]+_0x4a30e3(0x22c)+encodeURIComponent(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x1e7)])+_0x4a30e3(0x1f6),{'method':_0x4a30e3(0x227),'headers':{'Content-Type':_0x4a30e3(0x1c3)},'body':JSON['stringify']({'filter':{},'options':{'limit':0x32}})});if(!_0x25a0b5['ok'])throw new Error(_0x4a30e3(0x249));const _0x3ef6a7=await _0x25a0b5[_0x4a30e3(0x218)]();_0x1d2925=(_0x3ef6a7[_0x4a30e3(0x1c6)]??_0x3ef6a7[_0x4a30e3(0x1cb)]??[])[_0x4a30e3(0x22d)](_0x56a7e4=>_0x56a7e4[_0x4a30e3(0x23d)]??_0x56a7e4[_0x4a30e3(0x245)]??_0x56a7e4);}if(0x0===_0x1d2925[_0x4a30e3(0x23f)])return void _0xf6e1d8[_0x4a30e3(0x1e1)]['shared']?.[_0x4a30e3(0x1fe)]?.['info']?.(_0x4a30e3(0x1f4));_0xf6e1d8[_0x4a30e3(0x1e1)][_0x4a30e3(0x1e0)]?.[_0x4a30e3(0x1fe)]?.['info']?.(_0x4a30e3(0x219)+_0x1d2925[_0x4a30e3(0x23f)]+'\x20documents…');const _0x4725c6=this[_0x4a30e3(0x20a)](_0x1d2925);this[_0x4a30e3(0x1f9)]=_0x4725c6,this['rows']=l(_0x4725c6),this[_0x4a30e3(0x1df)]=!0x1!==_0x4725c6[_0x4a30e3(0x208)],this[_0x4a30e3(0x1ff)]=!0x0;}catch(_0x545577){_0xf6e1d8[_0x4a30e3(0x1e1)][_0x4a30e3(0x1e0)]?.[_0x4a30e3(0x1fe)]?.[_0x4a30e3(0x24d)]?.(_0x545577[_0x4a30e3(0x230)]);}},'_inferSchemaFromData'(_0xe69347){function _0x1f7feb(_0x160c14){const _0x5cd8eb=_0x2256;return null===_0x160c14?'null':Array['isArray'](_0x160c14)?_0x5cd8eb(0x244):_0x5cd8eb(0x225)==typeof _0x160c14?'object':typeof _0x160c14;}return function _0xb23462(_0x1dd35f){const _0xc02021=_0x2256;let _0x3fd483=[...new Set(_0x1dd35f[_0xc02021(0x22d)](_0x1f7feb)[_0xc02021(0x21b)](_0x9c6bb5=>_0xc02021(0x22b)!==_0x9c6bb5))];if(0x0===_0x3fd483[_0xc02021(0x23f)])return{'type':'string'};_0x3fd483['includes'](_0xc02021(0x1c9))&&_0x3fd483['length']>0x1&&(_0x3fd483=_0x3fd483[_0xc02021(0x21b)](_0x56c976=>'null'!==_0x56c976));let _0x1c94b7=0x1===_0x3fd483[_0xc02021(0x23f)]?{'type':_0x3fd483[0x0]}:{'type':_0x3fd483};if(_0x3fd483[_0xc02021(0x1d7)](_0xc02021(0x225))){let _0x3c4f01={},_0x5d5361=new Set(_0x1dd35f[_0xc02021(0x21b)](_0x4b40f4=>_0xc02021(0x225)===_0x1f7feb(_0x4b40f4)&&null!==_0x4b40f4)[_0xc02021(0x1ef)](Object[_0xc02021(0x200)]));for(let _0x4c442a of _0x5d5361){let _0xdf222e=_0x1dd35f[_0xc02021(0x21b)](_0x42efca=>_0xc02021(0x225)===_0x1f7feb(_0x42efca)&&null!==_0x42efca)[_0xc02021(0x22d)](_0x4fa6ff=>_0x4fa6ff[_0x4c442a]);_0x3c4f01[_0x4c442a]=_0xb23462(_0xdf222e);}_0x1c94b7[_0xc02021(0x221)]=_0x3c4f01,_0x1c94b7[_0xc02021(0x208)]=!0x1;}if(_0x3fd483[_0xc02021(0x1d7)](_0xc02021(0x244))){let _0x23fdb7=_0x1dd35f[_0xc02021(0x21b)](_0x5bfa2a=>'array'===_0x1f7feb(_0x5bfa2a))[_0xc02021(0x242)]();_0x23fdb7[_0xc02021(0x23f)]>0x0&&(_0x1c94b7[_0xc02021(0x206)]=_0xb23462(_0x23fdb7));}return _0x1c94b7;}(_0xe69347);},async 'save'(){const _0x52eaa8=_0x1fac42;this[_0x52eaa8(0x1e5)]=!0x0,this[_0x52eaa8(0x229)]=null;try{const _0x2310af={'definition':_0x52eaa8(0x1da)===this[_0x52eaa8(0x222)]?s(this[_0x52eaa8(0x217)],this[_0x52eaa8(0x1df)]):this['editDefinition'],'enforce':!!_0xf6e1d8['$attr']['hideEnforce']||this[_0x52eaa8(0x240)]},_0x4d9608=_0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x233)]??_0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x24c)]+_0x52eaa8(0x22c)+encodeURIComponent(_0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x1e7)])+_0x52eaa8(0x1e4),_0x489277=await fetch(_0x4d9608,{'method':_0x52eaa8(0x1d3),'headers':{'Content-Type':_0x52eaa8(0x1c3)},'body':JSON[_0x52eaa8(0x213)](_0x2310af)});if(0x199===_0x489277[_0x52eaa8(0x21c)]){const _0x52477b=await _0x489277[_0x52eaa8(0x218)]()['catch'](()=>({})),_0x490bee=_0x52477b?.[_0x52eaa8(0x24d)]?.['details']?.[_0x52eaa8(0x1f7)]??_0x52477b?.[_0x52eaa8(0x1d6)]?.[_0x52eaa8(0x1f7)]??_0x52477b?.[_0x52eaa8(0x24d)]?.[_0x52eaa8(0x1c6)]?.[_0x52eaa8(0x1f7)]??[];if(_0x490bee['length']>0x0){const _0x14825e=_0x490bee['slice'](0x0,0x5)[_0x52eaa8(0x22d)](_0x4db4cb=>_0x4db4cb[_0x52eaa8(0x241)])[_0x52eaa8(0x22f)](',\x20')+(_0x490bee[_0x52eaa8(0x23f)]>0x5?'\x20…\x20(+'+(_0x490bee[_0x52eaa8(0x23f)]-0x5)+_0x52eaa8(0x1c8):'');this[_0x52eaa8(0x229)]=_0x52eaa8(0x23e)+_0x490bee[_0x52eaa8(0x23f)]+'\x20doc(s)\x20violate\x20the\x20schema:\x0a'+_0x14825e;}else this[_0x52eaa8(0x229)]=_0x52477b?.[_0x52eaa8(0x24d)]?.[_0x52eaa8(0x230)]||_0x52477b?.['message']||_0x52eaa8(0x204);return;}if(!_0x489277['ok']){const _0x1fbbd9=await _0x489277[_0x52eaa8(0x218)]()[_0x52eaa8(0x21a)](()=>({}));throw new Error(_0x1fbbd9?.[_0x52eaa8(0x24d)]?.['message']||_0x489277['statusText']);}_0xf6e1d8[_0x52eaa8(0x1e1)][_0x52eaa8(0x1e0)]?.[_0x52eaa8(0x1fe)]?.[_0x52eaa8(0x24b)]?.(_0x52eaa8(0x1fd)),await _0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x216)][_0x52eaa8(0x238)](),await _0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x1d8)]?.();}catch(_0x1836d0){this[_0x52eaa8(0x229)]=_0x1836d0[_0x52eaa8(0x230)]||_0x52eaa8(0x1d4);}finally{this['saveBusy']=!0x1;}},async 'remove'(){const _0x4ba9e3=_0x1fac42;if(await _0xf6e1d8[_0x4ba9e3(0x1e1)][_0x4ba9e3(0x1e0)][_0x4ba9e3(0x216)][_0x4ba9e3(0x236)](_0x4ba9e3(0x203)+_0xf6e1d8['$attr']['type']+_0x4ba9e3(0x201)))try{const _0x315451=_0xf6e1d8[_0x4ba9e3(0x1fa)][_0x4ba9e3(0x233)]??_0xf6e1d8[_0x4ba9e3(0x1fa)][_0x4ba9e3(0x24c)]+_0x4ba9e3(0x22c)+encodeURIComponent(_0xf6e1d8[_0x4ba9e3(0x1fa)]['type'])+'/schema',_0x2ed993=await fetch(_0x315451,{'method':_0x4ba9e3(0x223)});if(!_0x2ed993['ok']){const _0x332201=await _0x2ed993[_0x4ba9e3(0x218)]()[_0x4ba9e3(0x21a)](()=>({}));throw new Error(_0x332201?.[_0x4ba9e3(0x24d)]?.[_0x4ba9e3(0x230)]||_0x2ed993['statusText']);}_0xf6e1d8[_0x4ba9e3(0x1e1)][_0x4ba9e3(0x1e0)]?.['toast']?.[_0x4ba9e3(0x1db)]?.('Schema\x20removed'),await _0xf6e1d8[_0x4ba9e3(0x1fa)][_0x4ba9e3(0x216)][_0x4ba9e3(0x238)](),await _0xf6e1d8['$attr'][_0x4ba9e3(0x1d8)]?.();}catch(_0x47ed3c){_0xf6e1d8[_0x4ba9e3(0x1e1)][_0x4ba9e3(0x1e0)]?.[_0x4ba9e3(0x1fe)]?.[_0x4ba9e3(0x24d)]?.(_0x47ed3c[_0x4ba9e3(0x230)]||_0x4ba9e3(0x23c));}},'cancel'(){const _0x8ca138=_0x1fac42;_0xf6e1d8[_0x8ca138(0x1fa)]['modal'][_0x8ca138(0x238)]();}}),'init'(){const _0x46080d=_0x1fac42;this['_init'](),this[_0x46080d(0x1ca)]();},'template':_0x1fac42(0x1cf),'style':_0x1fac42(0x1e8)};