@kedem/okdb 1.0.0 → 1.0.3
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.
- package/README.md +1 -1
- package/bin/okdb.js +1 -1
- package/keys/public.pem +3 -0
- package/okdb.js +1 -1
- package/package.json +2 -2
- package/public/admin-app.js +1 -1
- package/public/components/admin-route-host.ok.js +1 -1
- package/public/components/env-picker.ok.js +1 -1
- package/public/components/field-path-input.ok.js +1 -1
- package/public/components/geo-map.ok.js +1 -1
- package/public/components/ok-cron-input.ok.js +1 -1
- package/public/components/ok-dropzone.ok.js +1 -1
- package/public/components/ok-js-input.ok.js +1 -1
- package/public/components/ok-json-input.ok.js +1 -1
- package/public/components/ok-text-monaco-input.ok.js +1 -1
- package/public/components/theme-toggle.ok.js +1 -1
- package/public/login-app.js +1 -1
- package/public/modules/ok.js +1 -1
- package/public/sections/api/parts/api-endpoint.ok.js +1 -1
- package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
- package/public/sections/auth/parts/token-detail.ok.js +1 -1
- package/public/sections/auth/parts/token-list.ok.js +1 -1
- package/public/sections/db/modals/add-item-modal.ok.js +1 -1
- package/public/sections/db/modals/create-env-modal.ok.js +1 -1
- package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
- package/public/sections/db/modals/create-index-modal.ok.js +1 -1
- package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
- package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
- package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
- package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
- package/public/sections/db/parts/db-overview.ok.js +1 -1
- package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
- package/public/sections/db/parts/edit-row.ok.js +1 -1
- package/public/sections/db/parts/tm-timeline.ok.js +1 -1
- package/public/sections/db/parts/type-changelog.ok.js +1 -1
- package/public/sections/db/parts/type-list.ok.js +1 -1
- package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
- package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
- package/public/sections/db/parts/type-viewer.ok.js +1 -1
- package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
- package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
- package/public/sections/engines/engine-panel-shared-style.js +1 -1
- package/public/sections/engines/engine-ui-utils.js +1 -1
- package/public/sections/engines/modals/engine-modal.ok.js +1 -1
- package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
- package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
- package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
- package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
- package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
- package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
- package/public/sections/files/parts/files-blob-status.ok.js +1 -1
- package/public/sections/files/parts/files-collection-list.ok.js +1 -1
- package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
- package/public/sections/files/parts/files-file-list.ok.js +1 -1
- package/public/sections/files/parts/files-overview.ok.js +1 -1
- package/public/sections/files/parts/files-path-browser.ok.js +1 -1
- package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
- package/public/sections/functions/modals/function-modal.ok.js +1 -1
- package/public/sections/functions/parts/function-detail.ok.js +1 -1
- package/public/sections/functions/parts/function-logs.ok.js +1 -1
- package/public/sections/functions/parts/function-runner.ok.js +1 -1
- package/public/sections/functions/parts/functions-list.ok.js +1 -1
- package/public/sections/license/parts/license-panel.ok.js +1 -1
- package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
- package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
- package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
- package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
- package/public/sections/queue/parts/queue-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-workers.ok.js +1 -1
- package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
- package/public/sections/sync/parts/sync-retention.ok.js +1 -1
- package/public/sections/sync/parts/sync-topology.ok.js +1 -1
- package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
- package/public/sections/system/parts/system-api-panel.ok.js +1 -1
- package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
- package/public/sections/system/parts/system-log-history.ok.js +1 -1
- package/public/sections/system/parts/system-log.ok.js +1 -1
- package/public/sections/system/parts/system-status.ok.js +1 -1
- package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
- package/public/sections/views/modals/create-view-modal.ok.js +1 -1
- package/public/sections/views/parts/view-detail.ok.js +1 -1
- package/public/sections/views/parts/views-list.ok.js +1 -1
- package/public/sections/views/parts/views-overview.ok.js +1 -1
- package/public/setup-app.js +1 -1
- package/public/stores/auth-store.js +1 -1
- package/public/stores/events-store.js +1 -1
- package/public/stores/functions-store.js +1 -1
- package/public/stores/okdb-store.js +1 -1
- package/public/stores/theme-store.js +1 -1
- package/public/util/permissions.js +1 -1
- package/public/util/sift-schema.js +1 -1
- package/public/vendor/okjs/ok.esm.min.js +1 -2
- package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -1
- package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -1
- package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -1
- package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -1
- package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/manifest.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -1
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -1
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -1
- package/public/view-models/type-query-vm.js +1 -1
- package/public/images/logo.png +0 -0
- package/public/images/logo.svg +0 -333
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x1b645b=_0x33ca;(function(_0x5f010d,_0x300df7){const _0x2c3d4b=_0x33ca,_0x39965f=_0x5f010d();while(!![]){try{const _0x510049=-parseInt(_0x2c3d4b(0x206))/0x1+parseInt(_0x2c3d4b(0x271))/0x2+-parseInt(_0x2c3d4b(0x1b5))/0x3+parseInt(_0x2c3d4b(0x290))/0x4+parseInt(_0x2c3d4b(0x2a5))/0x5+-parseInt(_0x2c3d4b(0x26d))/0x6+parseInt(_0x2c3d4b(0x201))/0x7*(parseInt(_0x2c3d4b(0x1b7))/0x8);if(_0x510049===_0x300df7)break;else _0x39965f['push'](_0x39965f['shift']());}catch(_0x62f3d1){_0x39965f['push'](_0x39965f['shift']());}}}(_0x11f9,0xc7608));import _0x171b5f from'@toolkit/elements/ok-icon.ok.js';import _0x46a359 from'@toolkit/elements/ok-table.ok.js';import _0x25007f from'@toolkit/core/ok-overlay.ok.js';import _0x46bb9a from'../../../components/geo-map.ok.js';import _0x393513 from'../../../components/ok-json-input.ok.js';import _0x946eea from'../../../view-models/type-query-vm.js';import{buildSiftSchema as _0xf653e}from'../../../util/sift-schema.js';import _0x3ac0ed from'../modals/add-item-modal.ok.js';import _0x5501e3 from'../modals/create-fts-modal.ok.js';import _0x1ea0d1 from'../modals/create-index-modal.ok.js';import _0x3a1f30 from'../modals/create-pipeline-modal.ok.js';import _0x3198ff from'./edit-row.ok.js';import _0x266dde from'../../../stores/events-store.js';function _0x33ca(_0x4c8639,_0x4f0767){_0x4c8639=_0x4c8639-0x1ac;const _0x11f931=_0x11f9();let _0x33ca75=_0x11f931[_0x4c8639];return _0x33ca75;}function _0x11f9(){const _0x3fa6fd=['INDEX_HAS_CONSUMERS','keys','engines','__create_pipeline__','error','indexStatuses','Geo\x20query\x20error','searchMode','POST','API','Rebuilding\x20index\x20\x22','$ok','isArray','defaultTTLPreset','typeFields','fts:registered','trim','loadTypeEnginesCount','ttlStatsLoading','ftsScoreMap','find','hasNext','type','dropped','vector-search','Error\x20fetching\x20indexes','index:drop','1610880xPDtmD','index:registered','map','geoConfig','773534qwaweK','openTypePipelines','$watch','\x20km','toast','ready','geoHighlightedKey','flatMap','Default\x20TTL\x20cleared','pipeline','DELETE','action','total','indexer','index:ready','Drop\x20type\x20error','_geoSelSource','entries','geoDistanceMap','<create-pipeline-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','scalar','geoField','confirm','displayRows','expand','numTerms','overview','json','lat','config','loadViolations','3401812KPLWOb','value','_search','embeddings:pipeline:ready','unshift','geo','typeEngineCount','Rebuild\x20index\x20error','status','apiBase','push','Remove\x20failed','select','geoViewMode','fts:drop','Drop\x20FTS\x20error','stringify','queryMode','Rebuild\x20failed','engine:uninstalled','/deep-properties','2312000ZQVzWg','source_env','stores','selectedIndexStart','array','geoLat','ftsList','distance','catch','/env/','object','target','\x22?\x20This\x20will\x20re-scan\x20all\x20records.','Failed\x20to\x20clear\x20default\x20TTL','clearSelection','join','result','$attr','detail','open','ftsPrefix','maxScore','Rebuild\x20FTS\x20error','lon','$el','name','Sweep\x20done:\x20','/recompute-fields','querySelector','loadFtsIndexes','Failed\x20to\x20set\x20default\x20TTL','Create\x20FTS\x20Index','removeIndex','changelog','load','selectedIndex','round','2072106ppxgGY','info','140432fdHlgm','currentRoutePipeline','items','all','defineProperty','has','add','ttlSweepBusy','/ttl/sweep','key','dispatchEvent','stopped','\x22?\x20This\x20will\x20re-index\x20all\x20records.','/engines','score','/type/','a\x20consumer','geoIndexes','split','usedBy','running','statusText','Remove\x20index\x20\x22','selectedVectorEngineMeta','\x22?\x20This\x20cannot\x20be\x20undone.','index','Index\x20rebuild\x20complete','length','/reset','title','engine:started','/ttl/default','selectedEnv','selectedVectorEngine','query','openEnginesCreatePipeline','create','/pipelines','modal','Rebuild\x20FTS\x20index\x20\x22','unique','recomputeFields\x20error','splice','some','geoSortAsc','vectorScoreMap','__drop_fts__','sizeBytes','Item\x20updated','displayVectorName','$router','geoLon','findIndex','\x20expired\x20item(s)\x20removed','null','floor','rowValueOf','<create-index-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:deep-paths=\x22deepPaths\x22\x20:geo-fields=\x22geoFields\x22\x20:on-done=\x22onDone\x22\x20/>','includes','defaultTTLBusy','envApiBase','violations','types','Fields\x20recomputed','slice','/fts','geoRadius','Add\x20item','resetPaging','selectedPrefix','loadDefaultTTL','clearExpanded','ftsText','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:0;\x20height:100%;\x22>\x0a\x0a\x20\x20<!--\x20Tab\x20bar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:2px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20margin-bottom:12px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27data\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Data\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27changelog\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27changelog\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Changelog\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27manage\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27manage\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Manage\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27schema\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27schema\x27\x20?\x20(\x27border-color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20background:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27#f8717111\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent)\x27)\x20+\x20\x27;\x20border-bottom-color:transparent;\x27)\x20:\x20(violationCount\x20>\x200\x20?\x20\x27border-color:transparent;\x20background:transparent;\x20color:var(--okdb-danger);\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Schema<if\x20:=\x22violationCount\x20>\x200\x22><span\x20style=\x22margin-left:6px;\x20font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2013%,\x20transparent);\x20color:var(--okdb-danger);\x20font-weight:600;\x22>{{\x20violationCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22switchToEngines()\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27engines\x27\x20?\x20\x27border-color:var(--okdb-purple);\x20color:var(--okdb-purple);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Engines<if\x20:=\x22typeEngineCount\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20typeEngineCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Data\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27data\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20flex:1;\x20min-height:0;\x22>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:16px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20──\x20Left\x20column:\x20query\x20controls\x20──\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x20min-width:0;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Row\x201:\x20filter\x20label\x20+\x20accordion\x20+\x20JSON\x20input\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Label\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20color:#6a8a9a;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20searchMode\x20===\x20\x27vector\x27\x20?\x20\x27Post-filter\x20vector\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27fts\x27\x20?\x20\x27Post-filter\x20FTS\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27geo\x27\x20?\x20\x27Post-filter\x20geo\x20results\x20with\x20sift\x27\x20:\x20\x27Filter\x20with\x20sift\x20query\x27\x20}}\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=\x22help-toggle\x22\x20@click=\x22helpOpen\x20=\x20!helpOpen\x22\x20:class=\x22helpOpen\x20?\x20\x27help-toggle--open\x27\x20:\x20\x27\x27\x22>i</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Accordion:\x20query\x20reference\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22helpOpen\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22help-accordion\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{}</code><span>match\x20all\x20records</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22field\x22:\x20\x22value\x22}</code><span>exact\x20match</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22n\x22:\x20{\x22$gt\x22:\x205,\x20\x22$lt\x22:\x2050}}</code><span>numeric\x20comparison</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$in\x22:\x20[\x22a\x22,\x22b\x22]}}</code><span>set\x20membership</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$exists\x22:\x20true}}</code><span>field\x20presence</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x20ht-row--note\x22>Nested\x20fields\x20use\x20dot\x20notation:\x20<code>\x22a.b\x22</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.query\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.query\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:schema=\x22siftSchema\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:220px;\x20min-height:60px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-json-input>\x0a\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Mode\x20bar:\x20Scan\x20/\x20Index\x20/\x20FTS\x20/\x20Vector\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27scan\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27scan\x27)\x22>Scan</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27index\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27index\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Index<if\x20:=\x22possibleIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20possibleIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27fts\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27fts\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FTS<if\x20:=\x22ftsList.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20ftsList.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27vector\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27vector\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Vector<if\x20:=\x22vectorEngines.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20vectorEngines.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27geo\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27geo\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Geo<if\x20:=\x22geoIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20geoIndexes.length\x20}}</span></if>\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<!--\x20──\x20Scan\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27scan\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\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=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20key\x20scan\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20user-select:none;\x22>Full\x20key-ordered\x20scan\x20·\x20sift\x20applied\x20as\x20filter</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27index\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectIndex($event.target.value)\x22\x20style=\x22min-width:160px;\x22>\x0a\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<each\x20:of=\x22possibleIndexes\x22\x20let:item=\x22idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22idx\x22\x20:selected=\x22query.selectedIndex\x20===\x20idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20idx\x20}}{{\x20indexStatuses[idx]?.unique\x20?\x20\x27\x20◆\x27\x20:\x20\x27\x27\x20}}{{\x20indexStatusBadge(idx)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20indexStatusBadge(idx)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\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<option\x20value=\x22__create_index__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__remove_index__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Remove\x20\x22{{\x20query.selectedIndex\x20}}\x22</option>\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</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27prefix\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27prefix\x27,\x20query.selectedIndexStart\x20=\x20undefined,\x20query.selectedIndexEnd\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27range\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27range\x27,\x20query.selectedPrefix\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Range\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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</if>\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──\x20Index\x20detail\x20strip\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x20&&\x20selectedIndexInfo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22idx-info-strip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-label\x22>Fields:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedIndexInfo.fields\x22\x20let:item=\x22f\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22idx-info-field\x22>{{\x20f\x20}}</code>\x0a\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<if\x20:=\x22selectedIndexInfo.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--unique\x22>◆\x20unique</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\x20\x20<if\x20:=\x22selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--geo\x22>◎\x20geo\x20·\x20precision\x20{{\x20selectedIndexInfo.geoPrecision\x20??\x207\x20}}</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\x20\x20<if\x20:=\x22!selectedIndexInfo.isUnique\x20&&\x20!selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--regular\x22>regular</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</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<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27prefix\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Prefix:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedPrefix\x22\x20@change=\x22query.selectedPrefix\x20=\x20$event.detail\x22\x20style=\x22width:220px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.35;\x20font-size:11px;\x22>scalar\x20or\x20array\x20for\x20composite\x20indexes</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\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27range\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Start:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexStart\x22\x20@change=\x22query.selectedIndexStart\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>End:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexEnd\x22\x20@change=\x22query.selectedIndexEnd\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\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</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20FTS\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27fts\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectFtsIndex($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\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<each\x20:of=\x22ftsList\x22\x20let:item=\x22fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22fts.name\x22\x20:selected=\x22query.selectedFtsIndex\x20===\x20fts.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fts.name\x20}}{{\x20ftsStatusBadge(fts)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20ftsStatusBadge(fts)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\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<option\x20value=\x22__create_fts__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20FTS\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__drop_fts__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Drop\x20\x22{{\x20query.selectedFtsIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\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\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Search…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.ftsText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22query.ftsText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:140px;\x20max-width:300px;\x22\x0a\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<div\x20class=\x22seg-toggle\x22\x20title=\x22AND:\x20all\x20terms\x20required\x20·\x20OR:\x20any\x20term\x20matches,\x20ranked\x20by\x20hit\x20count\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27and\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27and\x27\x22>AND</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27or\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27or\x27\x22>OR</button>\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<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20white-space:nowrap;\x20user-select:none;\x22\x20title=\x22Prefix:\x20\x27sta\x27\x20matches\x20\x27start\x27,\x20\x27stack\x27,\x20etc.\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22query.ftsPrefix\x22\x20@change=\x22query.ftsPrefix\x20=\x20$event.target.checked\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\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</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\x20\x20<!--\x20──\x20Vector\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27vector\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22cpu\x22\x20style=\x22width:13px;height:13px;opacity:.5;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20vector\x20search\x20engines\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Create\x20Pipeline…</button>\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\x20\x20<if\x20:=\x22vectorEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectVectorEngine($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\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<each\x20:of=\x22vectorEngines\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22displayVectorName(ve.name)\x22\x20:selected=\x22query.selectedVectorEngine\x20===\x20displayVectorName(ve.name)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20displayVectorName(ve.name)\x20}}{{\x20ve.isRunning\x20?\x20\x27\x27\x20:\x20\x27\x20(stopped)\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\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<option\x20value=\x22__create_pipeline__\x22\x20style=\x22color:var(--okdb-indigo);\x22>+\x20Create\x20pipeline…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\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=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Semantic\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.500=\x22query.vectorText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:160px;\x20max-width:340px;\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-size:12px;\x20opacity:.55;\x20white-space:nowrap;\x20user-select:none;\x22>top</span>\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=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.vectorLimit\x20=\x20Math.max(1,\x20Math.min(200,\x20Number($event.target.value)\x20||\x2020))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x20max=\x22200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:56px;\x20text-align:center;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Max\x20results\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</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline\x20badge\x20—\x20clickable,\x20navigates\x20to\x20local\x20Engines\x20tab\x20in\x20pipeline\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta.meta\x20&&\x20selectedVectorEngineMeta.meta.pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(selectedVectorEngineMeta.meta.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x20white-space:nowrap;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20the\x20type\x20pipeline\x20view\x20focused\x20on:\x20\x27\x20+\x20selectedVectorEngineMeta.meta.pipeline\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20{{\x20selectedVectorEngineMeta.meta.pipeline\x20}}\x20→</button>\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</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Link\x20to\x20local\x20type\x20engines\x20workspace\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openTypePipelinesForSelectedVector()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2020%,\x20transparent);\x20color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2060%,\x20transparent);\x20background:transparent;\x20cursor:pointer;\x20white-space:nowrap;\x20margin-left:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20vector\x20search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Type\x20Engines\x20→</button>\x0a\x0a\x20\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</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Geo\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>◎</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20geo\x20indexes\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.\x20Create\x20one\x20from\x20the\x20Manage\x20tab.</span>\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\x20\x20<if\x20:=\x22geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22geoField\x20=\x20$event.target.value\x22\x20style=\x22min-width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22geoIndexes\x22\x20let:item=\x22gf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22gf\x22\x20:selected=\x22geoField\x20===\x20gf\x22>{{\x20gf\x20}}</option>\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</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lat</span>\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=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x2240.7484\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLat\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\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-size:12px;\x20opacity:.5;\x22>Lon</span>\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=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22-73.9856\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLon\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\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-size:12px;\x20opacity:.5;\x22>Radius\x20(m)</span>\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=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22∞\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoRadius\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:90px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Leave\x20empty\x20for\x20unlimited\x20radius\x20(sorted\x20by\x20distance)\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<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22geoSortAsc\x20=\x20!geoSortAsc\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20geoSortAsc\x20?\x20\x27↑\x20Nearest\x27\x20:\x20\x27↓\x20Farthest\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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<div\x20style=\x22font-size:11px;\x20opacity:.35;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Results\x20sorted\x20by\x20distance\x20·\x20sift\x20filter\x20applied\x20as\x20post-filter\x20·\x20leave\x20radius\x20empty\x20for\x20no\x20cutoff\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Geo\x20view\x20toggle\x20(only\x20in\x20geo\x20mode)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20flex-shrink:0;\x20padding:2px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27table\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27table\x27\x22\x20title=\x22Table\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22table-2\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27map\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27map\x27\x22\x20\x20\x20title=\x22Map\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22map-pin\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27split\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27split\x27\x22\x20title=\x22Table\x20+\x20Map\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22columns\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.3;\x20user-select:none;\x22>view</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Results\x20area\x20──\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20position:relative;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<if\x20:=\x22query.busy\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Results\x20bar:\x20timing\x20+\x20Add\x20item\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22margin-bottom:8px;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.time\x20!=\x20null\x20?\x20query.time\x20+\x20\x27ms\x27\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22opacity:.7;\x22>{{\x20type\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openAddModal\x22\x20class=\x22btn-primary\x20btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x20item\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\x0a\x20\x20\x20\x20<!--\x20Content\x20row\x20—\x20table\x20+\x20map\x20as\x20siblings,\x20shown/hidden\x20via\x20display:none\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex:1;\x20min-height:0;\x20gap:10px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TABLE\x20col\x20—\x20hidden\x20only\x20in\x20pure\x20map\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoViewMode\x20===\x20\x27map\x27\x20?\x20\x27display:none\x27\x20:\x20\x27flex:1;\x20min-width:0;\x20display:flex;\x20flex-direction:column;\x20min-height:0;\x27\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\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\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\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\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\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</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27direct-value-badge\x20direct-value-badge--\x27\x20+\x20directValueKindOf(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{{\x20directValueKindOf(row)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\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\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\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\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(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<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\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\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\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</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>value</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20:title=\x22prettyValueOf(row)\x22\x20style=\x22display:block;\x20white-space:pre-wrap;\x20word-break:break-word;\x20font-size:12px;\x22>{{\x20inlineValueOf(row)\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\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\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\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:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\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<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\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\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\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\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\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</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\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\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(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<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\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\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\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</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<auto\x20max=\x2210\x22\x20:show-more-content=\x22(n)\x20=>\x20\x27+\x27\x20+\x20n\x20+\x20\x27\x20cols\x27\x22\x20show-more-title=\x22Click\x20to\x20show\x20all\x20columns\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row\x20let:value>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22[typeof\x20value,\x20value\x20===\x20null\x20?\x20\x27null\x27\x20:\x20\x27\x27]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20value\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</auto>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\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\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\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:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\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<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ok-pager\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.prevPage()\x22\x20:disabled=\x22!query.hasPrev\x20||\x20query.busy\x22>‹\x20Prev</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20query.total\x20}}\x20result{{\x20query.total\x20===\x201\x20?\x20\x27\x27\x20:\x20\x27s\x27\x20}}\x20·\x20{{\x20query.pageSize\x20}}/page</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.nextPage()\x22\x20:disabled=\x22!query.hasNext\x20||\x20query.busy\x22>Next\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<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20<!--\x20MAP\x20col\x20—\x20always\x20mounted,\x20shown\x20only\x20in\x20geo\x20map/split\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:0;\x20min-height:0;\x20border-radius:8px;\x20overflow:hidden;\x20border:1px\x20solid\x20#23292e;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22{\x20\x27display\x27:\x20(geoViewMode\x20===\x20\x27map\x27\x20||\x20geoViewMode\x20===\x20\x27split\x27)?\x20\x27block\x27\x20:\x20\x27none\x27\x20}\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<geo-map\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:points=\x22geoMapPoints\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lat=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lon=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:radius=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:highlight-key=\x22geoHighlightedKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@move=\x22geoLat\x20=\x20String($event.detail.lat.toFixed(6)),\x20geoLon\x20=\x20String($event.detail.lon.toFixed(6))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22onGeoMapSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x0a</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Changelog\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27changelog\x27\x22>\x0a\x20\x20\x20\x20<type-changelog\x20:type=\x22type\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Manage\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27manage\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20flex:1;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Overview\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x22>{{\x20type\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>type</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-accent);\x22>{{\x20typeCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>records</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Fields\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20fields\x20tracked\x20yet\x20—\x20add\x20items\x20or\x20use\x20Recompute.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Field</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Observed\x20types</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typeFieldEntries\x22\x20let:item=\x22tf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20tf.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20tf.types.join(\x27,\x20\x27)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\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\x0a\x20\x20\x20\x20<!--\x20Secondary\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Secondary\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateIndex()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Kind</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Ownership</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22indexEntries\x22\x20let:item=\x22ix\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:4px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.fields\x22\x20let:item=\x22f\x22\x20let:index=\x22fi\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20f\x20}}</code><span\x20style=\x22opacity:.3;\x20font-size:11px;\x20margin-left:0;\x22\x20:style=\x22fi\x20<\x20ix.fields.length\x20-\x201\x20?\x20\x27\x27\x20:\x20\x27display:none\x27\x22>·</span>\x0a\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--geo\x22>◎\x20geo</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.45;\x20white-space:nowrap;\x22>precision\x20{{\x20ix.geoPrecision\x20??\x207\x20}}</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\x20\x20<if\x20:=\x22ix.isUnique\x20&&\x20!ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--unique\x22>◆\x20unique</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\x20\x20<if\x20:=\x22!ix.isGeo\x20&&\x20!ix.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--regular\x22>regular</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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:3px;\x20flex-direction:column;\x20align-items:flex-start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.createdBy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-owned-badge\x22>{{\x20ix.createdBy.kind\x20}}:{{\x20ix.createdBy.name\x20}}</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\x20\x20<each\x20:of=\x22ix.usedBy\x22\x20let:item=\x22consumer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-consumer-badge\x22>{{\x20consumer\x20}}</span>\x0a\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20ix.status\x22>{{\x20ix.status\x20}}</span>\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<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x20||\x20ix.usedBy.length\x20>\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22ix.usedBy.length\x20>\x200\x20?\x20\x27Used\x20by:\x20\x27\x20+\x20ix.usedBy.join(\x27,\x20\x27)\x20:\x20($ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Remove\x20this\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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</each>\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\x0a\x20\x20\x20\x20<!--\x20FTS\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>FTS\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateFtsModal()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20FTS\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20FTS\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Name</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Size</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsEntries\x22\x20let:item=\x22fe\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20fe.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20fe.fields\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20fe.status\x22>{{\x20fe.status\x20}}</span>\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<div\x20class=\x22manage-cell\x20manage-cell--dim\x22\x20style=\x22font-size:11px;\x20font-family:monospace;\x22>{{\x20fmtBytes(fe.sizeBytes)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildFts(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropFtsIndex(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x20title=\x22Drop\x20this\x20FTS\x20index\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Drop\x20this\x20FTS\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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</each>\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\x0a\x20\x20\x20\x20<!--\x20Vector\x20Search\x20Engines\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Vector\x20Search\x20Engines</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesWorkspace()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-indigo);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20Type\x20Engines\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20No\x20vector\x20search\x20engines\x20for\x20this\x20type\x20yet.\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=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-left:6px;\x20font-size:11px;\x20padding:1px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x205%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--vec\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Engine</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Pipeline</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEntries\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20ve.displayName\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20(ve.running\x20?\x20\x27ready\x27\x20:\x20\x27creating\x27)\x22>{{\x20ve.status\x20}}</span>\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<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20ve.pipeline\x20??\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(ve.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-indigo);\x20opacity:.85;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20this\x20type-scoped\x20pipeline\x20view\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\x20\x20⛓\x20View\x20local\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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</each>\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\x0a\x20\x20\x20\x20<!--\x20TTL\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Time-to-Live\x20(TTL)</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22(loadTTLStats(),\x20loadDefaultTTL())\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.6;\x22\x20:disabled=\x22ttlStatsLoading\x22\x20title=\x22Refresh\x20TTL\x20stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20<!--\x20Default\x20TTL\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:12px;\x20padding:10px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20font-weight:600;\x20opacity:.7;\x20margin-bottom:8px;\x22>Default\x20TTL\x20for\x20new\x20items</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20color:var(--okdb-success);\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Currently:\x20<span\x20style=\x22font-family:monospace;\x20font-weight:600;\x22>{{\x20fmtDuration(defaultTTL)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-size:11px;\x22>\x20({{\x20defaultTTL\x20}}ms)</span>\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\x20\x20<if\x20:=\x22!defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-bottom:8px;\x22>No\x20default\x20—\x20items\x20don\x27t\x20expire\x20unless\x20TTL\x20is\x20set\x20explicitly.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onDefaultTTLPresetChange($event.target.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>Custom…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2260000\x22>1\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22300000\x22>5\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22900000\x22>15\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x223600000\x22>1\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2221600000\x22>6\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2286400000\x22>24\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22604800000\x22>7\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x222592000000\x22>30\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!value=\x22defaultTTLInput\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22(defaultTTLInput\x20=\x20$el.value,\x20defaultTTLPreset\x20=\x20\x27\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22ms\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x20font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!defaultTTLInput\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>Set</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>Clear</button>\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<!--\x20TTL\x20stats\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ttlStats\x20||\x20!ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20TTL\x20entries\x20for\x20this\x20type\x20—\x20TTL\x20sub-databases\x20are\x20created\x20lazily\x20on\x20first\x20use.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlStats\x20&&\x20ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x20margin-bottom:10px;\x22>\x0a\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\x20style=\x22font-size:18px;\x20font-weight:600;\x20color:var(--okdb-success);\x22>{{\x20ttlStats.totalEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>entries</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\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\x20:style=\x22\x27font-size:18px;\x20font-weight:600;\x20color:\x27\x20+\x20(ttlStats.expiredEntries\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-muted)\x27)\x20+\x20\x27;\x27\x22>{{\x20ttlStats.expiredEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>expired</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\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\x20style=\x22font-size:13px;\x20font-family:monospace;\x20color:var(--okdb-app-fg);\x22>{{\x20ttlStats.nextExpiry\x20?\x20fmtDuration(ttlStats.nextExpiry\x20-\x20Date.now())\x20:\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>next\x20expiry</div>\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\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22triggerSweep()\x22\x20:disabled=\x22ttlSweepBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Sweep\x20expired\x20now\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlSweepBusy\x22><span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>Sweeping…</span></if>\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\x0a\x20\x20\x20\x20<!--\x20Danger\x20zone\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20card--danger\x22>\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22\x20style=\x22color:var(--okdb-danger);\x22>⚠\x20Danger\x20Zone</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22recomputeFields\x22\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27data:write\x27)\x20?\x20\x27Rescan\x20all\x20records\x20to\x20rebuild\x20the\x20field\x20schema\x27\x20:\x20$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Recompute\x20fields\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropType\x22\x20class=\x22btn-danger\x20btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x20type\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\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Schema\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27schema\x27\x22>\x0a\x20\x20\x20\x20<type-schema-tab\x0a\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20:on-view-key=\x22(key)\x20=>\x20setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:on-schema-changed=\x22()\x20=>\x20loadViolations()\x22\x0a\x20\x20\x20\x20\x20\x20:on-violation-count-changed=\x22(count)\x20=>\x20onViolationCountChanged(count)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27engines\x27\x22>\x0a\x20\x20\x20\x20<type-pipelines-tab\x20:type=\x22type\x22\x20:focusedpipeline=\x22currentRoutePipeline\x22\x20:currentmode=\x22currentRouteMode\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a</div>','259bTCAkM','Cannot\x20remove:\x20index\x20is\x20used\x20by\x20','Create\x20Index','__create_fts__','loadVectorEngines','573288ksIjeR','ok-table','then','_updateGeoIndexes','vectorEngines','replace','schema','ttlStats','scan','okdb','/indexes','mode','default','selectedDirection','Drop\x20type\x20\x22','defaultTTL','/index/','table','Remove\x20index\x20error','kind','source_type','Create\x20Pipeline\x20·\x20','engine:installed','deselect','string','resolve','reverse','fmtDuration','view','_current','loadIndexes','<add-item-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:on-done=\x22onDone\x22\x20/>','details','busy','openCreatePipelineModal','engine:stopped','Rebuild\x20index\x20\x22','engine:error','code','Sweep\x20failed','fields','violationCount','shared','data','message','/violations/','success','_backStack','pipelines','meta','loadTTLStats','application/json','toFixed','values','tab','$vars','label','count','paths','isRunning','filter','selectedIndexEnd','time','size','precision','pageSize','index:reset','possibleIndexes','_unsubs','keyOf','__key','allSettled','manage','selectedFtsIndex','openCreateIndex','defaultTTLInput'];_0x11f9=function(){return _0x3fa6fd;};return _0x11f9();}import _0x22c12a from'./type-changelog.ok.js';import _0x486226 from'./type-pipelines-tab.ok.js';import _0x1b2f29 from'./type-schema-tab.ok.js';function y(_0x484c2e){const _0x5119f9=_0x33ca;return!!_0x484c2e&&_0x5119f9(0x2af)==typeof _0x484c2e&&!Array['isArray'](_0x484c2e);}function x(_0x526ce1,_0xee5cdc){const _0x3a741c=_0x33ca;y(_0x526ce1)&&_0x526ce1['__key']!==_0xee5cdc&&Object[_0x3a741c(0x1bb)](_0x526ce1,_0x3a741c(0x24c),{'value':_0xee5cdc,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1});}function m(_0x311f3e,_0xbbe4d1=0x0){const _0x473de2=_0x33ca;try{return JSON[_0x473de2(0x2a0)](_0x311f3e,null,_0xbbe4d1)??String(_0x311f3e);}catch{return String(_0x311f3e);}}export default{'tag':'type-viewer','dependencies':[_0x171b5f,_0x46a359,_0x25007f,_0x3198ff,_0x393513,_0x22c12a,_0x486226,_0x1b2f29,_0x3ac0ed,_0x1ea0d1,_0x5501e3,_0x3a1f30,_0x46bb9a],'attr':{'type':{}},'context'(_0x5f7778){const _0x189c00=_0x33ca;let _0x85d531=null,_0x376ae1=null,_0x4ca5fe=null;const _0x5a1722=new _0x946eea({'type':_0x5f7778['$attr'][_0x189c00(0x268)],'apiBase':()=>_0x5f7778['$ok'][_0x189c00(0x2a7)][_0x189c00(0x20f)][_0x189c00(0x299)]});return{'tab':_0x189c00(0x231),get 'envApiBase'(){const _0x315344=_0x189c00;return _0x5f7778[_0x315344(0x25d)][_0x315344(0x2a7)]['okdb'][_0x315344(0x299)];},get 'type'(){const _0xe78f67=_0x189c00;return _0x5f7778[_0xe78f67(0x2b6)][_0xe78f67(0x268)];},'violationCount':0x0,async 'loadViolations'(){const _0x34c444=_0x189c00;if(this[_0x34c444(0x268)])try{const [_0x26cfad,_0x19e9ac]=await Promise[_0x34c444(0x1ba)]([fetch(this['envApiBase']+_0x34c444(0x233)+encodeURIComponent(this[_0x34c444(0x268)])),fetch(this[_0x34c444(0x1f3)]+'/ref-violations/'+encodeURIComponent(this[_0x34c444(0x268)]))]);let _0x93264=0x0;if(_0x26cfad['ok']){const _0x57708a=await _0x26cfad[_0x34c444(0x28c)]();_0x93264+=(_0x57708a?.[_0x34c444(0x231)]?.[_0x34c444(0x1f4)]??_0x57708a?.[_0x34c444(0x2b5)]?.[_0x34c444(0x1f4)]??[])[_0x34c444(0x1d2)];}if(_0x19e9ac['ok']){const _0x42e1d=await _0x19e9ac[_0x34c444(0x28c)]();_0x93264+=(_0x42e1d?.[_0x34c444(0x231)]?.[_0x34c444(0x1f4)]??_0x42e1d?.[_0x34c444(0x2b5)]?.[_0x34c444(0x1f4)]??[])[_0x34c444(0x1d2)];}this['violationCount']=_0x93264;}catch{}},'onViolationCountChanged'(_0x366ef6){const _0x155241=_0x189c00;this[_0x155241(0x22f)]=_0x366ef6;},'query':_0x5a1722,'possibleIndexes':[],'indexStatuses':{},'createIdxPossible':[],'createIdxTypeLoaded':null,'ftsList':[],'vectorEngines':[],'typeEngineCount':0x0,'searchMode':_0x189c00(0x20e),'geoIndexes':[],'geoField':'','geoLat':'','geoLon':'','geoRadius':'','geoSortAsc':!0x0,'geoDistanceMap':{},'mapOpen':!0x1,'geoViewMode':'table','geoHighlightedKey':null,'_geoSelSource':null,get 'geoMapPoints'(){const _0x5d0d44=_0x189c00,_0x447fa7=this[_0x5d0d44(0x286)];return _0x447fa7?(this[_0x5d0d44(0x1d9)]['items']||[])[_0x5d0d44(0x26f)](_0x1c034d=>{const _0x3d4fd3=_0x5d0d44,_0xdcfcf2=_0x1c034d[_0x3d4fd3(0x291)]||{},_0x35b2a8=((_0x3e2a0b,_0x3389d6)=>{const _0x5b2ad8=_0x3d4fd3;let _0x4b0c4b=_0x3e2a0b;for(const _0xdbcd79 of _0x3389d6[_0x5b2ad8(0x1c9)]('.')){if(null==_0x4b0c4b)return null;_0x4b0c4b=_0x4b0c4b[_0xdbcd79];}return _0x4b0c4b;})(_0xdcfcf2,_0x447fa7);return{'key':_0x1c034d[_0x3d4fd3(0x1c0)],'title':_0xdcfcf2[_0x3d4fd3(0x2be)]||_0xdcfcf2[_0x3d4fd3(0x1d4)]||_0xdcfcf2[_0x3d4fd3(0x23e)]||_0x1c034d[_0x3d4fd3(0x1c0)],'lat':_0x35b2a8?.[_0x3d4fd3(0x28d)],'lon':_0x35b2a8?.[_0x3d4fd3(0x2bc)],'distance':_0x1c034d[_0x3d4fd3(0x2ac)]};})[_0x5d0d44(0x242)](_0x1a30d8=>null!=_0x1a30d8[_0x5d0d44(0x28d)]&&null!=_0x1a30d8[_0x5d0d44(0x2bc)]):[];},'setTab'(_0x5e6dda){const _0x44a226=_0x189c00;if(this[_0x44a226(0x23c)]=_0x5e6dda,'engines'===_0x5e6dda)return;const _0x76e2d=_0x5f7778[_0x44a226(0x23d)]['$router'];if(!_0x76e2d?.[_0x44a226(0x292)]?.[_0x44a226(0x23c)])return;const _0xcc1851={..._0x76e2d[_0x44a226(0x292)]};delete _0xcc1851[_0x44a226(0x23c)],delete _0xcc1851[_0x44a226(0x211)],delete _0xcc1851[_0x44a226(0x27a)],_0x76e2d[_0x44a226(0x20b)](_0x76e2d[_0x44a226(0x21f)](_0x76e2d['_path']||'',_0xcc1851,_0x76e2d['_anchor']||''));},'switchToPipelines'(){const _0x38d32c=_0x189c00;this['openTypePipelines']({'mode':_0x38d32c(0x236),'pipeline':this[_0x38d32c(0x1b8)]||null});},get 'currentRoutePipeline'(){const _0x2964de=_0x189c00;return String(_0x5f7778[_0x2964de(0x23d)]?.['$router']?.[_0x2964de(0x292)]?.[_0x2964de(0x27a)]||'');},get 'currentRouteMode'(){const _0x36156e=_0x189c00;return'pipelines'===String(_0x5f7778['$vars']?.[_0x36156e(0x1e9)]?.[_0x36156e(0x292)]?.[_0x36156e(0x211)]||'')[_0x36156e(0x262)]()?_0x36156e(0x236):'engines';},'openTypePipelines'(_0xe9f2f9={}){const _0x2e5371=_0x189c00,_0x31a9ec=_0x5f7778[_0x2e5371(0x23d)]?.[_0x2e5371(0x1e9)];if(!_0x31a9ec?.[_0x2e5371(0x21f)]||!_0x31a9ec?.[_0x2e5371(0x29a)])return;const _0x166a13=_0x5f7778[_0x2e5371(0x25d)][_0x2e5371(0x2a7)][_0x2e5371(0x20f)][_0x2e5371(0x1d7)]||'default',_0x2aa62b={..._0x31a9ec['_search']||{},'env':_0x166a13,'type':this[_0x2e5371(0x268)],'tab':_0x2e5371(0x254),'mode':_0x2e5371(0x236)===_0xe9f2f9[_0x2e5371(0x211)]?_0x2e5371(0x236):_0x2e5371(0x254)};_0xe9f2f9[_0x2e5371(0x27a)]?_0x2aa62b[_0x2e5371(0x27a)]=_0xe9f2f9[_0x2e5371(0x27a)]:delete _0x2aa62b[_0x2e5371(0x27a)],_0x31a9ec[_0x2e5371(0x29a)](_0x31a9ec[_0x2e5371(0x21f)]('/db',_0x2aa62b));},'openEnginesWorkspace'(_0x4621c5={}){const _0x4f4699=_0x189c00;if(_0x4f4699(0x1db)===_0x4621c5[_0x4f4699(0x222)]){const _0x5154f9=_0x5f7778[_0x4f4699(0x23d)]?.[_0x4f4699(0x1e9)];if(!_0x5154f9?.[_0x4f4699(0x21f)]||!_0x5154f9?.[_0x4f4699(0x29a)])return;const _0x45913f={'env':_0x5f7778[_0x4f4699(0x25d)]['stores'][_0x4f4699(0x20f)][_0x4f4699(0x1d7)]||_0x4f4699(0x212),'view':_0x4f4699(0x1db),'sourceType':this[_0x4f4699(0x268)]};return _0x4621c5['kind']&&(_0x45913f[_0x4f4699(0x219)]=_0x4621c5[_0x4f4699(0x219)]),void _0x5154f9['push'](_0x5154f9['resolve'](_0x4f4699(0x1c4),_0x45913f));}this[_0x4f4699(0x272)]({'mode':_0x4621c5[_0x4f4699(0x211)]||_0x4f4699(0x254),'pipeline':_0x4621c5['pipeline']||null});},'openTypePipelinesForSelectedVector'(){const _0x185740=_0x189c00,_0x26d9c8=this[_0x185740(0x1ce)]?.[_0x185740(0x237)]?.[_0x185740(0x27a)]||null;this[_0x185740(0x272)]({'mode':_0x185740(0x236),'pipeline':_0x26d9c8});},'openGlobalEnginesWorkspace'(_0x28efee={}){const _0x21037c=_0x189c00,_0x2d6461=_0x5f7778[_0x21037c(0x23d)]?.['$router'];if(!_0x2d6461?.['resolve']||!_0x2d6461?.[_0x21037c(0x29a)])return;const _0x48bbd0={'env':_0x5f7778['$ok'][_0x21037c(0x2a7)]['okdb'][_0x21037c(0x1d7)]||_0x21037c(0x212),'sourceType':this[_0x21037c(0x268)]};_0x28efee['view']&&'overview'!==_0x28efee[_0x21037c(0x222)]||(_0x48bbd0[_0x21037c(0x211)]=_0x21037c(0x236)),_0x28efee[_0x21037c(0x222)]&&_0x21037c(0x28b)!==_0x28efee[_0x21037c(0x222)]&&(_0x48bbd0[_0x21037c(0x222)]=_0x28efee[_0x21037c(0x222)]),_0x28efee[_0x21037c(0x219)]&&(_0x48bbd0[_0x21037c(0x219)]=_0x28efee[_0x21037c(0x219)]),_0x28efee[_0x21037c(0x27a)]&&(_0x48bbd0[_0x21037c(0x27a)]=_0x28efee['pipeline']),_0x2d6461['push'](_0x2d6461['resolve'](_0x21037c(0x1c4),_0x48bbd0));},async 'openEnginesCreatePipeline'(){const _0xf5187b=_0x189c00;this[_0xf5187b(0x268)]&&await _0x5f7778[_0xf5187b(0x25d)][_0xf5187b(0x230)][_0xf5187b(0x1dd)][_0xf5187b(0x2b8)]({'owner':_0x5f7778,'title':_0xf5187b(0x21b)+this['type'],'canDrag':!0x0,'content':_0xf5187b(0x284),'context':_0xbf99d4=>({'modal':_0xbf99d4,'type':this[_0xf5187b(0x268)],'envName':_0x5f7778[_0xf5187b(0x25d)][_0xf5187b(0x2a7)][_0xf5187b(0x20f)][_0xf5187b(0x1d7)]||_0xf5187b(0x212),'onDone':async()=>{const _0x3bbb50=_0xf5187b;await Promise['all']([this['loadVectorEngines'](!0x0),this[_0x3bbb50(0x263)]()]);}})});},'openEnginesPipeline'(_0x50c9b1=null){const _0x30cd02=_0x189c00;this[_0x30cd02(0x272)]({'mode':_0x30cd02(0x236),'pipeline':_0x50c9b1||null});},'switchToEngines'(){const _0x3490ff=_0x189c00;this[_0x3490ff(0x272)]({'mode':_0x3490ff(0x254),'pipeline':this[_0x3490ff(0x1b8)]||null});},'setSearchMode'(_0x48512f){const _0x89dc71=_0x189c00;if(this[_0x89dc71(0x259)]=_0x48512f,this[_0x89dc71(0x1d9)][_0x89dc71(0x1b3)]=null,this[_0x89dc71(0x1d9)][_0x89dc71(0x24f)]=null,this[_0x89dc71(0x1d9)]['selectedVectorEngine']=null,this[_0x89dc71(0x1d9)][_0x89dc71(0x1fc)]=void 0x0,this[_0x89dc71(0x1d9)][_0x89dc71(0x2a8)]=void 0x0,this['query'][_0x89dc71(0x243)]=void 0x0,this[_0x89dc71(0x283)]={},this[_0x89dc71(0x277)]=null,_0x89dc71(0x295)!==_0x48512f){this[_0x89dc71(0x29d)]=_0x89dc71(0x217);try{_0x5f7778[_0x89dc71(0x2bd)]?.[_0x89dc71(0x1ac)](_0x89dc71(0x207))?.['clearSelection']?.();}catch(_0x480e3d){}}},'_updateGeoIndexes'(){const _0x110423=_0x189c00;this[_0x110423(0x1c8)]=this[_0x110423(0x249)][_0x110423(0x242)](_0x237266=>this[_0x110423(0x257)][_0x237266]?.[_0x110423(0x270)]),this[_0x110423(0x1c8)][_0x110423(0x1d2)]&&!this['geoField']&&(this[_0x110423(0x286)]=this['geoIndexes'][0x0]);},async 'loadGeoQuery'(){const _0x41d50e=_0x189c00;if(!this[_0x41d50e(0x268)]||!this[_0x41d50e(0x286)])return;const _0x57d310=parseFloat(this[_0x41d50e(0x2aa)]),_0x260dd1=parseFloat(this['geoLon']);if(isNaN(_0x57d310)||isNaN(_0x260dd1))return;const _0x4396d=this[_0x41d50e(0x1f9)]?parseFloat(this[_0x41d50e(0x1f9)]):void 0x0;this[_0x41d50e(0x1d9)][_0x41d50e(0x227)]=!0x0,this[_0x41d50e(0x283)]={};try{const _0x3f56b7={...this[_0x41d50e(0x1d9)][_0x41d50e(0x1d9)]},_0x10ae5e={'lat':_0x57d310,'lon':_0x260dd1};_0x4396d&&!isNaN(_0x4396d)&&(_0x10ae5e['radius']=_0x4396d),_0x3f56b7[this[_0x41d50e(0x286)]]={'$near':_0x10ae5e};const _0x2ea37c=await fetch(this[_0x41d50e(0x1f3)]+'/type/'+this[_0x41d50e(0x268)]+'/query',{'method':_0x41d50e(0x25a),'headers':{'Content-Type':_0x41d50e(0x239)},'body':JSON['stringify']({'filter':_0x3f56b7,'options':{'limit':this['query'][_0x41d50e(0x247)]}})});if(!_0x2ea37c['ok'])throw new Error(_0x2ea37c[_0x41d50e(0x1cc)]);const {data:_0x5797f2,meta:_0x2003ff}=await _0x2ea37c['json']();let _0x2b9546=_0x5797f2??[];this[_0x41d50e(0x1e3)]||(_0x2b9546=_0x2b9546[_0x41d50e(0x1f7)]()[_0x41d50e(0x220)]()),this[_0x41d50e(0x1d9)][_0x41d50e(0x1b9)]=_0x2b9546;const _0x1cd200={};this[_0x41d50e(0x1d9)][_0x41d50e(0x23b)]=_0x2b9546[_0x41d50e(0x26f)](_0x53066f=>(x(_0x53066f[_0x41d50e(0x291)],_0x53066f[_0x41d50e(0x1c0)]),null!=_0x53066f['distance']&&(_0x1cd200[_0x53066f[_0x41d50e(0x1c0)]]=_0x53066f[_0x41d50e(0x2ac)]),_0x53066f[_0x41d50e(0x291)])),this['geoDistanceMap']=_0x1cd200,this[_0x41d50e(0x1d9)][_0x41d50e(0x267)]=!0x1,this[_0x41d50e(0x1d9)]['hasPrev']=!0x1,this['query'][_0x41d50e(0x223)]=null,this['query'][_0x41d50e(0x235)]=[],this[_0x41d50e(0x1d9)][_0x41d50e(0x244)]=_0x2003ff?.[_0x41d50e(0x244)]??null,this[_0x41d50e(0x1d9)][_0x41d50e(0x27d)]=_0x2b9546[_0x41d50e(0x1d2)];}catch(_0x3f3e49){console[_0x41d50e(0x256)](_0x41d50e(0x258),_0x3f3e49);}finally{this['query'][_0x41d50e(0x227)]=!0x1;}},get 'selectedVectorEngineMeta'(){const _0x585bb9=_0x189c00;return this['query'][_0x585bb9(0x1d8)]?this[_0x585bb9(0x20a)][_0x585bb9(0x266)](_0x5f1b9f=>this[_0x585bb9(0x1e8)](_0x5f1b9f[_0x585bb9(0x2be)])===this[_0x585bb9(0x1d9)][_0x585bb9(0x1d8)])??null:null;},'helpOpen':!0x1,get 'typeFields'(){const _0x3afbe8=_0x189c00,_0x225b02=(_0x5f7778[_0x3afbe8(0x25d)]['stores'][_0x3afbe8(0x20f)][_0x3afbe8(0x1f5)]||[])[_0x3afbe8(0x266)](_0x58239a=>_0x58239a[_0x3afbe8(0x268)]===this[_0x3afbe8(0x268)]);return _0x225b02?.['fields']||{};},get 'typeCount'(){const _0x3e6ec5=_0x189c00,_0x44c79f=(_0x5f7778[_0x3e6ec5(0x25d)][_0x3e6ec5(0x2a7)][_0x3e6ec5(0x20f)][_0x3e6ec5(0x1f5)]||[])[_0x3e6ec5(0x266)](_0x2c76fa=>_0x2c76fa[_0x3e6ec5(0x268)]===this[_0x3e6ec5(0x268)]);return _0x44c79f?.[_0x3e6ec5(0x23f)]??'?';},get 'typeFieldEntries'(){const _0xf39018=_0x189c00;return Object[_0xf39018(0x282)](this[_0xf39018(0x260)])[_0xf39018(0x26f)](([_0x20ec13,_0x19b2ae])=>({'name':_0x20ec13,'types':_0x19b2ae}));},get 'indexEntries'(){const _0x43c097=_0x189c00;return this[_0x43c097(0x249)][_0x43c097(0x26f)](_0x34a1c3=>({'name':_0x34a1c3,'fields':_0x34a1c3[_0x43c097(0x1c9)]('~'),'status':this[_0x43c097(0x257)][_0x34a1c3]?.['status']||'ready','isGeo':!!this['indexStatuses'][_0x34a1c3]?.[_0x43c097(0x270)],'geoPrecision':this['indexStatuses'][_0x34a1c3]?.[_0x43c097(0x270)]?.['precision']??null,'isUnique':!!this[_0x43c097(0x257)][_0x34a1c3]?.[_0x43c097(0x1df)],'createdBy':this[_0x43c097(0x257)][_0x34a1c3]?.['createdBy']??null,'usedBy':this['indexStatuses'][_0x34a1c3]?.['usedBy']??[]}));},get 'selectedIndexInfo'(){const _0x46c0ce=_0x189c00,_0x15e8c9=this[_0x46c0ce(0x1d9)]['selectedIndex'];if(!_0x15e8c9)return null;const _0x38b07c=this[_0x46c0ce(0x257)][_0x15e8c9];return{'fields':_0x15e8c9[_0x46c0ce(0x1c9)]('~'),'isGeo':!!_0x38b07c?.[_0x46c0ce(0x270)],'geoPrecision':_0x38b07c?.[_0x46c0ce(0x270)]?.[_0x46c0ce(0x246)]??null,'isUnique':!!_0x38b07c?.[_0x46c0ce(0x1df)]};},get 'ftsEntries'(){const _0x25029a=_0x189c00;return this[_0x25029a(0x2ab)][_0x25029a(0x26f)](_0x3d4fe2=>({'name':_0x3d4fe2['name'],'status':_0x3d4fe2[_0x25029a(0x298)]||'ready','fields':(_0x3d4fe2[_0x25029a(0x28e)]&&_0x3d4fe2[_0x25029a(0x28e)][_0x25029a(0x22e)]?_0x3d4fe2[_0x25029a(0x28e)][_0x25029a(0x22e)]:[])['join'](',\x20'),'sizeBytes':_0x3d4fe2[_0x25029a(0x1e6)]??null}));},'fmtBytes'(_0x23d552){const _0x5e41d7=_0x189c00;if(null==_0x23d552||0x0===_0x23d552)return'—';const _0x1698ca=['B','KB','MB','GB'];let _0x4fcd58=_0x23d552,_0x302f67=0x0;for(;_0x4fcd58>=0x400&&_0x302f67<_0x1698ca['length']-0x1;)_0x4fcd58/=0x400,_0x302f67++;return _0x4fcd58[_0x5e41d7(0x23a)](0x1)+'\u00a0'+_0x1698ca[_0x302f67];},'ttlStats':null,'ttlStatsLoading':!0x1,'ttlSweepBusy':!0x1,'defaultTTL':null,'defaultTTLInput':'','defaultTTLPreset':'','defaultTTLBusy':!0x1,async 'loadTTLStats'(){const _0x5e9a87=_0x189c00;if(this[_0x5e9a87(0x268)]){this['ttlStatsLoading']=!0x0;try{const _0x2da2d1=await fetch(this[_0x5e9a87(0x1f3)]+'/ttl/stats?type='+encodeURIComponent(this[_0x5e9a87(0x268)])),_0x5ec45c=await _0x2da2d1[_0x5e9a87(0x28c)]();this[_0x5e9a87(0x20d)]=_0x5ec45c[_0x5e9a87(0x231)]??_0x5ec45c['result']??null;}catch{this[_0x5e9a87(0x20d)]=null;}finally{this[_0x5e9a87(0x264)]=!0x1;}}},async 'loadDefaultTTL'(){const _0x778072=_0x189c00;if(this[_0x778072(0x268)])try{const _0x237a1d=await fetch(this[_0x778072(0x1f3)]+_0x778072(0x1c6)+encodeURIComponent(this[_0x778072(0x268)])+_0x778072(0x1d6)),_0x26967c=await _0x237a1d[_0x778072(0x28c)](),_0x613212=_0x26967c[_0x778072(0x231)]?.[_0x778072(0x215)]??_0x26967c[_0x778072(0x2b5)]?.[_0x778072(0x215)]??null;this[_0x778072(0x215)]=_0x613212,this[_0x778072(0x251)]=_0x613212?String(_0x613212):'',this[_0x778072(0x25f)]=_0x613212?String(_0x613212):'';}catch{this['defaultTTL']=null;}},async 'setDefaultTTLAction'(){const _0x4a194e=_0x189c00,_0x3f8837=parseInt(this[_0x4a194e(0x251)]);if(_0x3f8837&&!(_0x3f8837<=0x0)){this[_0x4a194e(0x1f2)]=!0x0;try{const _0x53d119=await fetch(this[_0x4a194e(0x1f3)]+'/type/'+encodeURIComponent(this[_0x4a194e(0x268)])+_0x4a194e(0x1d6),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'ttl':_0x3f8837})});if(!_0x53d119['ok']){const _0xe3171=await _0x53d119['json']()[_0x4a194e(0x2ad)](()=>({}));throw new Error(_0xe3171?.['error']?.['message']||_0x53d119[_0x4a194e(0x1cc)]);}this[_0x4a194e(0x215)]=_0x3f8837,_0x5f7778[_0x4a194e(0x25d)][_0x4a194e(0x230)]?.['toast']?.[_0x4a194e(0x1b6)]?.('Default\x20TTL\x20set\x20('+this[_0x4a194e(0x221)](_0x3f8837)+')');}catch(_0x4e575a){_0x5f7778['$ok'][_0x4a194e(0x230)]?.[_0x4a194e(0x275)]?.[_0x4a194e(0x256)]?.(_0x4e575a[_0x4a194e(0x232)]||_0x4a194e(0x1ae));}finally{this['defaultTTLBusy']=!0x1;}}},async 'clearDefaultTTLAction'(){const _0x2e5f92=_0x189c00;this[_0x2e5f92(0x1f2)]=!0x0;try{const _0x1ecdb2=await fetch(this[_0x2e5f92(0x1f3)]+_0x2e5f92(0x1c6)+encodeURIComponent(this[_0x2e5f92(0x268)])+_0x2e5f92(0x1d6),{'method':_0x2e5f92(0x27b)});if(!_0x1ecdb2['ok'])throw new Error(_0x1ecdb2[_0x2e5f92(0x1cc)]);this[_0x2e5f92(0x215)]=null,this[_0x2e5f92(0x251)]='',this[_0x2e5f92(0x25f)]='',_0x5f7778['$ok']['shared']?.[_0x2e5f92(0x275)]?.[_0x2e5f92(0x1b6)]?.(_0x2e5f92(0x279));}catch(_0xce73db){_0x5f7778[_0x2e5f92(0x25d)][_0x2e5f92(0x230)]?.[_0x2e5f92(0x275)]?.['error']?.(_0xce73db[_0x2e5f92(0x232)]||_0x2e5f92(0x2b2));}finally{this[_0x2e5f92(0x1f2)]=!0x1;}},'onDefaultTTLPresetChange'(_0x9aa822){const _0x43a2ad=_0x189c00;this[_0x43a2ad(0x25f)]=_0x9aa822,_0x9aa822&&(this[_0x43a2ad(0x251)]=_0x9aa822);},async 'triggerSweep'(){const _0x46baca=_0x189c00;this[_0x46baca(0x1be)]=!0x0;try{const _0x294e26=await fetch(this[_0x46baca(0x1f3)]+_0x46baca(0x1bf),{'method':_0x46baca(0x25a),'headers':{'Content-Type':_0x46baca(0x239)},'body':JSON['stringify']({'batchSize':0x3e8})}),_0x5da9ad=await _0x294e26[_0x46baca(0x28c)](),_0x3cc73c=_0x46baca(0x2bf)+((_0x5da9ad['data']??_0x5da9ad['result']??{})['removed']??0x0)+_0x46baca(0x1ec);_0x5f7778[_0x46baca(0x25d)][_0x46baca(0x230)]?.[_0x46baca(0x275)]?.[_0x46baca(0x1b6)]?.(_0x3cc73c),await this[_0x46baca(0x238)](),await this[_0x46baca(0x1d9)]['load']();}catch(_0x465a07){_0x5f7778['$ok'][_0x46baca(0x230)]?.[_0x46baca(0x275)]?.[_0x46baca(0x256)]?.(_0x465a07[_0x46baca(0x232)]||_0x46baca(0x22d));}finally{this[_0x46baca(0x1be)]=!0x1;}},'fmtDuration'(_0x613d64){const _0x36ba8e=_0x189c00;if(null==_0x613d64)return'—';const _0x679786=Math[_0x36ba8e(0x1ee)](_0x613d64/0x3e8);return _0x679786<0x3c?_0x679786+'s':_0x679786<0xe10?Math['floor'](_0x679786/0x3c)+'m\x20'+_0x679786%0x3c+'s':_0x679786<0x15180?Math['floor'](_0x679786/0xe10)+'h\x20'+Math[_0x36ba8e(0x1ee)](_0x679786%0xe10/0x3c)+'m':Math['floor'](_0x679786/0x15180)+'d\x20'+Math['floor'](_0x679786%0x15180/0xe10)+'h';},get 'vectorEntries'(){const _0x30e770=_0x189c00;return this[_0x30e770(0x20a)][_0x30e770(0x26f)](_0x549e69=>({'name':_0x549e69[_0x30e770(0x2be)],'displayName':this[_0x30e770(0x1e8)](_0x549e69[_0x30e770(0x2be)]),'status':_0x549e69['isRunning']?_0x30e770(0x1cb):_0x549e69['status']||_0x30e770(0x1c2),'running':_0x549e69[_0x30e770(0x241)],'pipeline':_0x549e69[_0x30e770(0x237)]&&_0x549e69[_0x30e770(0x237)][_0x30e770(0x27a)]?_0x549e69[_0x30e770(0x237)][_0x30e770(0x27a)]:null}));},get 'siftSchema'(){return _0xf653e(this['typeFields']);},async 'loadIndexes'(_0x14d525=!0x1){const _0x49fee7=_0x189c00;if(this[_0x49fee7(0x268)]&&(_0x14d525||_0x85d531!==this[_0x49fee7(0x268)]))try{const _0x22ce48=await fetch(this[_0x49fee7(0x1f3)]+_0x49fee7(0x1c6)+this['type']+_0x49fee7(0x210)),_0x28c965=await _0x22ce48['json'](),_0x5c709c=_0x28c965[_0x49fee7(0x231)]??_0x28c965[_0x49fee7(0x2b5)]??{};this['possibleIndexes']=Object[_0x49fee7(0x253)](_0x5c709c),this[_0x49fee7(0x257)]=_0x5c709c,this[_0x49fee7(0x209)](),_0x85d531=this[_0x49fee7(0x268)];}catch(_0x2e4fd4){console['error'](_0x49fee7(0x26b),_0x2e4fd4);}},async 'loadFtsIndexes'(_0x32234a=!0x1){const _0x34449b=_0x189c00;if(this[_0x34449b(0x268)]&&(_0x32234a||_0x376ae1!==this[_0x34449b(0x268)]))try{const _0x5b94ea=await fetch(this[_0x34449b(0x1f3)]+'/type/'+this[_0x34449b(0x268)]+_0x34449b(0x1f8)),{data:_0x21b51b}=await _0x5b94ea[_0x34449b(0x28c)]();this['ftsList']=_0x21b51b||[],_0x376ae1=this[_0x34449b(0x268)];}catch(_0x3cacae){console[_0x34449b(0x256)]('Error\x20fetching\x20FTS\x20indexes',_0x3cacae);}},async 'loadVectorEngines'(_0x3e80cf=!0x1){const _0x264da0=_0x189c00;if(this[_0x264da0(0x268)]&&(_0x3e80cf||_0x4ca5fe!==this[_0x264da0(0x268)]))try{const _0x26d32d=_0x5f7778[_0x264da0(0x25d)][_0x264da0(0x2a7)][_0x264da0(0x20f)][_0x264da0(0x1d7)]||'default',[_0x30e83f,_0x670e49]=await Promise[_0x264da0(0x24d)]([fetch(__ENV__[_0x264da0(0x25b)]+'/env/'+encodeURIComponent(_0x26d32d)+_0x264da0(0x1c4))['then'](_0x45b4e8=>_0x45b4e8[_0x264da0(0x28c)]()),fetch(__ENV__['API']+'/embeddings/embedders')[_0x264da0(0x208)](_0xee076d=>_0xee076d['json']())]),_0x36c9eb='fulfilled'===_0x30e83f[_0x264da0(0x298)]?_0x30e83f[_0x264da0(0x291)]?.[_0x264da0(0x2b5)]??_0x30e83f[_0x264da0(0x291)]?.[_0x264da0(0x231)]??[]:[],_0x513549=[...'fulfilled'===_0x670e49['status']?_0x670e49[_0x264da0(0x291)]?.[_0x264da0(0x231)]??[]:[],..._0x36c9eb],_0x2e8758={};for(const _0x48015e of _0x513549)_0x264da0(0x27e)===_0x48015e[_0x264da0(0x268)]&&_0x48015e[_0x264da0(0x28e)]&&(_0x2e8758[_0x48015e[_0x264da0(0x2be)]]={'source_type':_0x48015e['config'][_0x264da0(0x21a)],'source_env':_0x48015e[_0x264da0(0x28e)][_0x264da0(0x2a6)]??'default'});this[_0x264da0(0x20a)]=_0x513549['filter'](_0x3cc8e9=>{const _0x21a19e=_0x264da0;if(_0x21a19e(0x26a)!==_0x3cc8e9[_0x21a19e(0x268)])return!0x1;const _0x1bf655=_0x3cc8e9[_0x21a19e(0x28e)]?.[_0x21a19e(0x21a)],_0xdea5e1=_0x3cc8e9[_0x21a19e(0x28e)]?.['source_env']??_0x21a19e(0x212);if(_0x1bf655===this[_0x21a19e(0x268)]&&_0xdea5e1===_0x26d32d)return!0x0;const _0x1afa63=_0x2e8758[_0x3cc8e9[_0x21a19e(0x2be)]];return _0x1afa63?.[_0x21a19e(0x21a)]===this[_0x21a19e(0x268)]&&(_0x1afa63?.[_0x21a19e(0x2a6)]??_0x21a19e(0x212))===_0x26d32d;}),_0x4ca5fe=this[_0x264da0(0x268)];}catch(_0x2cc9c6){this[_0x264da0(0x20a)]=[];}},async 'loadTypeEnginesCount'(){const _0x6157b6=_0x189c00;if(this[_0x6157b6(0x268)])try{const _0x11a8aa=_0x5f7778[_0x6157b6(0x25d)][_0x6157b6(0x2a7)][_0x6157b6(0x20f)]['selectedEnv']||_0x6157b6(0x212),_0xbf9c9d=await fetch(__ENV__[_0x6157b6(0x25b)]+_0x6157b6(0x2ae)+encodeURIComponent(_0x11a8aa)+_0x6157b6(0x1c6)+encodeURIComponent(this[_0x6157b6(0x268)])+_0x6157b6(0x1dc)),_0x1c7222=await _0xbf9c9d[_0x6157b6(0x28c)]()['catch'](()=>({})),_0x1570a1=_0xbf9c9d['ok']?_0x1c7222?.[_0x6157b6(0x231)]??[]:[],_0x326d9e=new Set();for(const _0x2088ea of _0x1570a1[_0x6157b6(0x278)](_0x338313=>_0x338313?.[_0x6157b6(0x254)]??[])){const _0x46130a=_0x2088ea?.['key']??(_0x2088ea?.['type']&&_0x2088ea?.[_0x6157b6(0x2be)]?_0x2088ea[_0x6157b6(0x268)]+'@'+_0x2088ea[_0x6157b6(0x2be)]:_0x2088ea?.[_0x6157b6(0x2be)]??null);_0x46130a&&_0x326d9e[_0x6157b6(0x1bd)](_0x46130a);}this[_0x6157b6(0x296)]=_0x326d9e[_0x6157b6(0x245)];}catch{this['typeEngineCount']=0x0;}else this[_0x6157b6(0x296)]=0x0;},async 'recomputeFields'(){const _0x16f6f2=_0x189c00;if(this['type'])try{await fetch(this[_0x16f6f2(0x1f3)]+_0x16f6f2(0x1c6)+this[_0x16f6f2(0x268)]+_0x16f6f2(0x2c0),{'method':_0x16f6f2(0x25a)}),await _0x5f7778['$ok'][_0x16f6f2(0x2a7)]['okdb']['reloadTypes'](),_0x5f7778[_0x16f6f2(0x25d)][_0x16f6f2(0x230)]?.[_0x16f6f2(0x275)]?.['success']?.(_0x16f6f2(0x1f6));}catch(_0x23bb4f){console[_0x16f6f2(0x256)](_0x16f6f2(0x1e0),_0x23bb4f),_0x5f7778[_0x16f6f2(0x25d)][_0x16f6f2(0x230)]?.[_0x16f6f2(0x275)]?.[_0x16f6f2(0x256)]?.('Recompute\x20failed');}},'indexStatusBadge'(_0x2e54f4){const _0x4a465f=_0x189c00,_0x3a1139=this['indexStatuses']?.[_0x2e54f4]?.[_0x4a465f(0x298)];return _0x3a1139&&'ready'!==_0x3a1139?_0x3a1139:null;},'ftsStatusBadge'(_0x543d31){const _0xff7129=_0x189c00,_0x2bcc14=_0x543d31?.[_0xff7129(0x298)];return _0x2bcc14&&_0xff7129(0x276)!==_0x2bcc14?_0x2bcc14:null;},'keyOf':_0x32463d=>_0x32463d?.['__key']??_0x32463d?.['key']??null,get 'hasDirectValueRows'(){const _0x50b812=_0x189c00;return(this[_0x50b812(0x1d9)][_0x50b812(0x1b9)]||[])[_0x50b812(0x1e2)](_0x261b2f=>!y(_0x261b2f?.[_0x50b812(0x291)]));},get 'displayRows'(){const _0xa44517=_0x189c00;return this['hasDirectValueRows']?this['query'][_0xa44517(0x1b9)]:this[_0xa44517(0x1d9)]['values'];},'rowValueOf':_0x4054ec=>_0x4054ec&&'object'==typeof _0x4054ec&&_0x189c00(0x1c0)in _0x4054ec&&_0x189c00(0x291)in _0x4054ec?_0x4054ec[_0x189c00(0x291)]:_0x4054ec,'directValueKindOf'(_0x76367e){const _0x2fe65f=_0x189c00,_0x294066=this[_0x2fe65f(0x1ef)](_0x76367e);return null===_0x294066?_0x2fe65f(0x1ed):Array[_0x2fe65f(0x25e)](_0x294066)?_0x2fe65f(0x2a9):y(_0x294066)?null:_0x2fe65f(0x285);},'inlineValueOf'(_0x2a3711){const _0x24fc60=_0x189c00;return m(this[_0x24fc60(0x1ef)](_0x2a3711));},'prettyValueOf'(_0x1a11eb){const _0x29c800=_0x189c00;return m(this[_0x29c800(0x1ef)](_0x1a11eb),0x2);},'scoreOf'(_0x46bb0d){const _0x583a8b=_0x189c00,_0x1f271c=this[_0x583a8b(0x24b)](_0x46bb0d);return _0x1f271c?this[_0x583a8b(0x1d9)][_0x583a8b(0x265)]?.[_0x1f271c]?.[_0x583a8b(0x1c5)]??null:null;},'matchOf'(_0x1638c3){const _0x5cedfd=_0x189c00,_0x58a690=this[_0x5cedfd(0x24b)](_0x1638c3);if(!_0x58a690)return null;const _0x3c4dca=this[_0x5cedfd(0x1d9)]['ftsScoreMap']?.[_0x58a690];if(!_0x3c4dca||null==_0x3c4dca[_0x5cedfd(0x1c5)])return null;const _0x72cf2f=_0x3c4dca[_0x5cedfd(0x2ba)]??0x2*_0x3c4dca[_0x5cedfd(0x28a)];return _0x3c4dca[_0x5cedfd(0x1c5)]+'/'+_0x72cf2f;},'vectorScoreOf'(_0x279f63){const _0x3504f0=_0x189c00,_0x16c48a=this[_0x3504f0(0x24b)](_0x279f63);if(!_0x16c48a)return null;const _0x528b45=this['query'][_0x3504f0(0x1e4)]?.[_0x16c48a];return null==_0x528b45?null:Math[_0x3504f0(0x1b4)](0x64*_0x528b45)+'%';},'vectorChunkMetaOf'(_0x7bbaa6){const _0x5cfc0e=_0x189c00,_0x320e7b=this[_0x5cfc0e(0x24b)](_0x7bbaa6);return _0x320e7b?this[_0x5cfc0e(0x1d9)]['vectorChunkMetaMap']?.[_0x320e7b]??null:null;},'distanceOf'(_0x3b9ef5){const _0x19c29a=_0x189c00,_0x45f5be=this[_0x19c29a(0x24b)](_0x3b9ef5);if(!_0x45f5be)return null;const _0xd4f845=this['geoDistanceMap']?.[_0x45f5be];return null==_0xd4f845?null:_0xd4f845<0x3e8?Math[_0x19c29a(0x1b4)](_0xd4f845)+'\x20m':(_0xd4f845/0x3e8)['toFixed'](0x1)+_0x19c29a(0x274);},'displayVectorName'(_0x3bc9d6){const _0x16c432=_0x189c00,_0x1e3efb=(_0x5f7778[_0x16c432(0x25d)][_0x16c432(0x2a7)]['okdb'][_0x16c432(0x1d7)]||'default')+':';return _0x3bc9d6['startsWith'](_0x1e3efb)?_0x3bc9d6[_0x16c432(0x1f7)](_0x1e3efb['length']):_0x3bc9d6;},'selectVectorEngine'(_0x138237,_0x5300e2){const _0x14210c=_0x189c00;if(_0x14210c(0x255)===_0x138237)return _0x5300e2&&(_0x5300e2[_0x14210c(0x2b0)][_0x14210c(0x291)]=this['query'][_0x14210c(0x1d8)]||''),void this[_0x14210c(0x228)]();this[_0x14210c(0x1d9)][_0x14210c(0x1d8)]=_0x138237||null,this[_0x14210c(0x1d9)][_0x14210c(0x1d8)]&&(this[_0x14210c(0x1d9)][_0x14210c(0x1b3)]=null,this['query']['selectedFtsIndex']=null,this[_0x14210c(0x1d9)][_0x14210c(0x1fc)]=void 0x0,this['query'][_0x14210c(0x2a8)]=void 0x0,this[_0x14210c(0x1d9)]['selectedIndexEnd']=void 0x0);},'openCreatePipelineModal'(){const _0x1f5419=_0x189c00;this[_0x1f5419(0x1da)]();},'createMenuOpen':!0x1,'onRowChanged'(_0x5ba5e8){const _0x32c764=_0x189c00,_0x470d7f=_0x5ba5e8?.['detail']??null,_0x3bbfc5=_0x470d7f?.[_0x32c764(0x1c0)]??null;if(null!=_0x3bbfc5){const _0x46d1d4=this[_0x32c764(0x1d9)][_0x32c764(0x1b9)][_0x32c764(0x1eb)](_0x21b8f3=>_0x21b8f3?.[_0x32c764(0x1c0)]===_0x3bbfc5);if(_0x46d1d4>=0x0){const _0xbbb419=_0x470d7f?.['value'];x(_0xbbb419,_0x3bbfc5),this[_0x32c764(0x1d9)][_0x32c764(0x1b9)][_0x32c764(0x1e1)](_0x46d1d4,0x1,{...this[_0x32c764(0x1d9)][_0x32c764(0x1b9)][_0x46d1d4],'value':_0xbbb419}),_0x46d1d4<this[_0x32c764(0x1d9)][_0x32c764(0x23b)][_0x32c764(0x1d2)]&&this[_0x32c764(0x1d9)]['values'][_0x32c764(0x1e1)](_0x46d1d4,0x1,_0xbbb419);}}_0x5f7778[_0x32c764(0x25d)][_0x32c764(0x230)][_0x32c764(0x275)][_0x32c764(0x1b6)](_0x32c764(0x1e7)),this[_0x32c764(0x28f)]();},'onRemoveRow'(_0x3379db){const _0x1f62c6=_0x189c00,_0x219b41=this[_0x1f62c6(0x1d9)]['items'][_0x1f62c6(0x1eb)](_0x46a4a9=>_0x46a4a9?.[_0x1f62c6(0x1c0)]===_0x3379db);_0x219b41>=0x0&&(this['query'][_0x1f62c6(0x23b)][_0x1f62c6(0x1e1)](_0x219b41,0x1),this[_0x1f62c6(0x1d9)][_0x1f62c6(0x1b9)][_0x1f62c6(0x1e1)](_0x219b41,0x1));},async 'openAddModal'(){const _0x41d86d=_0x189c00;await _0x5f7778[_0x41d86d(0x25d)][_0x41d86d(0x230)][_0x41d86d(0x1dd)][_0x41d86d(0x2b8)]({'owner':_0x5f7778,'title':_0x41d86d(0x1fa),'content':_0x41d86d(0x225),'context':_0x31c972=>({'modal':_0x31c972,'type':this['type'],'onDone':async({key:_0x4a0b38,value:_0x2a7aba})=>{const _0x3f277d=_0x41d86d;x(_0x2a7aba,_0x4a0b38),this[_0x3f277d(0x1d9)][_0x3f277d(0x23b)][_0x3f277d(0x294)](_0x2a7aba),this[_0x3f277d(0x1d9)][_0x3f277d(0x1b9)][_0x3f277d(0x294)]({'key':_0x4a0b38,'value':_0x2a7aba});}})});},async 'openCreateIndex'(){const _0x2010af=_0x189c00;let _0x3ef964={},_0x22d105=[];try{const _0x4d4751=await fetch(this[_0x2010af(0x1f3)]+_0x2010af(0x1c6)+this[_0x2010af(0x268)]+'/deep-properties'),_0x3fdb05=await _0x4d4751[_0x2010af(0x28c)]();_0x3ef964=(_0x3fdb05[_0x2010af(0x231)]??_0x3fdb05[_0x2010af(0x2b5)])?.[_0x2010af(0x240)]??{},_0x22d105=Object[_0x2010af(0x253)](_0x3ef964)['filter'](_0x126a24=>_0x3ef964[_0x126a24][_0x2010af(0x1f1)]('geo'));}catch{const _0x3463f9=(_0x5f7778[_0x2010af(0x25d)]['stores'][_0x2010af(0x20f)]['types']||[])['find'](_0x493fd0=>_0x493fd0['type']===this[_0x2010af(0x268)]);for(const _0x4116ab of Object[_0x2010af(0x253)](_0x3463f9?.[_0x2010af(0x22e)]||{}))_0x3ef964[_0x4116ab]=_0x3463f9[_0x2010af(0x22e)][_0x4116ab];}await _0x5f7778[_0x2010af(0x25d)][_0x2010af(0x230)][_0x2010af(0x1dd)]['open']({'owner':_0x5f7778,'title':_0x2010af(0x203),'content':_0x2010af(0x1f0),'context':_0x2f6326=>({'modal':_0x2f6326,'type':this[_0x2010af(0x268)],'deepPaths':_0x3ef964,'geoFields':_0x22d105,'onDone':async()=>{const _0x1c2694=_0x2010af;await this[_0x1c2694(0x224)](!0x0);}})});},async 'dropType'(){const _0x2d8c0f=_0x189c00;if(this[_0x2d8c0f(0x268)]&&await _0x5f7778[_0x2d8c0f(0x25d)]['shared']['modal'][_0x2d8c0f(0x287)](_0x2d8c0f(0x214)+this['type']+_0x2d8c0f(0x1cf)))try{await fetch(this[_0x2d8c0f(0x1f3)]+'/type/'+this['type'],{'method':_0x2d8c0f(0x27b)}),await _0x5f7778[_0x2d8c0f(0x25d)][_0x2d8c0f(0x2a7)][_0x2d8c0f(0x20f)]['reloadTypes'](),_0x5f7778[_0x2d8c0f(0x2bd)][_0x2d8c0f(0x1c1)](new CustomEvent(_0x2d8c0f(0x269),{'detail':this[_0x2d8c0f(0x268)]}));}catch(_0x38daab){console['error'](_0x2d8c0f(0x280),_0x38daab);}},async 'removeIndex'(_0xd64907){const _0x2c38fc=_0x189c00,_0x944d00=_0xd64907||this[_0x2c38fc(0x1d9)]['selectedIndex'];if(_0x944d00&&await _0x5f7778['$ok'][_0x2c38fc(0x230)]['modal'][_0x2c38fc(0x287)](_0x2c38fc(0x1cd)+_0x944d00+'\x22?')){try{const _0x154fbe=await fetch(this[_0x2c38fc(0x1f3)]+_0x2c38fc(0x1c6)+this[_0x2c38fc(0x268)]+_0x2c38fc(0x216)+_0x944d00,{'method':_0x2c38fc(0x27b)});if(!_0x154fbe['ok']){const _0x350315=await _0x154fbe['json']()[_0x2c38fc(0x2ad)](()=>({})),_0x20b93f=_0x350315?.[_0x2c38fc(0x256)]?.[_0x2c38fc(0x22c)];if(_0x2c38fc(0x252)===_0x20b93f){const _0x2284b4=(_0x350315?.['error']?.[_0x2c38fc(0x226)]?.[_0x2c38fc(0x1ca)]??[])[_0x2c38fc(0x26f)](_0x22267e=>_0x22267e[_0x2c38fc(0x219)]+':'+_0x22267e['name'])[_0x2c38fc(0x2b4)](',\x20');return void _0x5f7778[_0x2c38fc(0x25d)][_0x2c38fc(0x230)]?.['toast']?.['error']?.(_0x2c38fc(0x202)+(_0x2284b4||_0x2c38fc(0x1c7)));}throw new Error(_0x350315?.['error']?.[_0x2c38fc(0x232)]??_0x2c38fc(0x29b));}}catch(_0x3bd696){return console[_0x2c38fc(0x256)](_0x2c38fc(0x218),_0x3bd696),void _0x5f7778[_0x2c38fc(0x25d)][_0x2c38fc(0x230)]?.[_0x2c38fc(0x275)]?.[_0x2c38fc(0x256)]?.(_0x3bd696[_0x2c38fc(0x232)]);}this[_0x2c38fc(0x1d9)][_0x2c38fc(0x1b3)]===_0x944d00&&(this[_0x2c38fc(0x1d9)]['selectedIndex']=null),this[_0x2c38fc(0x1d9)][_0x2c38fc(0x1fb)](),await this['loadIndexes'](!0x0),await this[_0x2c38fc(0x1d9)][_0x2c38fc(0x1b2)]();}},'selectIndex'(_0x14169b){const _0x456a21=_0x189c00;if('__create_index__'===_0x14169b)return this['query'][_0x456a21(0x1b3)]=null,void this[_0x456a21(0x250)]();'__remove_index__'!==_0x14169b?(this[_0x456a21(0x1d9)][_0x456a21(0x1b3)]=_0x14169b||null,this['query'][_0x456a21(0x1b3)]&&(this['query'][_0x456a21(0x24f)]=null),this[_0x456a21(0x1d9)][_0x456a21(0x1b3)]||(this[_0x456a21(0x1d9)][_0x456a21(0x1fc)]=void 0x0,this['query'][_0x456a21(0x2a8)]=void 0x0,this[_0x456a21(0x1d9)][_0x456a21(0x243)]=void 0x0)):this[_0x456a21(0x1b0)]();},'selectFtsIndex'(_0x1b2f37,_0x2bbcf2){const _0x417240=_0x189c00;if(_0x417240(0x204)===_0x1b2f37)return _0x2bbcf2&&(_0x2bbcf2[_0x417240(0x2b0)]['value']=this[_0x417240(0x1d9)][_0x417240(0x24f)]||''),void this['openCreateFtsModal']();_0x417240(0x1e5)!==_0x1b2f37?(this['query'][_0x417240(0x24f)]=_0x1b2f37||null,this['query']['selectedFtsIndex']&&(this[_0x417240(0x1d9)]['selectedIndex']=null,this['query'][_0x417240(0x1fc)]=void 0x0,this[_0x417240(0x1d9)][_0x417240(0x2a8)]=void 0x0,this[_0x417240(0x1d9)]['selectedIndexEnd']=void 0x0)):this['dropFtsIndex']();},async 'openCreateFtsModal'(){const _0x4bb28e=_0x189c00;let _0x485019={};try{const _0x2f05af=await fetch(this[_0x4bb28e(0x1f3)]+_0x4bb28e(0x1c6)+this[_0x4bb28e(0x268)]+_0x4bb28e(0x2a4)),_0x575fc5=await _0x2f05af[_0x4bb28e(0x28c)]();_0x485019=(_0x575fc5[_0x4bb28e(0x231)]??_0x575fc5['result'])?.[_0x4bb28e(0x240)]??{};}catch{const _0x3361a3=(_0x5f7778[_0x4bb28e(0x25d)][_0x4bb28e(0x2a7)][_0x4bb28e(0x20f)]['types']||[])[_0x4bb28e(0x266)](_0x7f56c5=>_0x7f56c5[_0x4bb28e(0x268)]===this[_0x4bb28e(0x268)]);for(const _0x3714f3 of Object[_0x4bb28e(0x253)](_0x3361a3?.['fields']||{}))_0x485019[_0x3714f3]=_0x3361a3[_0x4bb28e(0x22e)][_0x3714f3];}await _0x5f7778['$ok'][_0x4bb28e(0x230)][_0x4bb28e(0x1dd)][_0x4bb28e(0x2b8)]({'owner':_0x5f7778,'title':_0x4bb28e(0x1af),'content':'<create-fts-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:api-base=\x22apiBase\x22\x20:deep-paths=\x22deepPaths\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x4d06ef=>({'modal':_0x4d06ef,'type':this[_0x4bb28e(0x268)],'apiBase':this[_0x4bb28e(0x1f3)],'deepPaths':_0x485019,'onDone':async()=>{const _0x4c76f4=_0x4bb28e;await this[_0x4c76f4(0x1ad)](!0x0);}})});},async 'dropFtsIndex'(_0x50c548){const _0x5293a2=_0x189c00,_0x302e5f=_0x50c548||this[_0x5293a2(0x1d9)][_0x5293a2(0x24f)];if(_0x302e5f&&await _0x5f7778[_0x5293a2(0x25d)][_0x5293a2(0x230)][_0x5293a2(0x1dd)][_0x5293a2(0x287)]('Drop\x20FTS\x20index\x20\x22'+_0x302e5f+_0x5293a2(0x1cf))){try{await fetch(this['envApiBase']+_0x5293a2(0x1c6)+this[_0x5293a2(0x268)]+'/fts/'+encodeURIComponent(_0x302e5f),{'method':_0x5293a2(0x27b)});}catch(_0x499a10){return console[_0x5293a2(0x256)](_0x5293a2(0x29f),_0x499a10),void _0x5f7778[_0x5293a2(0x25d)][_0x5293a2(0x230)]?.['toast']?.['error']?.('Drop\x20FTS\x20failed');}this[_0x5293a2(0x1d9)][_0x5293a2(0x24f)]===_0x302e5f&&(this[_0x5293a2(0x1d9)]['selectedFtsIndex']=null),await this[_0x5293a2(0x1ad)](!0x0),await this['query'][_0x5293a2(0x1b2)]();}},async 'rebuildIndex'(_0x14f095){const _0x5042e8=_0x189c00;if(_0x14f095&&await _0x5f7778[_0x5042e8(0x25d)][_0x5042e8(0x230)][_0x5042e8(0x1dd)][_0x5042e8(0x287)](_0x5042e8(0x22a)+_0x14f095+_0x5042e8(0x2b1)))try{await fetch(this[_0x5042e8(0x1f3)]+'/type/'+this[_0x5042e8(0x268)]+_0x5042e8(0x216)+encodeURIComponent(_0x14f095)+'/reset',{'method':'POST'}),_0x5f7778[_0x5042e8(0x25d)][_0x5042e8(0x230)]?.[_0x5042e8(0x275)]?.[_0x5042e8(0x1b6)]?.(_0x5042e8(0x25c)+_0x14f095+'\x22…'),await this[_0x5042e8(0x224)](!0x0);}catch(_0x57e71e){console[_0x5042e8(0x256)](_0x5042e8(0x297),_0x57e71e),_0x5f7778[_0x5042e8(0x25d)][_0x5042e8(0x230)]?.['toast']?.[_0x5042e8(0x256)]?.(_0x5042e8(0x2a2));}},async 'rebuildFts'(_0x53ef79){const _0x19fbe1=_0x189c00,_0x5175cf=_0x53ef79||this[_0x19fbe1(0x1d9)][_0x19fbe1(0x24f)];if(_0x5175cf&&await _0x5f7778['$ok'][_0x19fbe1(0x230)][_0x19fbe1(0x1dd)][_0x19fbe1(0x287)](_0x19fbe1(0x1de)+_0x5175cf+_0x19fbe1(0x1c3)))try{await fetch(this['envApiBase']+_0x19fbe1(0x1c6)+this[_0x19fbe1(0x268)]+'/fts/'+encodeURIComponent(_0x5175cf)+_0x19fbe1(0x1d3),{'method':_0x19fbe1(0x25a)}),_0x5f7778['$ok'][_0x19fbe1(0x230)]?.[_0x19fbe1(0x275)]?.[_0x19fbe1(0x1b6)]?.('Rebuilding\x20FTS\x20index\x20\x22'+_0x5175cf+'\x22…'),await this[_0x19fbe1(0x1ad)](!0x0);}catch(_0x4af603){console[_0x19fbe1(0x256)](_0x19fbe1(0x2bb),_0x4af603),_0x5f7778[_0x19fbe1(0x25d)]['shared']?.['toast']?.['error']?.('Rebuild\x20failed');}},'onGeoTableSelect'(_0x1f36ba){const _0x5350a2=_0x189c00;if(_0x5350a2(0x295)!==this['searchMode'])return;this['_geoSelSource']=_0x5350a2(0x217);const _0xec9185=_0x1f36ba[_0x5350a2(0x2b7)]?.[_0x5350a2(0x27c)];this[_0x5350a2(0x277)]=_0x5350a2(0x21d)===_0xec9185?null:_0x1f36ba[_0x5350a2(0x2b7)]?.['row']?.['__key']??null;},'onGeoMapSelect'(_0x34a83f){const _0x407e11=_0x189c00,_0x4f6a3d=_0x34a83f[_0x407e11(0x2b7)]?.[_0x407e11(0x1c0)]??null;this[_0x407e11(0x281)]='map',this[_0x407e11(0x277)]=this[_0x407e11(0x277)]===_0x4f6a3d?null:_0x4f6a3d;}};},'_unsubs':[],async 'init'(_0x124ccc){const _0x4429d5=_0x33ca;if(_0x124ccc['$watch'](()=>this[_0x4429d5(0x268)],async()=>{const _0x1b579b=_0x4429d5;this[_0x1b579b(0x1d9)][_0x1b579b(0x268)]=this[_0x1b579b(0x268)],this[_0x1b579b(0x1d9)][_0x1b579b(0x24f)]=null,this[_0x1b579b(0x1d9)][_0x1b579b(0x1d8)]=null,this[_0x1b579b(0x259)]=_0x1b579b(0x20e),this['query'][_0x1b579b(0x1fb)](),await this[_0x1b579b(0x224)](!0x0),await this[_0x1b579b(0x1ad)](!0x0),await this[_0x1b579b(0x205)](!0x0),await this[_0x1b579b(0x263)](),await this['loadViolations'](),await this[_0x1b579b(0x1d9)][_0x1b579b(0x1b2)]();}),_0x124ccc[_0x4429d5(0x273)](()=>[this['query'][_0x4429d5(0x1d9)],this[_0x4429d5(0x1d9)]['selectedIndex'],this['query'][_0x4429d5(0x2a8)],this[_0x4429d5(0x1d9)]['selectedIndexEnd'],this[_0x4429d5(0x1d9)][_0x4429d5(0x213)],this[_0x4429d5(0x1d9)][_0x4429d5(0x2a1)],this[_0x4429d5(0x1d9)]['selectedPrefix'],this[_0x4429d5(0x1d9)][_0x4429d5(0x24f)],this[_0x4429d5(0x1d9)][_0x4429d5(0x1ff)],this[_0x4429d5(0x1d9)]['ftsMode'],this['query'][_0x4429d5(0x2b9)],this[_0x4429d5(0x1d9)][_0x4429d5(0x1d8)],this['query']['vectorText'],this[_0x4429d5(0x1d9)]['vectorLimit']],async()=>{const _0x4c2e88=_0x4429d5;this[_0x4c2e88(0x268)]&&(this['query'][_0x4c2e88(0x1fb)](),await this[_0x4c2e88(0x1d9)][_0x4c2e88(0x1b2)]());}),_0x124ccc['$watch'](()=>[this[_0x4429d5(0x259)],this[_0x4429d5(0x286)],this[_0x4429d5(0x2aa)],this['geoLon'],this[_0x4429d5(0x1f9)],this['geoSortAsc'],this['query'][_0x4429d5(0x1d9)]],async()=>{const _0x24278c=_0x4429d5;_0x24278c(0x295)===this[_0x24278c(0x259)]&&this[_0x24278c(0x268)]&&this[_0x24278c(0x286)]&&this['geoLat']&&this[_0x24278c(0x1ea)]&&await this['loadGeoQuery']();}),this[_0x4429d5(0x268)]){const _0x1a26ec=new Set([_0x4429d5(0x231),'changelog','manage',_0x4429d5(0x20c),'pipelines','engines']),_0x3749d2=_0x124ccc['$vars'][_0x4429d5(0x1e9)]?.['search']?.['tab'];_0x3749d2&&_0x1a26ec[_0x4429d5(0x1bc)](_0x3749d2)&&(this[_0x4429d5(0x23c)]=_0x4429d5(0x236)===_0x3749d2?_0x4429d5(0x254):_0x3749d2),await Promise['all']([this[_0x4429d5(0x224)](),this[_0x4429d5(0x1ad)](),this['loadVectorEngines'](),this['loadTypeEnginesCount'](),this['loadViolations'](),this['loadTTLStats'](),this[_0x4429d5(0x1fd)](),this[_0x4429d5(0x1d9)]['load']()]);}this[_0x4429d5(0x24a)]=[_0x266dde['on'](_0x4429d5(0x248),()=>{const _0x219466=_0x4429d5;this[_0x219466(0x224)](!0x0),this[_0x219466(0x1ad)](!0x0);}),_0x266dde['on'](_0x4429d5(0x27f),_0x45c2a9=>{const _0x11c967=_0x4429d5;this['loadIndexes'](!0x0),this[_0x11c967(0x1ad)](!0x0);const _0x34f00d=_0x45c2a9?.[_0x11c967(0x268)];if(!_0x34f00d||_0x34f00d===this[_0x11c967(0x268)]){const _0xa2e75a=_0x45c2a9?.[_0x11c967(0x1d0)],_0x5d5bea=Array[_0x11c967(0x25e)](_0xa2e75a)&&'fts'===_0xa2e75a[0x0],_0x36f6d0=_0x5d5bea?_0xa2e75a[0x1]:_0x11c967(0x21e)==typeof _0xa2e75a?_0xa2e75a:'',_0x4c07b1=_0x5d5bea?'FTS\x20index\x20ready:\x20'+_0x36f6d0:_0x36f6d0?'Index\x20ready:\x20'+_0x36f6d0:_0x11c967(0x1d1);_0x124ccc['$ok'][_0x11c967(0x230)]?.['toast']?.[_0x11c967(0x234)]?.(_0x4c07b1);}}),_0x266dde['on'](_0x4429d5(0x26e),()=>this[_0x4429d5(0x224)](!0x0)),_0x266dde['on'](_0x4429d5(0x26c),()=>this[_0x4429d5(0x224)](!0x0)),_0x266dde['on'](_0x4429d5(0x261),()=>this[_0x4429d5(0x1ad)](!0x0)),_0x266dde['on'](_0x4429d5(0x29e),()=>this[_0x4429d5(0x1ad)](!0x0)),_0x266dde['on'](_0x4429d5(0x1d5),()=>this[_0x4429d5(0x205)](!0x0)),_0x266dde['on'](_0x4429d5(0x229),()=>this[_0x4429d5(0x205)](!0x0)),_0x266dde['on'](_0x4429d5(0x22b),()=>this['loadVectorEngines'](!0x0)),_0x266dde['on'](_0x4429d5(0x21c),()=>this[_0x4429d5(0x205)](!0x0)),_0x266dde['on'](_0x4429d5(0x2a3),()=>this[_0x4429d5(0x205)](!0x0)),_0x266dde['on'](_0x4429d5(0x1d5),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x229),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x22b),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x21c),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x2a3),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x293),()=>this['loadVectorEngines'](!0x0)),_0x266dde['on'](_0x4429d5(0x293),()=>this[_0x4429d5(0x263)]())];const _0x25c6c4=new Set([_0x4429d5(0x231),_0x4429d5(0x1b1),_0x4429d5(0x24e),'schema',_0x4429d5(0x236),'engines']);_0x124ccc[_0x4429d5(0x273)](()=>_0x124ccc[_0x4429d5(0x23d)]['$router']?.['_search']?.[_0x4429d5(0x23c)],()=>{const _0x518416=_0x4429d5,_0x12e8e8=_0x124ccc[_0x518416(0x23d)][_0x518416(0x1e9)]?.[_0x518416(0x292)]?.['tab'];if(!_0x12e8e8)return;const _0x147651=_0x25c6c4[_0x518416(0x1bc)](_0x12e8e8)?_0x518416(0x236)===_0x12e8e8?_0x518416(0x254):_0x12e8e8:_0x518416(0x231);this[_0x518416(0x23c)]!==_0x147651&&(this[_0x518416(0x23c)]=_0x147651);}),_0x124ccc[_0x4429d5(0x273)](()=>this[_0x4429d5(0x277)],_0x256f95=>{const _0x472fd3=_0x4429d5,_0x225396=this['_geoSelSource'];if(this[_0x472fd3(0x281)]=null,_0x472fd3(0x295)!==this[_0x472fd3(0x259)])return;if(_0x472fd3(0x217)===_0x225396)return;const _0x44036c=_0x124ccc['$el']?.['querySelector']('ok-table');if(!_0x44036c)return;if(!_0x256f95)return _0x44036c[_0x472fd3(0x2b3)]?.(),void _0x44036c[_0x472fd3(0x1fe)]?.();const _0x1f56a7=this[_0x472fd3(0x288)]?.['find'](_0x408084=>this[_0x472fd3(0x24b)](_0x408084)===_0x256f95);_0x1f56a7?(_0x44036c[_0x472fd3(0x29c)]?.(_0x1f56a7),_0x44036c['clearExpanded']?.(),_0x44036c[_0x472fd3(0x289)]?.(_0x1f56a7)):(_0x44036c[_0x472fd3(0x2b3)]?.(),_0x44036c[_0x472fd3(0x1fe)]?.());});},'unmount'(){const _0x44178e=_0x33ca;for(const _0x46542b of this[_0x44178e(0x24a)])_0x46542b();this[_0x44178e(0x24a)]=[];},'template':_0x1b645b(0x200),'style':'[tag]{display:flex;flex-direction:column;height:100%;min-width:0;min-height:0}.ok-table__cell__inner>span.object{color:#a6da95}.ok-table__cell__inner>span.number{color:var(--okdb-accent)}.ok-table__cell__inner>span.boolean{color:#ff6c6b}.ok-table__cell__inner>span.null,.ok-table__cell__inner>span.undefined{color:#c792ea}.ok-table__cell__inner>.key__header{font-weight:700;color:var(--okdb-json-key)}.ok-table__cell__inner>.key__cell{color:var(--okdb-json-key)}.fts-score-badge,.mode-count{display:inline-block;border-radius:999px;font-size:10px;vertical-align:middle}.mode-count{margin-left:4px;padding:0\x205px;background:#ffffff18;line-height:1.6}.fts-score-badge{margin-left:5px;padding:1px\x205px;border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent);opacity:.8}.vec-score-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-indigo)\x2033%,transparent);color:var(--okdb-indigo)}.direct-value-badge,.geo-dist-badge,.vec-score-badge{display:inline-block;margin-left:5px;padding:1px\x205px;border-radius:999px;font-size:10px;vertical-align:middle;opacity:.8}.geo-dist-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent);color:var(--okdb-success)}.direct-value-badge{border:1px\x20solid}.direct-value-badge--scalar{border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2033%,transparent);color:var(--okdb-app-fg-muted)}.direct-value-badge--array{border-color:#2dd4bf55;color:#2dd4bf}.direct-value-badge--null{border-color:color-mix(in\x20srgb,var(--okdb-purple)\x2033%,transparent);color:var(--okdb-purple)}.manage-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.manage-section-title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;opacity:.5;margin-bottom:0}.manage-grid{display:grid;gap:0}.manage-grid--2{grid-template-columns:1fr\x201fr}.manage-grid--3{grid-template-columns:1fr\x20auto\x20auto}.manage-grid--4{grid-template-columns:1fr\x20auto\x20auto\x20auto}.manage-grid--idx{grid-template-columns:minmax(80px,2fr)\x20minmax(90px,1fr)\x20minmax(80px,1fr)\x20auto\x20auto\x20auto}.idx-consumer-badge,.idx-owned-badge{display:inline-block;padding:1px\x206px;border-radius:3px;font-size:10px;white-space:nowrap}.idx-owned-badge{background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);color:var(--okdb-accent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent)}.idx-consumer-badge{background:color-mix(in\x20srgb,var(--okdb-sky)\x2012%,transparent);color:var(--okdb-sky);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-sky)\x2025%,transparent)}.manage-grid--fts{grid-template-columns:minmax(80px,1fr)\x202fr\x20minmax(60px,auto)\x20minmax(50px,auto)\x20auto\x20auto}.manage-grid--vec{grid-template-columns:minmax(80px,1fr)\x20minmax(60px,auto)\x20minmax(80px,1fr)\x20auto}.idx-kind-badge{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-kind-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-kind-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-kind-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.idx-info-strip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px\x208px;background:var(--okdb-app-bg-deep);border:1px\x20solid\x20var(--okdb-app-surface-2);border-radius:4px;font-size:11px}.idx-info-label{opacity:.4;white-space:nowrap}.idx-info-field{font-size:11px;color:var(--okdb-json-key)}.idx-info-badge{padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-info-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-info-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-info-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.manage-col-hd{font-size:11px;opacity:.4;padding:0\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-border);font-weight:400}.manage-cell{padding:6px\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-surface);font-size:13px;display:flex;align-items:center;min-width:0}.manage-cell--dim{opacity:.5;font-size:12px}.manage-status{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid}.manage-status--ready{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.manage-status--creating,.manage-status--resetting{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.card--danger{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-danger)\x2013%,transparent)!important}'};
|
|
1
|
+
function _0x2375(){const _0x13150b=['loadFtsIndexes','/ttl/default','queryMode','selectedEnv','selectedDirection','keyOf','loadTTLStats','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:0;\x20height:100%;\x22>\x0a\x0a\x20\x20<!--\x20Tab\x20bar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:2px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20margin-bottom:12px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27data\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Data\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27changelog\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27changelog\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Changelog\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27manage\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27manage\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Manage\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27schema\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27schema\x27\x20?\x20(\x27border-color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20background:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27#f8717111\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent)\x27)\x20+\x20\x27;\x20border-bottom-color:transparent;\x27)\x20:\x20(violationCount\x20>\x200\x20?\x20\x27border-color:transparent;\x20background:transparent;\x20color:var(--okdb-danger);\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Schema<if\x20:=\x22violationCount\x20>\x200\x22><span\x20style=\x22margin-left:6px;\x20font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2013%,\x20transparent);\x20color:var(--okdb-danger);\x20font-weight:600;\x22>{{\x20violationCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22switchToEngines()\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27engines\x27\x20?\x20\x27border-color:var(--okdb-purple);\x20color:var(--okdb-purple);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Engines<if\x20:=\x22typeEngineCount\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20typeEngineCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Data\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27data\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20flex:1;\x20min-height:0;\x22>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:16px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20──\x20Left\x20column:\x20query\x20controls\x20──\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x20min-width:0;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Row\x201:\x20filter\x20label\x20+\x20accordion\x20+\x20JSON\x20input\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Label\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20color:#6a8a9a;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20searchMode\x20===\x20\x27vector\x27\x20?\x20\x27Post-filter\x20vector\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27fts\x27\x20?\x20\x27Post-filter\x20FTS\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27geo\x27\x20?\x20\x27Post-filter\x20geo\x20results\x20with\x20sift\x27\x20:\x20\x27Filter\x20with\x20sift\x20query\x27\x20}}\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=\x22help-toggle\x22\x20@click=\x22helpOpen\x20=\x20!helpOpen\x22\x20:class=\x22helpOpen\x20?\x20\x27help-toggle--open\x27\x20:\x20\x27\x27\x22>i</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Accordion:\x20query\x20reference\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22helpOpen\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22help-accordion\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{}</code><span>match\x20all\x20records</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22field\x22:\x20\x22value\x22}</code><span>exact\x20match</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22n\x22:\x20{\x22$gt\x22:\x205,\x20\x22$lt\x22:\x2050}}</code><span>numeric\x20comparison</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$in\x22:\x20[\x22a\x22,\x22b\x22]}}</code><span>set\x20membership</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$exists\x22:\x20true}}</code><span>field\x20presence</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x20ht-row--note\x22>Nested\x20fields\x20use\x20dot\x20notation:\x20<code>\x22a.b\x22</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.query\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.query\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:schema=\x22siftSchema\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:220px;\x20min-height:60px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-json-input>\x0a\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Mode\x20bar:\x20Scan\x20/\x20Index\x20/\x20FTS\x20/\x20Vector\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27scan\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27scan\x27)\x22>Scan</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27index\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27index\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Index<if\x20:=\x22possibleIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20possibleIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27fts\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27fts\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FTS<if\x20:=\x22ftsList.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20ftsList.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27vector\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27vector\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Vector<if\x20:=\x22vectorEngines.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20vectorEngines.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27geo\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27geo\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Geo<if\x20:=\x22geoIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20geoIndexes.length\x20}}</span></if>\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<!--\x20──\x20Scan\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27scan\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\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=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20key\x20scan\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20user-select:none;\x22>Full\x20key-ordered\x20scan\x20·\x20sift\x20applied\x20as\x20filter</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27index\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectIndex($event.target.value)\x22\x20style=\x22min-width:160px;\x22>\x0a\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<each\x20:of=\x22possibleIndexes\x22\x20let:item=\x22idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22idx\x22\x20:selected=\x22query.selectedIndex\x20===\x20idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20idx\x20}}{{\x20indexStatuses[idx]?.unique\x20?\x20\x27\x20◆\x27\x20:\x20\x27\x27\x20}}{{\x20indexStatusBadge(idx)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20indexStatusBadge(idx)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\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<option\x20value=\x22__create_index__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__remove_index__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Remove\x20\x22{{\x20query.selectedIndex\x20}}\x22</option>\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</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27prefix\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27prefix\x27,\x20query.selectedIndexStart\x20=\x20undefined,\x20query.selectedIndexEnd\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27range\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27range\x27,\x20query.selectedPrefix\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Range\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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</if>\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──\x20Index\x20detail\x20strip\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x20&&\x20selectedIndexInfo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22idx-info-strip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-label\x22>Fields:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedIndexInfo.fields\x22\x20let:item=\x22f\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22idx-info-field\x22>{{\x20f\x20}}</code>\x0a\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<if\x20:=\x22selectedIndexInfo.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--unique\x22>◆\x20unique</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\x20\x20<if\x20:=\x22selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--geo\x22>◎\x20geo\x20·\x20precision\x20{{\x20selectedIndexInfo.geoPrecision\x20??\x207\x20}}</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\x20\x20<if\x20:=\x22!selectedIndexInfo.isUnique\x20&&\x20!selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--regular\x22>regular</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</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<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27prefix\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Prefix:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedPrefix\x22\x20@change=\x22query.selectedPrefix\x20=\x20$event.detail\x22\x20style=\x22width:220px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.35;\x20font-size:11px;\x22>scalar\x20or\x20array\x20for\x20composite\x20indexes</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\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27range\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Start:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexStart\x22\x20@change=\x22query.selectedIndexStart\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>End:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexEnd\x22\x20@change=\x22query.selectedIndexEnd\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\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</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20FTS\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27fts\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectFtsIndex($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\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<each\x20:of=\x22ftsList\x22\x20let:item=\x22fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22fts.name\x22\x20:selected=\x22query.selectedFtsIndex\x20===\x20fts.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fts.name\x20}}{{\x20ftsStatusBadge(fts)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20ftsStatusBadge(fts)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\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<option\x20value=\x22__create_fts__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20FTS\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__drop_fts__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Drop\x20\x22{{\x20query.selectedFtsIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\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\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Search…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.ftsText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22query.ftsText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:140px;\x20max-width:300px;\x22\x0a\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<div\x20class=\x22seg-toggle\x22\x20title=\x22AND:\x20all\x20terms\x20required\x20·\x20OR:\x20any\x20term\x20matches,\x20ranked\x20by\x20hit\x20count\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27and\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27and\x27\x22>AND</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27or\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27or\x27\x22>OR</button>\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<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20white-space:nowrap;\x20user-select:none;\x22\x20title=\x22Prefix:\x20\x27sta\x27\x20matches\x20\x27start\x27,\x20\x27stack\x27,\x20etc.\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22query.ftsPrefix\x22\x20@change=\x22query.ftsPrefix\x20=\x20$event.target.checked\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\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</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\x20\x20<!--\x20──\x20Vector\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27vector\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22cpu\x22\x20style=\x22width:13px;height:13px;opacity:.5;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20vector\x20search\x20engines\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Create\x20Pipeline…</button>\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\x20\x20<if\x20:=\x22vectorEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectVectorEngine($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\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<each\x20:of=\x22vectorEngines\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22displayVectorName(ve.name)\x22\x20:selected=\x22query.selectedVectorEngine\x20===\x20displayVectorName(ve.name)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20displayVectorName(ve.name)\x20}}{{\x20ve.isRunning\x20?\x20\x27\x27\x20:\x20\x27\x20(stopped)\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\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<option\x20value=\x22__create_pipeline__\x22\x20style=\x22color:var(--okdb-indigo);\x22>+\x20Create\x20pipeline…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\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=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Semantic\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.500=\x22query.vectorText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:160px;\x20max-width:340px;\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-size:12px;\x20opacity:.55;\x20white-space:nowrap;\x20user-select:none;\x22>top</span>\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=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.vectorLimit\x20=\x20Math.max(1,\x20Math.min(200,\x20Number($event.target.value)\x20||\x2020))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x20max=\x22200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:56px;\x20text-align:center;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Max\x20results\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</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline\x20badge\x20—\x20clickable,\x20navigates\x20to\x20local\x20Engines\x20tab\x20in\x20pipeline\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta.meta\x20&&\x20selectedVectorEngineMeta.meta.pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(selectedVectorEngineMeta.meta.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x20white-space:nowrap;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20the\x20type\x20pipeline\x20view\x20focused\x20on:\x20\x27\x20+\x20selectedVectorEngineMeta.meta.pipeline\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20{{\x20selectedVectorEngineMeta.meta.pipeline\x20}}\x20→</button>\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</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Link\x20to\x20local\x20type\x20engines\x20workspace\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openTypePipelinesForSelectedVector()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2020%,\x20transparent);\x20color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2060%,\x20transparent);\x20background:transparent;\x20cursor:pointer;\x20white-space:nowrap;\x20margin-left:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20vector\x20search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Type\x20Engines\x20→</button>\x0a\x0a\x20\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</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Geo\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>◎</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20geo\x20indexes\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.\x20Create\x20one\x20from\x20the\x20Manage\x20tab.</span>\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\x20\x20<if\x20:=\x22geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22geoField\x20=\x20$event.target.value\x22\x20style=\x22min-width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22geoIndexes\x22\x20let:item=\x22gf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22gf\x22\x20:selected=\x22geoField\x20===\x20gf\x22>{{\x20gf\x20}}</option>\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</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lat</span>\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=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x2240.7484\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLat\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\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-size:12px;\x20opacity:.5;\x22>Lon</span>\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=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22-73.9856\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLon\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\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-size:12px;\x20opacity:.5;\x22>Radius\x20(m)</span>\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=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22∞\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoRadius\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:90px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Leave\x20empty\x20for\x20unlimited\x20radius\x20(sorted\x20by\x20distance)\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<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22geoSortAsc\x20=\x20!geoSortAsc\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20geoSortAsc\x20?\x20\x27↑\x20Nearest\x27\x20:\x20\x27↓\x20Farthest\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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<div\x20style=\x22font-size:11px;\x20opacity:.35;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Results\x20sorted\x20by\x20distance\x20·\x20sift\x20filter\x20applied\x20as\x20post-filter\x20·\x20leave\x20radius\x20empty\x20for\x20no\x20cutoff\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Geo\x20view\x20toggle\x20(only\x20in\x20geo\x20mode)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20flex-shrink:0;\x20padding:2px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27table\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27table\x27\x22\x20title=\x22Table\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22table-2\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27map\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27map\x27\x22\x20\x20\x20title=\x22Map\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22map-pin\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27split\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27split\x27\x22\x20title=\x22Table\x20+\x20Map\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22columns\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.3;\x20user-select:none;\x22>view</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Results\x20area\x20──\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20position:relative;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<if\x20:=\x22query.busy\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Results\x20bar:\x20timing\x20+\x20Add\x20item\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22margin-bottom:8px;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.time\x20!=\x20null\x20?\x20query.time\x20+\x20\x27ms\x27\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22opacity:.7;\x22>{{\x20type\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openAddModal\x22\x20class=\x22btn-primary\x20btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x20item\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\x0a\x20\x20\x20\x20<!--\x20Content\x20row\x20—\x20table\x20+\x20map\x20as\x20siblings,\x20shown/hidden\x20via\x20display:none\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex:1;\x20min-height:0;\x20gap:10px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TABLE\x20col\x20—\x20hidden\x20only\x20in\x20pure\x20map\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoViewMode\x20===\x20\x27map\x27\x20?\x20\x27display:none\x27\x20:\x20\x27flex:1;\x20min-width:0;\x20display:flex;\x20flex-direction:column;\x20min-height:0;\x27\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\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\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\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\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\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</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27direct-value-badge\x20direct-value-badge--\x27\x20+\x20directValueKindOf(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{{\x20directValueKindOf(row)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\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\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\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\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(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<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\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\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\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</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>value</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20:title=\x22prettyValueOf(row)\x22\x20style=\x22display:block;\x20white-space:pre-wrap;\x20word-break:break-word;\x20font-size:12px;\x22>{{\x20inlineValueOf(row)\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\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\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\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:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\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<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\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\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\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\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\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</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\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\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(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<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\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\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\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</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<auto\x20max=\x2210\x22\x20:show-more-content=\x22(n)\x20=>\x20\x27+\x27\x20+\x20n\x20+\x20\x27\x20cols\x27\x22\x20show-more-title=\x22Click\x20to\x20show\x20all\x20columns\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row\x20let:value>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22[typeof\x20value,\x20value\x20===\x20null\x20?\x20\x27null\x27\x20:\x20\x27\x27]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20value\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</auto>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\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\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\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:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\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<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ok-pager\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.prevPage()\x22\x20:disabled=\x22!query.hasPrev\x20||\x20query.busy\x22>‹\x20Prev</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20query.total\x20}}\x20result{{\x20query.total\x20===\x201\x20?\x20\x27\x27\x20:\x20\x27s\x27\x20}}\x20·\x20{{\x20query.pageSize\x20}}/page</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.nextPage()\x22\x20:disabled=\x22!query.hasNext\x20||\x20query.busy\x22>Next\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<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20<!--\x20MAP\x20col\x20—\x20always\x20mounted,\x20shown\x20only\x20in\x20geo\x20map/split\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:0;\x20min-height:0;\x20border-radius:8px;\x20overflow:hidden;\x20border:1px\x20solid\x20#23292e;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22{\x20\x27display\x27:\x20(geoViewMode\x20===\x20\x27map\x27\x20||\x20geoViewMode\x20===\x20\x27split\x27)?\x20\x27block\x27\x20:\x20\x27none\x27\x20}\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<geo-map\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:points=\x22geoMapPoints\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lat=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lon=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:radius=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:highlight-key=\x22geoHighlightedKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@move=\x22geoLat\x20=\x20String($event.detail.lat.toFixed(6)),\x20geoLon\x20=\x20String($event.detail.lon.toFixed(6))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22onGeoMapSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x0a</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Changelog\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27changelog\x27\x22>\x0a\x20\x20\x20\x20<type-changelog\x20:type=\x22type\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Manage\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27manage\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20flex:1;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Overview\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x22>{{\x20type\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>type</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-accent);\x22>{{\x20typeCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>records</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Fields\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20fields\x20tracked\x20yet\x20—\x20add\x20items\x20or\x20use\x20Recompute.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Field</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Observed\x20types</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typeFieldEntries\x22\x20let:item=\x22tf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20tf.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20tf.types.join(\x27,\x20\x27)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\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\x0a\x20\x20\x20\x20<!--\x20Secondary\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Secondary\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateIndex()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Kind</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Ownership</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22indexEntries\x22\x20let:item=\x22ix\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:4px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.fields\x22\x20let:item=\x22f\x22\x20let:index=\x22fi\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20f\x20}}</code><span\x20style=\x22opacity:.3;\x20font-size:11px;\x20margin-left:0;\x22\x20:style=\x22fi\x20<\x20ix.fields.length\x20-\x201\x20?\x20\x27\x27\x20:\x20\x27display:none\x27\x22>·</span>\x0a\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--geo\x22>◎\x20geo</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.45;\x20white-space:nowrap;\x22>precision\x20{{\x20ix.geoPrecision\x20??\x207\x20}}</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\x20\x20<if\x20:=\x22ix.isUnique\x20&&\x20!ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--unique\x22>◆\x20unique</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\x20\x20<if\x20:=\x22!ix.isGeo\x20&&\x20!ix.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--regular\x22>regular</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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:3px;\x20flex-direction:column;\x20align-items:flex-start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.createdBy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-owned-badge\x22>{{\x20ix.createdBy.kind\x20}}:{{\x20ix.createdBy.name\x20}}</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\x20\x20<each\x20:of=\x22ix.usedBy\x22\x20let:item=\x22consumer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-consumer-badge\x22>{{\x20consumer\x20}}</span>\x0a\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20ix.status\x22>{{\x20ix.status\x20}}</span>\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<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x20||\x20ix.usedBy.length\x20>\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22ix.usedBy.length\x20>\x200\x20?\x20\x27Used\x20by:\x20\x27\x20+\x20ix.usedBy.join(\x27,\x20\x27)\x20:\x20($ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Remove\x20this\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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</each>\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\x0a\x20\x20\x20\x20<!--\x20FTS\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>FTS\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateFtsModal()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20FTS\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20FTS\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Name</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Size</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsEntries\x22\x20let:item=\x22fe\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20fe.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20fe.fields\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20fe.status\x22>{{\x20fe.status\x20}}</span>\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<div\x20class=\x22manage-cell\x20manage-cell--dim\x22\x20style=\x22font-size:11px;\x20font-family:monospace;\x22>{{\x20fmtBytes(fe.sizeBytes)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildFts(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropFtsIndex(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x20title=\x22Drop\x20this\x20FTS\x20index\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Drop\x20this\x20FTS\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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</each>\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\x0a\x20\x20\x20\x20<!--\x20Vector\x20Search\x20Engines\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Vector\x20Search\x20Engines</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesWorkspace()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-indigo);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20Type\x20Engines\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20No\x20vector\x20search\x20engines\x20for\x20this\x20type\x20yet.\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=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-left:6px;\x20font-size:11px;\x20padding:1px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x205%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--vec\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Engine</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Pipeline</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEntries\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20ve.displayName\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20(ve.running\x20?\x20\x27ready\x27\x20:\x20\x27creating\x27)\x22>{{\x20ve.status\x20}}</span>\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<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20ve.pipeline\x20??\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(ve.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-indigo);\x20opacity:.85;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20this\x20type-scoped\x20pipeline\x20view\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\x20\x20⛓\x20View\x20local\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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</each>\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\x0a\x20\x20\x20\x20<!--\x20TTL\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Time-to-Live\x20(TTL)</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22(loadTTLStats(),\x20loadDefaultTTL())\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.6;\x22\x20:disabled=\x22ttlStatsLoading\x22\x20title=\x22Refresh\x20TTL\x20stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20<!--\x20Default\x20TTL\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:12px;\x20padding:10px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20font-weight:600;\x20opacity:.7;\x20margin-bottom:8px;\x22>Default\x20TTL\x20for\x20new\x20items</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20color:var(--okdb-success);\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Currently:\x20<span\x20style=\x22font-family:monospace;\x20font-weight:600;\x22>{{\x20fmtDuration(defaultTTL)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-size:11px;\x22>\x20({{\x20defaultTTL\x20}}ms)</span>\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\x20\x20<if\x20:=\x22!defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-bottom:8px;\x22>No\x20default\x20—\x20items\x20don\x27t\x20expire\x20unless\x20TTL\x20is\x20set\x20explicitly.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onDefaultTTLPresetChange($event.target.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>Custom…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2260000\x22>1\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22300000\x22>5\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22900000\x22>15\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x223600000\x22>1\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2221600000\x22>6\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2286400000\x22>24\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22604800000\x22>7\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x222592000000\x22>30\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!value=\x22defaultTTLInput\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22(defaultTTLInput\x20=\x20$el.value,\x20defaultTTLPreset\x20=\x20\x27\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22ms\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x20font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!defaultTTLInput\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>Set</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>Clear</button>\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<!--\x20TTL\x20stats\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ttlStats\x20||\x20!ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20TTL\x20entries\x20for\x20this\x20type\x20—\x20TTL\x20sub-databases\x20are\x20created\x20lazily\x20on\x20first\x20use.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlStats\x20&&\x20ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x20margin-bottom:10px;\x22>\x0a\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\x20style=\x22font-size:18px;\x20font-weight:600;\x20color:var(--okdb-success);\x22>{{\x20ttlStats.totalEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>entries</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\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\x20:style=\x22\x27font-size:18px;\x20font-weight:600;\x20color:\x27\x20+\x20(ttlStats.expiredEntries\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-muted)\x27)\x20+\x20\x27;\x27\x22>{{\x20ttlStats.expiredEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>expired</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\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\x20style=\x22font-size:13px;\x20font-family:monospace;\x20color:var(--okdb-app-fg);\x22>{{\x20ttlStats.nextExpiry\x20?\x20fmtDuration(ttlStats.nextExpiry\x20-\x20Date.now())\x20:\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>next\x20expiry</div>\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\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22triggerSweep()\x22\x20:disabled=\x22ttlSweepBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Sweep\x20expired\x20now\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlSweepBusy\x22><span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>Sweeping…</span></if>\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\x0a\x20\x20\x20\x20<!--\x20Danger\x20zone\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20card--danger\x22>\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22\x20style=\x22color:var(--okdb-danger);\x22>⚠\x20Danger\x20Zone</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22recomputeFields\x22\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27data:write\x27)\x20?\x20\x27Rescan\x20all\x20records\x20to\x20rebuild\x20the\x20field\x20schema\x27\x20:\x20$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Recompute\x20fields\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropType\x22\x20class=\x22btn-danger\x20btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x20type\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\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Schema\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27schema\x27\x22>\x0a\x20\x20\x20\x20<type-schema-tab\x0a\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20:on-view-key=\x22(key)\x20=>\x20setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:on-schema-changed=\x22()\x20=>\x20loadViolations()\x22\x0a\x20\x20\x20\x20\x20\x20:on-violation-count-changed=\x22(count)\x20=>\x20onViolationCountChanged(count)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27engines\x27\x22>\x0a\x20\x20\x20\x20<type-pipelines-tab\x20:type=\x22type\x22\x20:focusedpipeline=\x22currentRoutePipeline\x22\x20:currentmode=\x22currentRouteMode\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a</div>','name','types','join','Failed\x20to\x20set\x20default\x20TTL','possibleIndexes','status','has','selectedPrefix','/fts/','message','query','API','sizeBytes','defaultTTLBusy','reverse','engine:started','error','allSettled','kind','_unsubs','fulfilled','Cannot\x20remove:\x20index\x20is\x20used\x20by\x20','/indexes','source_type','usedBy','target','expand','search','data','113784SjGatu','openTypePipelines','size','result','okdb','vectorEngines','paths','loadVectorEngines','$router','dispatchEvent','unshift','Add\x20item','apiBase','1584276sCCFDE','resolve','FTS\x20index\x20ready:\x20','$ok','removed','deselect','engine:error','engine:stopped','string','round','open','defaultTTLPreset','ok-table','\x20expired\x20item(s)\x20removed','Drop\x20FTS\x20index\x20\x22','/pipelines','radius','/ref-violations/','stopped','Drop\x20type\x20error','hasDirectValueRows','default','<add-item-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:on-done=\x22onDone\x22\x20/>','stores','selectedIndexEnd','stringify','config','selectedIndex','a\x20consumer','ttlStats','engines','4965232JaMJky','609jdVEat','geoLat','array','geoConfig','object','items','geoHighlightedKey','ftsPrefix','Index\x20rebuild\x20complete','ftsList','embeddings:pipeline:ready','keys','createdBy','Rebuilding\x20FTS\x20index\x20\x22','displayRows','/deep-properties','key','find','create','<create-pipeline-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','__drop_fts__','_geoSelSource','Remove\x20index\x20\x22','Rebuild\x20index\x20error','ready','unique','violationCount','Error\x20fetching\x20FTS\x20indexes','\x20km','defaultTTL','$attr','dropped','_updateGeoIndexes','label','vectorText','score','rowValueOf','splice','loadTypeEnginesCount','openCreateIndex','typeFields','title','null','_path','indexStatuses','busy','vectorLimit','lat','searchMode','Create\x20Index','openEnginesCreatePipeline','Rebuild\x20failed','selectedVectorEngineMeta','fts:drop','clearSelection','Drop\x20type\x20\x22','index','shared','select','statusText','table','Remove\x20failed','loadIndexes','currentRoutePipeline','numTerms','fmtDuration','__remove_index__','catch','scan','ttlSweepBusy','pageSize','scalar','resetPaging','push','type','maxScore','INDEX_HAS_CONSUMERS','157867eQtVLI','displayVectorName','fts:registered','toFixed','__create_fts__','$watch','/engines','2444920VCLkBD','index:reset','code','manage','openCreatePipelineModal','map','ftsText','filter','split','isRunning','isArray','loadDefaultTTL','/env/','Rebuild\x20FTS\x20error','value','1753749zWZRWA','Default\x20TTL\x20set\x20(','geoRadius','action','pipeline','engine:uninstalled','vectorChunkMetaMap','index:registered','Fields\x20recomputed','modal','detail','count','details','geoSortAsc','source_env','changelog','lon','overview','Drop\x20FTS\x20error','dropFtsIndex','floor','/index/','precision','Recompute\x20failed','json','/reset','defaultTTLInput','pipelines','ftsMode','engine:installed','selectedFtsIndex','_backStack','geoDistanceMap','<create-index-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:deep-paths=\x22deepPaths\x22\x20:geo-fields=\x22geoFields\x22\x20:on-done=\x22onDone\x22\x20/>','distance','_anchor','/db','DELETE','Sweep\x20done:\x20','loadViolations','hasPrev','tab','geo','_search','__create_index__','/embeddings/embedders','values','geoField','3538662iVTJKK','application/json','Rebuild\x20index\x20\x22','time','ttlStatsLoading','clearExpanded','Index\x20ready:\x20','/recompute-fields','\x22?\x20This\x20cannot\x20be\x20undone.','confirm','geoLon','/type/','view','Sweep\x20failed','load','length','Item\x20updated','Create\x20FTS\x20Index','envApiBase','selectedIndexStart','__key','$vars','mode','meta','toast','Geo\x20query\x20error','defineProperty','$el','geoViewMode','selectedVectorEngine','trim','[tag]{display:flex;flex-direction:column;height:100%;min-width:0;min-height:0}.ok-table__cell__inner>span.object{color:#a6da95}.ok-table__cell__inner>span.number{color:var(--okdb-accent)}.ok-table__cell__inner>span.boolean{color:#ff6c6b}.ok-table__cell__inner>span.null,.ok-table__cell__inner>span.undefined{color:#c792ea}.ok-table__cell__inner>.key__header{font-weight:700;color:var(--okdb-json-key)}.ok-table__cell__inner>.key__cell{color:var(--okdb-json-key)}.fts-score-badge,.mode-count{display:inline-block;border-radius:999px;font-size:10px;vertical-align:middle}.mode-count{margin-left:4px;padding:0\x205px;background:#ffffff18;line-height:1.6}.fts-score-badge{margin-left:5px;padding:1px\x205px;border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent);opacity:.8}.vec-score-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-indigo)\x2033%,transparent);color:var(--okdb-indigo)}.direct-value-badge,.geo-dist-badge,.vec-score-badge{display:inline-block;margin-left:5px;padding:1px\x205px;border-radius:999px;font-size:10px;vertical-align:middle;opacity:.8}.geo-dist-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent);color:var(--okdb-success)}.direct-value-badge{border:1px\x20solid}.direct-value-badge--scalar{border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2033%,transparent);color:var(--okdb-app-fg-muted)}.direct-value-badge--array{border-color:#2dd4bf55;color:#2dd4bf}.direct-value-badge--null{border-color:color-mix(in\x20srgb,var(--okdb-purple)\x2033%,transparent);color:var(--okdb-purple)}.manage-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.manage-section-title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;opacity:.5;margin-bottom:0}.manage-grid{display:grid;gap:0}.manage-grid--2{grid-template-columns:1fr\x201fr}.manage-grid--3{grid-template-columns:1fr\x20auto\x20auto}.manage-grid--4{grid-template-columns:1fr\x20auto\x20auto\x20auto}.manage-grid--idx{grid-template-columns:minmax(80px,2fr)\x20minmax(90px,1fr)\x20minmax(80px,1fr)\x20auto\x20auto\x20auto}.idx-consumer-badge,.idx-owned-badge{display:inline-block;padding:1px\x206px;border-radius:3px;font-size:10px;white-space:nowrap}.idx-owned-badge{background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);color:var(--okdb-accent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent)}.idx-consumer-badge{background:color-mix(in\x20srgb,var(--okdb-sky)\x2012%,transparent);color:var(--okdb-sky);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-sky)\x2025%,transparent)}.manage-grid--fts{grid-template-columns:minmax(80px,1fr)\x202fr\x20minmax(60px,auto)\x20minmax(50px,auto)\x20auto\x20auto}.manage-grid--vec{grid-template-columns:minmax(80px,1fr)\x20minmax(60px,auto)\x20minmax(80px,1fr)\x20auto}.idx-kind-badge{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-kind-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-kind-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-kind-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.idx-info-strip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px\x208px;background:var(--okdb-app-bg-deep);border:1px\x20solid\x20var(--okdb-app-surface-2);border-radius:4px;font-size:11px}.idx-info-label{opacity:.4;white-space:nowrap}.idx-info-field{font-size:11px;color:var(--okdb-json-key)}.idx-info-badge{padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-info-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-info-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-info-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.manage-col-hd{font-size:11px;opacity:.4;padding:0\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-border);font-weight:400}.manage-cell{padding:6px\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-surface);font-size:13px;display:flex;align-items:center;min-width:0}.manage-cell--dim{opacity:.5;font-size:12px}.manage-status{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid}.manage-status--ready{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.manage-status--creating,.manage-status--resetting{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.card--danger{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-danger)\x2013%,transparent)!important}','fields','findIndex','geoIndexes','POST','violations','entries','ftsScoreMap','index:ready','typeEngineCount','all','querySelector','removeIndex','info','openCreateFtsModal','add','/violations/','then'];_0x2375=function(){return _0x13150b;};return _0x2375();}const _0x213c47=_0x28b9;(function(_0x35ee99,_0x4e13c4){const _0x321698=_0x28b9,_0x2b3acc=_0x35ee99();while(!![]){try{const _0x32eede=-parseInt(_0x321698(0x2ca))/0x1+-parseInt(_0x321698(0x25d))/0x2+parseInt(_0x321698(0x2e0))/0x3+parseInt(_0x321698(0x27c))/0x4+parseInt(_0x321698(0x2d1))/0x5+parseInt(_0x321698(0x1fa))/0x6+-parseInt(_0x321698(0x27d))/0x7*(parseInt(_0x321698(0x250))/0x8);if(_0x32eede===_0x4e13c4)break;else _0x2b3acc['push'](_0x2b3acc['shift']());}catch(_0x1fc2a3){_0x2b3acc['push'](_0x2b3acc['shift']());}}}(_0x2375,0xaf1be));import _0x31e557 from'@toolkit/elements/ok-icon.ok.js';import _0x388c39 from'@toolkit/elements/ok-table.ok.js';import _0x41e10e from'@toolkit/core/ok-overlay.ok.js';import _0x222aaf from'../../../components/geo-map.ok.js';import _0x47641c from'../../../components/ok-json-input.ok.js';import _0x16945e from'../../../view-models/type-query-vm.js';import{buildSiftSchema as _0x3cb5b7}from'../../../util/sift-schema.js';import _0x27b777 from'../modals/add-item-modal.ok.js';function _0x28b9(_0x3f4ada,_0x1c4347){_0x3f4ada=_0x3f4ada-0x1de;const _0x2375f=_0x2375();let _0x28b9a7=_0x2375f[_0x3f4ada];return _0x28b9a7;}import _0x3d055c from'../modals/create-fts-modal.ok.js';import _0x3bcf0e from'../modals/create-index-modal.ok.js';import _0x44fef3 from'../modals/create-pipeline-modal.ok.js';import _0x15cff from'./edit-row.ok.js';import _0x4dfb76 from'../../../stores/events-store.js';import _0x46fb0c from'./type-changelog.ok.js';import _0x30f4fa from'./type-pipelines-tab.ok.js';import _0x4435af from'./type-schema-tab.ok.js';function y(_0x81fb41){const _0x3a92e3=_0x28b9;return!!_0x81fb41&&_0x3a92e3(0x281)==typeof _0x81fb41&&!Array[_0x3a92e3(0x2db)](_0x81fb41);}function x(_0x5b48cb,_0x5907fe){const _0x33cd74=_0x28b9;y(_0x5b48cb)&&_0x5b48cb['__key']!==_0x5907fe&&Object[_0x33cd74(0x214)](_0x5b48cb,_0x33cd74(0x20e),{'value':_0x5907fe,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1});}function m(_0x1e6f4c,_0x2873c4=0x0){const _0x2b7f53=_0x28b9;try{return JSON[_0x2b7f53(0x276)](_0x1e6f4c,null,_0x2873c4)??String(_0x1e6f4c);}catch{return String(_0x1e6f4c);}}export default{'tag':'type-viewer','dependencies':[_0x31e557,_0x388c39,_0x41e10e,_0x15cff,_0x47641c,_0x46fb0c,_0x30f4fa,_0x4435af,_0x27b777,_0x3bcf0e,_0x3d055c,_0x44fef3,_0x222aaf],'attr':{'type':{}},'context'(_0x3a8739){const _0x1740ed=_0x28b9;let _0x524b05=null,_0x7a4726=null,_0x51e175=null;const _0xcc9e70=new _0x16945e({'type':_0x3a8739[_0x1740ed(0x29b)][_0x1740ed(0x2c7)],'apiBase':()=>_0x3a8739[_0x1740ed(0x260)]['stores']['okdb'][_0x1740ed(0x25c)]});return{'tab':_0x1740ed(0x24f),get 'envApiBase'(){const _0x185cc0=_0x1740ed;return _0x3a8739['$ok']['stores'][_0x185cc0(0x254)]['apiBase'];},get 'type'(){const _0x2c3000=_0x1740ed;return _0x3a8739[_0x2c3000(0x29b)]['type'];},'violationCount':0x0,async 'loadViolations'(){const _0x5e391d=_0x1740ed;if(this['type'])try{const [_0x101e0d,_0x56064f]=await Promise[_0x5e391d(0x223)]([fetch(this['envApiBase']+_0x5e391d(0x229)+encodeURIComponent(this[_0x5e391d(0x2c7)])),fetch(this['envApiBase']+_0x5e391d(0x26e)+encodeURIComponent(this['type']))]);let _0x3b4649=0x0;if(_0x101e0d['ok']){const _0x5384e8=await _0x101e0d[_0x5e391d(0x1e2)]();_0x3b4649+=(_0x5384e8?.[_0x5e391d(0x24f)]?.['violations']??_0x5384e8?.['result']?.['violations']??[])[_0x5e391d(0x209)];}if(_0x56064f['ok']){const _0xe86a92=await _0x56064f[_0x5e391d(0x1e2)]();_0x3b4649+=(_0xe86a92?.[_0x5e391d(0x24f)]?.[_0x5e391d(0x21e)]??_0xe86a92?.['result']?.['violations']??[])[_0x5e391d(0x209)];}this['violationCount']=_0x3b4649;}catch{}},'onViolationCountChanged'(_0x523cbc){const _0x374ab7=_0x1740ed;this[_0x374ab7(0x297)]=_0x523cbc;},'query':_0xcc9e70,'possibleIndexes':[],'indexStatuses':{},'createIdxPossible':[],'createIdxTypeLoaded':null,'ftsList':[],'vectorEngines':[],'typeEngineCount':0x0,'searchMode':_0x1740ed(0x2c1),'geoIndexes':[],'geoField':'','geoLat':'','geoLon':'','geoRadius':'','geoSortAsc':!0x0,'geoDistanceMap':{},'mapOpen':!0x1,'geoViewMode':_0x1740ed(0x2b9),'geoHighlightedKey':null,'_geoSelSource':null,get 'geoMapPoints'(){const _0x91dc7a=_0x1740ed,_0x4589bb=this['geoField'];return _0x4589bb?(this['query'][_0x91dc7a(0x282)]||[])[_0x91dc7a(0x2d6)](_0x3ef77d=>{const _0xf47081=_0x91dc7a,_0x3fc002=_0x3ef77d['value']||{},_0x5af4c0=((_0x225de7,_0x1f26ed)=>{let _0x129173=_0x225de7;for(const _0x590885 of _0x1f26ed['split']('.')){if(null==_0x129173)return null;_0x129173=_0x129173[_0x590885];}return _0x129173;})(_0x3fc002,_0x4589bb);return{'key':_0x3ef77d[_0xf47081(0x28d)],'title':_0x3fc002[_0xf47081(0x233)]||_0x3fc002[_0xf47081(0x2a6)]||_0x3fc002[_0xf47081(0x29e)]||_0x3ef77d['key'],'lat':_0x5af4c0?.[_0xf47081(0x2ac)],'lon':_0x5af4c0?.[_0xf47081(0x2f0)],'distance':_0x3ef77d[_0xf47081(0x1ec)]};})['filter'](_0x28af65=>null!=_0x28af65[_0x91dc7a(0x2ac)]&&null!=_0x28af65[_0x91dc7a(0x2f0)]):[];},'setTab'(_0xf1eae2){const _0x1f0eb8=_0x1740ed;if(this['tab']=_0xf1eae2,_0x1f0eb8(0x27b)===_0xf1eae2)return;const _0x466e4b=_0x3a8739[_0x1f0eb8(0x20f)][_0x1f0eb8(0x258)];if(!_0x466e4b?.[_0x1f0eb8(0x1f5)]?.[_0x1f0eb8(0x1f3)])return;const _0x3dea25={..._0x466e4b[_0x1f0eb8(0x1f5)]};delete _0x3dea25[_0x1f0eb8(0x1f3)],delete _0x3dea25[_0x1f0eb8(0x210)],delete _0x3dea25[_0x1f0eb8(0x2e4)],_0x466e4b['replace'](_0x466e4b[_0x1f0eb8(0x25e)](_0x466e4b[_0x1f0eb8(0x2a8)]||'',_0x3dea25,_0x466e4b[_0x1f0eb8(0x1ed)]||''));},'switchToPipelines'(){this['openTypePipelines']({'mode':'pipelines','pipeline':this['currentRoutePipeline']||null});},get 'currentRoutePipeline'(){const _0x262ca9=_0x1740ed;return String(_0x3a8739[_0x262ca9(0x20f)]?.[_0x262ca9(0x258)]?.[_0x262ca9(0x1f5)]?.[_0x262ca9(0x2e4)]||'');},get 'currentRouteMode'(){const _0x2c8cab=_0x1740ed;return _0x2c8cab(0x1e5)===String(_0x3a8739['$vars']?.[_0x2c8cab(0x258)]?.[_0x2c8cab(0x1f5)]?.[_0x2c8cab(0x210)]||'')[_0x2c8cab(0x218)]()?_0x2c8cab(0x1e5):_0x2c8cab(0x27b);},'openTypePipelines'(_0x4cc6b8={}){const _0x394dfe=_0x1740ed,_0x80b091=_0x3a8739[_0x394dfe(0x20f)]?.[_0x394dfe(0x258)];if(!_0x80b091?.['resolve']||!_0x80b091?.['push'])return;const _0x48d01d=_0x3a8739[_0x394dfe(0x260)][_0x394dfe(0x274)][_0x394dfe(0x254)][_0x394dfe(0x22e)]||_0x394dfe(0x272),_0x514aa6={..._0x80b091[_0x394dfe(0x1f5)]||{},'env':_0x48d01d,'type':this['type'],'tab':_0x394dfe(0x27b),'mode':_0x394dfe(0x1e5)===_0x4cc6b8['mode']?_0x394dfe(0x1e5):_0x394dfe(0x27b)};_0x4cc6b8[_0x394dfe(0x2e4)]?_0x514aa6['pipeline']=_0x4cc6b8[_0x394dfe(0x2e4)]:delete _0x514aa6[_0x394dfe(0x2e4)],_0x80b091['push'](_0x80b091[_0x394dfe(0x25e)](_0x394dfe(0x1ee),_0x514aa6));},'openEnginesWorkspace'(_0x100fe9={}){const _0xb22c39=_0x1740ed;if(_0xb22c39(0x28f)===_0x100fe9['view']){const _0x2c490c=_0x3a8739[_0xb22c39(0x20f)]?.['$router'];if(!_0x2c490c?.['resolve']||!_0x2c490c?.['push'])return;const _0x271176={'env':_0x3a8739[_0xb22c39(0x260)]['stores'][_0xb22c39(0x254)][_0xb22c39(0x22e)]||_0xb22c39(0x272),'view':_0xb22c39(0x28f),'sourceType':this['type']};return _0x100fe9[_0xb22c39(0x245)]&&(_0x271176[_0xb22c39(0x245)]=_0x100fe9[_0xb22c39(0x245)]),void _0x2c490c[_0xb22c39(0x2c6)](_0x2c490c[_0xb22c39(0x25e)]('/engines',_0x271176));}this[_0xb22c39(0x251)]({'mode':_0x100fe9[_0xb22c39(0x210)]||_0xb22c39(0x27b),'pipeline':_0x100fe9[_0xb22c39(0x2e4)]||null});},'openTypePipelinesForSelectedVector'(){const _0x405e8d=_0x1740ed,_0xea4ceb=this[_0x405e8d(0x2b1)]?.[_0x405e8d(0x211)]?.[_0x405e8d(0x2e4)]||null;this['openTypePipelines']({'mode':_0x405e8d(0x1e5),'pipeline':_0xea4ceb});},'openGlobalEnginesWorkspace'(_0x4a3766={}){const _0x2b7f30=_0x1740ed,_0x196599=_0x3a8739['$vars']?.[_0x2b7f30(0x258)];if(!_0x196599?.[_0x2b7f30(0x25e)]||!_0x196599?.[_0x2b7f30(0x2c6)])return;const _0x1097da={'env':_0x3a8739[_0x2b7f30(0x260)][_0x2b7f30(0x274)][_0x2b7f30(0x254)][_0x2b7f30(0x22e)]||'default','sourceType':this['type']};_0x4a3766['view']&&_0x2b7f30(0x2f1)!==_0x4a3766['view']||(_0x1097da[_0x2b7f30(0x210)]='pipelines'),_0x4a3766['view']&&'overview'!==_0x4a3766['view']&&(_0x1097da[_0x2b7f30(0x206)]=_0x4a3766[_0x2b7f30(0x206)]),_0x4a3766[_0x2b7f30(0x245)]&&(_0x1097da['kind']=_0x4a3766['kind']),_0x4a3766[_0x2b7f30(0x2e4)]&&(_0x1097da['pipeline']=_0x4a3766[_0x2b7f30(0x2e4)]),_0x196599[_0x2b7f30(0x2c6)](_0x196599[_0x2b7f30(0x25e)](_0x2b7f30(0x2d0),_0x1097da));},async 'openEnginesCreatePipeline'(){const _0x4bba95=_0x1740ed;this[_0x4bba95(0x2c7)]&&await _0x3a8739[_0x4bba95(0x260)]['shared']['modal'][_0x4bba95(0x267)]({'owner':_0x3a8739,'title':'Create\x20Pipeline\x20·\x20'+this['type'],'canDrag':!0x0,'content':_0x4bba95(0x290),'context':_0x31fe8c=>({'modal':_0x31fe8c,'type':this[_0x4bba95(0x2c7)],'envName':_0x3a8739[_0x4bba95(0x260)][_0x4bba95(0x274)][_0x4bba95(0x254)][_0x4bba95(0x22e)]||_0x4bba95(0x272),'onDone':async()=>{const _0x219048=_0x4bba95;await Promise[_0x219048(0x223)]([this[_0x219048(0x257)](!0x0),this[_0x219048(0x2a3)]()]);}})});},'openEnginesPipeline'(_0x5414ba=null){const _0x3c1d5f=_0x1740ed;this[_0x3c1d5f(0x251)]({'mode':_0x3c1d5f(0x1e5),'pipeline':_0x5414ba||null});},'switchToEngines'(){const _0x579216=_0x1740ed;this[_0x579216(0x251)]({'mode':_0x579216(0x27b),'pipeline':this[_0x579216(0x2bc)]||null});},'setSearchMode'(_0xee817f){const _0x444324=_0x1740ed;if(this[_0x444324(0x2ad)]=_0xee817f,this[_0x444324(0x23d)][_0x444324(0x278)]=null,this[_0x444324(0x23d)][_0x444324(0x1e8)]=null,this[_0x444324(0x23d)]['selectedVectorEngine']=null,this['query'][_0x444324(0x23a)]=void 0x0,this[_0x444324(0x23d)]['selectedIndexStart']=void 0x0,this[_0x444324(0x23d)][_0x444324(0x275)]=void 0x0,this[_0x444324(0x1ea)]={},this[_0x444324(0x283)]=null,_0x444324(0x1f4)!==_0xee817f){this[_0x444324(0x216)]='table';try{_0x3a8739[_0x444324(0x215)]?.[_0x444324(0x224)]('ok-table')?.[_0x444324(0x2b3)]?.();}catch(_0x2f443c){}}},'_updateGeoIndexes'(){const _0x4d3376=_0x1740ed;this['geoIndexes']=this['possibleIndexes'][_0x4d3376(0x2d8)](_0x450184=>this[_0x4d3376(0x2a9)][_0x450184]?.[_0x4d3376(0x280)]),this[_0x4d3376(0x21c)][_0x4d3376(0x209)]&&!this[_0x4d3376(0x1f9)]&&(this[_0x4d3376(0x1f9)]=this[_0x4d3376(0x21c)][0x0]);},async 'loadGeoQuery'(){const _0x100854=_0x1740ed;if(!this[_0x100854(0x2c7)]||!this[_0x100854(0x1f9)])return;const _0x49f007=parseFloat(this[_0x100854(0x27e)]),_0x24aff2=parseFloat(this[_0x100854(0x204)]);if(isNaN(_0x49f007)||isNaN(_0x24aff2))return;const _0xa9520b=this[_0x100854(0x2e2)]?parseFloat(this[_0x100854(0x2e2)]):void 0x0;this[_0x100854(0x23d)][_0x100854(0x2aa)]=!0x0,this[_0x100854(0x1ea)]={};try{const _0x4d090c={...this[_0x100854(0x23d)][_0x100854(0x23d)]},_0x3c0b75={'lat':_0x49f007,'lon':_0x24aff2};_0xa9520b&&!isNaN(_0xa9520b)&&(_0x3c0b75[_0x100854(0x26d)]=_0xa9520b),_0x4d090c[this['geoField']]={'$near':_0x3c0b75};const _0x463968=await fetch(this[_0x100854(0x20c)]+_0x100854(0x205)+this[_0x100854(0x2c7)]+'/query',{'method':_0x100854(0x21d),'headers':{'Content-Type':_0x100854(0x1fb)},'body':JSON[_0x100854(0x276)]({'filter':_0x4d090c,'options':{'limit':this['query'][_0x100854(0x2c3)]}})});if(!_0x463968['ok'])throw new Error(_0x463968[_0x100854(0x2b8)]);const {data:_0x461021,meta:_0x42d0ab}=await _0x463968[_0x100854(0x1e2)]();let _0x74b716=_0x461021??[];this[_0x100854(0x2ed)]||(_0x74b716=_0x74b716['slice']()[_0x100854(0x241)]()),this[_0x100854(0x23d)]['items']=_0x74b716;const _0x45860a={};this['query'][_0x100854(0x1f8)]=_0x74b716[_0x100854(0x2d6)](_0x5bae39=>(x(_0x5bae39['value'],_0x5bae39['key']),null!=_0x5bae39['distance']&&(_0x45860a[_0x5bae39['key']]=_0x5bae39['distance']),_0x5bae39[_0x100854(0x2df)])),this[_0x100854(0x1ea)]=_0x45860a,this['query']['hasNext']=!0x1,this[_0x100854(0x23d)][_0x100854(0x1f2)]=!0x1,this[_0x100854(0x23d)]['_current']=null,this[_0x100854(0x23d)][_0x100854(0x1e9)]=[],this[_0x100854(0x23d)][_0x100854(0x1fd)]=_0x42d0ab?.[_0x100854(0x1fd)]??null,this[_0x100854(0x23d)]['total']=_0x74b716[_0x100854(0x209)];}catch(_0x325121){console[_0x100854(0x243)](_0x100854(0x213),_0x325121);}finally{this[_0x100854(0x23d)][_0x100854(0x2aa)]=!0x1;}},get 'selectedVectorEngineMeta'(){const _0x140cf5=_0x1740ed;return this[_0x140cf5(0x23d)][_0x140cf5(0x217)]?this[_0x140cf5(0x255)][_0x140cf5(0x28e)](_0x46b39f=>this['displayVectorName'](_0x46b39f[_0x140cf5(0x233)])===this[_0x140cf5(0x23d)][_0x140cf5(0x217)])??null:null;},'helpOpen':!0x1,get 'typeFields'(){const _0x56f577=_0x1740ed,_0x1976d5=(_0x3a8739['$ok'][_0x56f577(0x274)]['okdb'][_0x56f577(0x234)]||[])[_0x56f577(0x28e)](_0x2de484=>_0x2de484[_0x56f577(0x2c7)]===this[_0x56f577(0x2c7)]);return _0x1976d5?.[_0x56f577(0x21a)]||{};},get 'typeCount'(){const _0x161f57=_0x1740ed,_0x29ae9a=(_0x3a8739[_0x161f57(0x260)]['stores'][_0x161f57(0x254)][_0x161f57(0x234)]||[])['find'](_0x161027=>_0x161027['type']===this['type']);return _0x29ae9a?.[_0x161f57(0x2eb)]??'?';},get 'typeFieldEntries'(){const _0x364b0e=_0x1740ed;return Object[_0x364b0e(0x21f)](this['typeFields'])[_0x364b0e(0x2d6)](([_0x481cf8,_0x2209a2])=>({'name':_0x481cf8,'types':_0x2209a2}));},get 'indexEntries'(){const _0x4eb455=_0x1740ed;return this[_0x4eb455(0x237)][_0x4eb455(0x2d6)](_0x2ad164=>({'name':_0x2ad164,'fields':_0x2ad164[_0x4eb455(0x2d9)]('~'),'status':this[_0x4eb455(0x2a9)][_0x2ad164]?.[_0x4eb455(0x238)]||_0x4eb455(0x295),'isGeo':!!this[_0x4eb455(0x2a9)][_0x2ad164]?.[_0x4eb455(0x280)],'geoPrecision':this['indexStatuses'][_0x2ad164]?.['geoConfig']?.[_0x4eb455(0x1e0)]??null,'isUnique':!!this[_0x4eb455(0x2a9)][_0x2ad164]?.[_0x4eb455(0x296)],'createdBy':this['indexStatuses'][_0x2ad164]?.[_0x4eb455(0x289)]??null,'usedBy':this[_0x4eb455(0x2a9)][_0x2ad164]?.[_0x4eb455(0x24b)]??[]}));},get 'selectedIndexInfo'(){const _0x186a9c=_0x1740ed,_0x2141a3=this[_0x186a9c(0x23d)][_0x186a9c(0x278)];if(!_0x2141a3)return null;const _0x3beffe=this[_0x186a9c(0x2a9)][_0x2141a3];return{'fields':_0x2141a3[_0x186a9c(0x2d9)]('~'),'isGeo':!!_0x3beffe?.[_0x186a9c(0x280)],'geoPrecision':_0x3beffe?.[_0x186a9c(0x280)]?.[_0x186a9c(0x1e0)]??null,'isUnique':!!_0x3beffe?.['unique']};},get 'ftsEntries'(){const _0x59a7b0=_0x1740ed;return this[_0x59a7b0(0x286)][_0x59a7b0(0x2d6)](_0x2e3123=>({'name':_0x2e3123[_0x59a7b0(0x233)],'status':_0x2e3123[_0x59a7b0(0x238)]||'ready','fields':(_0x2e3123[_0x59a7b0(0x277)]&&_0x2e3123[_0x59a7b0(0x277)][_0x59a7b0(0x21a)]?_0x2e3123[_0x59a7b0(0x277)][_0x59a7b0(0x21a)]:[])[_0x59a7b0(0x235)](',\x20'),'sizeBytes':_0x2e3123[_0x59a7b0(0x23f)]??null}));},'fmtBytes'(_0x360a45){const _0x2abcd0=_0x1740ed;if(null==_0x360a45||0x0===_0x360a45)return'—';const _0x192978=['B','KB','MB','GB'];let _0x3074d7=_0x360a45,_0x195b5d=0x0;for(;_0x3074d7>=0x400&&_0x195b5d<_0x192978[_0x2abcd0(0x209)]-0x1;)_0x3074d7/=0x400,_0x195b5d++;return _0x3074d7[_0x2abcd0(0x2cd)](0x1)+'\u00a0'+_0x192978[_0x195b5d];},'ttlStats':null,'ttlStatsLoading':!0x1,'ttlSweepBusy':!0x1,'defaultTTL':null,'defaultTTLInput':'','defaultTTLPreset':'','defaultTTLBusy':!0x1,async 'loadTTLStats'(){const _0x194020=_0x1740ed;if(this['type']){this[_0x194020(0x1fe)]=!0x0;try{const _0x41d755=await fetch(this['envApiBase']+'/ttl/stats?type='+encodeURIComponent(this['type'])),_0x206b4a=await _0x41d755[_0x194020(0x1e2)]();this[_0x194020(0x27a)]=_0x206b4a['data']??_0x206b4a['result']??null;}catch{this[_0x194020(0x27a)]=null;}finally{this[_0x194020(0x1fe)]=!0x1;}}},async 'loadDefaultTTL'(){const _0x3979f9=_0x1740ed;if(this['type'])try{const _0x5b09f4=await fetch(this[_0x3979f9(0x20c)]+'/type/'+encodeURIComponent(this[_0x3979f9(0x2c7)])+_0x3979f9(0x22c)),_0x4f8ea3=await _0x5b09f4[_0x3979f9(0x1e2)](),_0x2e6b60=_0x4f8ea3[_0x3979f9(0x24f)]?.[_0x3979f9(0x29a)]??_0x4f8ea3[_0x3979f9(0x253)]?.['defaultTTL']??null;this[_0x3979f9(0x29a)]=_0x2e6b60,this['defaultTTLInput']=_0x2e6b60?String(_0x2e6b60):'',this[_0x3979f9(0x268)]=_0x2e6b60?String(_0x2e6b60):'';}catch{this[_0x3979f9(0x29a)]=null;}},async 'setDefaultTTLAction'(){const _0xa854c4=_0x1740ed,_0x131fdd=parseInt(this['defaultTTLInput']);if(_0x131fdd&&!(_0x131fdd<=0x0)){this[_0xa854c4(0x240)]=!0x0;try{const _0xa4c199=await fetch(this['envApiBase']+_0xa854c4(0x205)+encodeURIComponent(this[_0xa854c4(0x2c7)])+'/ttl/default',{'method':'PUT','headers':{'Content-Type':_0xa854c4(0x1fb)},'body':JSON[_0xa854c4(0x276)]({'ttl':_0x131fdd})});if(!_0xa4c199['ok']){const _0x571e4a=await _0xa4c199['json']()[_0xa854c4(0x2c0)](()=>({}));throw new Error(_0x571e4a?.[_0xa854c4(0x243)]?.['message']||_0xa4c199[_0xa854c4(0x2b8)]);}this['defaultTTL']=_0x131fdd,_0x3a8739[_0xa854c4(0x260)][_0xa854c4(0x2b6)]?.['toast']?.['info']?.(_0xa854c4(0x2e1)+this[_0xa854c4(0x2be)](_0x131fdd)+')');}catch(_0x2caf63){_0x3a8739['$ok']['shared']?.[_0xa854c4(0x212)]?.[_0xa854c4(0x243)]?.(_0x2caf63[_0xa854c4(0x23c)]||_0xa854c4(0x236));}finally{this['defaultTTLBusy']=!0x1;}}},async 'clearDefaultTTLAction'(){const _0x2723d9=_0x1740ed;this['defaultTTLBusy']=!0x0;try{const _0x1e69e0=await fetch(this[_0x2723d9(0x20c)]+_0x2723d9(0x205)+encodeURIComponent(this['type'])+_0x2723d9(0x22c),{'method':_0x2723d9(0x1ef)});if(!_0x1e69e0['ok'])throw new Error(_0x1e69e0['statusText']);this[_0x2723d9(0x29a)]=null,this[_0x2723d9(0x1e4)]='',this['defaultTTLPreset']='',_0x3a8739[_0x2723d9(0x260)][_0x2723d9(0x2b6)]?.[_0x2723d9(0x212)]?.['info']?.('Default\x20TTL\x20cleared');}catch(_0x4552d5){_0x3a8739[_0x2723d9(0x260)][_0x2723d9(0x2b6)]?.['toast']?.['error']?.(_0x4552d5[_0x2723d9(0x23c)]||'Failed\x20to\x20clear\x20default\x20TTL');}finally{this[_0x2723d9(0x240)]=!0x1;}},'onDefaultTTLPresetChange'(_0xca2287){const _0x59e805=_0x1740ed;this[_0x59e805(0x268)]=_0xca2287,_0xca2287&&(this[_0x59e805(0x1e4)]=_0xca2287);},async 'triggerSweep'(){const _0x1aebef=_0x1740ed;this[_0x1aebef(0x2c2)]=!0x0;try{const _0x418cdf=await fetch(this[_0x1aebef(0x20c)]+'/ttl/sweep',{'method':_0x1aebef(0x21d),'headers':{'Content-Type':_0x1aebef(0x1fb)},'body':JSON['stringify']({'batchSize':0x3e8})}),_0x3fb6a9=await _0x418cdf[_0x1aebef(0x1e2)](),_0x29fa25=_0x1aebef(0x1f0)+((_0x3fb6a9['data']??_0x3fb6a9[_0x1aebef(0x253)]??{})[_0x1aebef(0x261)]??0x0)+_0x1aebef(0x26a);_0x3a8739['$ok']['shared']?.['toast']?.[_0x1aebef(0x226)]?.(_0x29fa25),await this[_0x1aebef(0x231)](),await this[_0x1aebef(0x23d)][_0x1aebef(0x208)]();}catch(_0x1dacec){_0x3a8739[_0x1aebef(0x260)][_0x1aebef(0x2b6)]?.[_0x1aebef(0x212)]?.[_0x1aebef(0x243)]?.(_0x1dacec[_0x1aebef(0x23c)]||_0x1aebef(0x207));}finally{this[_0x1aebef(0x2c2)]=!0x1;}},'fmtDuration'(_0x202673){const _0x41b7e7=_0x1740ed;if(null==_0x202673)return'—';const _0xfad23c=Math['floor'](_0x202673/0x3e8);return _0xfad23c<0x3c?_0xfad23c+'s':_0xfad23c<0xe10?Math['floor'](_0xfad23c/0x3c)+'m\x20'+_0xfad23c%0x3c+'s':_0xfad23c<0x15180?Math[_0x41b7e7(0x1de)](_0xfad23c/0xe10)+'h\x20'+Math[_0x41b7e7(0x1de)](_0xfad23c%0xe10/0x3c)+'m':Math[_0x41b7e7(0x1de)](_0xfad23c/0x15180)+'d\x20'+Math[_0x41b7e7(0x1de)](_0xfad23c%0x15180/0xe10)+'h';},get 'vectorEntries'(){const _0x24d37a=_0x1740ed;return this[_0x24d37a(0x255)][_0x24d37a(0x2d6)](_0x1fec4f=>({'name':_0x1fec4f['name'],'displayName':this[_0x24d37a(0x2cb)](_0x1fec4f[_0x24d37a(0x233)]),'status':_0x1fec4f[_0x24d37a(0x2da)]?'running':_0x1fec4f['status']||_0x24d37a(0x26f),'running':_0x1fec4f[_0x24d37a(0x2da)],'pipeline':_0x1fec4f[_0x24d37a(0x211)]&&_0x1fec4f['meta'][_0x24d37a(0x2e4)]?_0x1fec4f[_0x24d37a(0x211)][_0x24d37a(0x2e4)]:null}));},get 'siftSchema'(){const _0x2f3a46=_0x1740ed;return _0x3cb5b7(this[_0x2f3a46(0x2a5)]);},async 'loadIndexes'(_0x185e5e=!0x1){const _0x56018a=_0x1740ed;if(this['type']&&(_0x185e5e||_0x524b05!==this[_0x56018a(0x2c7)]))try{const _0x3a51a6=await fetch(this[_0x56018a(0x20c)]+_0x56018a(0x205)+this['type']+_0x56018a(0x249)),_0x4b5681=await _0x3a51a6[_0x56018a(0x1e2)](),_0x1e9542=_0x4b5681[_0x56018a(0x24f)]??_0x4b5681[_0x56018a(0x253)]??{};this[_0x56018a(0x237)]=Object[_0x56018a(0x288)](_0x1e9542),this[_0x56018a(0x2a9)]=_0x1e9542,this[_0x56018a(0x29d)](),_0x524b05=this[_0x56018a(0x2c7)];}catch(_0x2c4c74){console[_0x56018a(0x243)]('Error\x20fetching\x20indexes',_0x2c4c74);}},async 'loadFtsIndexes'(_0x43af71=!0x1){const _0x5b9efc=_0x1740ed;if(this[_0x5b9efc(0x2c7)]&&(_0x43af71||_0x7a4726!==this[_0x5b9efc(0x2c7)]))try{const _0x57504b=await fetch(this[_0x5b9efc(0x20c)]+_0x5b9efc(0x205)+this['type']+'/fts'),{data:_0x320176}=await _0x57504b[_0x5b9efc(0x1e2)]();this[_0x5b9efc(0x286)]=_0x320176||[],_0x7a4726=this[_0x5b9efc(0x2c7)];}catch(_0xbfb2e6){console[_0x5b9efc(0x243)](_0x5b9efc(0x298),_0xbfb2e6);}},async 'loadVectorEngines'(_0x30127=!0x1){const _0x1fb9eb=_0x1740ed;if(this['type']&&(_0x30127||_0x51e175!==this[_0x1fb9eb(0x2c7)]))try{const _0xf9668a=_0x3a8739['$ok'][_0x1fb9eb(0x274)][_0x1fb9eb(0x254)][_0x1fb9eb(0x22e)]||'default',[_0x1e5de8,_0x5937f9]=await Promise[_0x1fb9eb(0x244)]([fetch(__ENV__[_0x1fb9eb(0x23e)]+'/env/'+encodeURIComponent(_0xf9668a)+_0x1fb9eb(0x2d0))[_0x1fb9eb(0x22a)](_0x1f497f=>_0x1f497f[_0x1fb9eb(0x1e2)]()),fetch(__ENV__[_0x1fb9eb(0x23e)]+_0x1fb9eb(0x1f7))[_0x1fb9eb(0x22a)](_0x1485bb=>_0x1485bb[_0x1fb9eb(0x1e2)]())]),_0x1f1586=_0x1fb9eb(0x247)===_0x1e5de8[_0x1fb9eb(0x238)]?_0x1e5de8[_0x1fb9eb(0x2df)]?.['result']??_0x1e5de8[_0x1fb9eb(0x2df)]?.['data']??[]:[],_0xae5951=[...'fulfilled'===_0x5937f9[_0x1fb9eb(0x238)]?_0x5937f9[_0x1fb9eb(0x2df)]?.[_0x1fb9eb(0x24f)]??[]:[],..._0x1f1586],_0x9de6eb={};for(const _0x5cab38 of _0xae5951)'indexer'===_0x5cab38[_0x1fb9eb(0x2c7)]&&_0x5cab38['config']&&(_0x9de6eb[_0x5cab38[_0x1fb9eb(0x233)]]={'source_type':_0x5cab38[_0x1fb9eb(0x277)][_0x1fb9eb(0x24a)],'source_env':_0x5cab38[_0x1fb9eb(0x277)][_0x1fb9eb(0x2ee)]??_0x1fb9eb(0x272)});this[_0x1fb9eb(0x255)]=_0xae5951[_0x1fb9eb(0x2d8)](_0x392715=>{const _0x27432a=_0x1fb9eb;if('vector-search'!==_0x392715[_0x27432a(0x2c7)])return!0x1;const _0x1109f9=_0x392715[_0x27432a(0x277)]?.[_0x27432a(0x24a)],_0x5c8a52=_0x392715[_0x27432a(0x277)]?.[_0x27432a(0x2ee)]??_0x27432a(0x272);if(_0x1109f9===this[_0x27432a(0x2c7)]&&_0x5c8a52===_0xf9668a)return!0x0;const _0x293bfd=_0x9de6eb[_0x392715['name']];return _0x293bfd?.[_0x27432a(0x24a)]===this['type']&&(_0x293bfd?.[_0x27432a(0x2ee)]??'default')===_0xf9668a;}),_0x51e175=this[_0x1fb9eb(0x2c7)];}catch(_0x7e06df){this[_0x1fb9eb(0x255)]=[];}},async 'loadTypeEnginesCount'(){const _0x44a393=_0x1740ed;if(this[_0x44a393(0x2c7)])try{const _0x49d229=_0x3a8739[_0x44a393(0x260)][_0x44a393(0x274)][_0x44a393(0x254)]['selectedEnv']||'default',_0x4de3c0=await fetch(__ENV__['API']+_0x44a393(0x2dd)+encodeURIComponent(_0x49d229)+_0x44a393(0x205)+encodeURIComponent(this[_0x44a393(0x2c7)])+_0x44a393(0x26c)),_0x28d7e9=await _0x4de3c0[_0x44a393(0x1e2)]()[_0x44a393(0x2c0)](()=>({})),_0x15a852=_0x4de3c0['ok']?_0x28d7e9?.[_0x44a393(0x24f)]??[]:[],_0x526e40=new Set();for(const _0xe77fe0 of _0x15a852['flatMap'](_0x4cf4a3=>_0x4cf4a3?.['engines']??[])){const _0xfa209a=_0xe77fe0?.[_0x44a393(0x28d)]??(_0xe77fe0?.['type']&&_0xe77fe0?.[_0x44a393(0x233)]?_0xe77fe0[_0x44a393(0x2c7)]+'@'+_0xe77fe0[_0x44a393(0x233)]:_0xe77fe0?.[_0x44a393(0x233)]??null);_0xfa209a&&_0x526e40[_0x44a393(0x228)](_0xfa209a);}this[_0x44a393(0x222)]=_0x526e40[_0x44a393(0x252)];}catch{this[_0x44a393(0x222)]=0x0;}else this[_0x44a393(0x222)]=0x0;},async 'recomputeFields'(){const _0x15b365=_0x1740ed;if(this[_0x15b365(0x2c7)])try{await fetch(this[_0x15b365(0x20c)]+_0x15b365(0x205)+this['type']+_0x15b365(0x201),{'method':_0x15b365(0x21d)}),await _0x3a8739[_0x15b365(0x260)][_0x15b365(0x274)][_0x15b365(0x254)]['reloadTypes'](),_0x3a8739[_0x15b365(0x260)][_0x15b365(0x2b6)]?.[_0x15b365(0x212)]?.['success']?.(_0x15b365(0x2e8));}catch(_0xe38718){console[_0x15b365(0x243)]('recomputeFields\x20error',_0xe38718),_0x3a8739[_0x15b365(0x260)][_0x15b365(0x2b6)]?.[_0x15b365(0x212)]?.[_0x15b365(0x243)]?.(_0x15b365(0x1e1));}},'indexStatusBadge'(_0x2350bb){const _0x4473f9=_0x1740ed,_0x1d9f66=this[_0x4473f9(0x2a9)]?.[_0x2350bb]?.[_0x4473f9(0x238)];return _0x1d9f66&&_0x4473f9(0x295)!==_0x1d9f66?_0x1d9f66:null;},'ftsStatusBadge'(_0x1ceffe){const _0x328be6=_0x1740ed,_0xa3a2b5=_0x1ceffe?.[_0x328be6(0x238)];return _0xa3a2b5&&_0x328be6(0x295)!==_0xa3a2b5?_0xa3a2b5:null;},'keyOf':_0x55be36=>_0x55be36?.[_0x1740ed(0x20e)]??_0x55be36?.[_0x1740ed(0x28d)]??null,get 'hasDirectValueRows'(){const _0x3fd2cc=_0x1740ed;return(this[_0x3fd2cc(0x23d)][_0x3fd2cc(0x282)]||[])['some'](_0x20510a=>!y(_0x20510a?.[_0x3fd2cc(0x2df)]));},get 'displayRows'(){const _0x93fa05=_0x1740ed;return this[_0x93fa05(0x271)]?this[_0x93fa05(0x23d)][_0x93fa05(0x282)]:this['query'][_0x93fa05(0x1f8)];},'rowValueOf':_0x33a391=>_0x33a391&&_0x1740ed(0x281)==typeof _0x33a391&&_0x1740ed(0x28d)in _0x33a391&&_0x1740ed(0x2df)in _0x33a391?_0x33a391['value']:_0x33a391,'directValueKindOf'(_0x5efaa9){const _0x3ea66a=_0x1740ed,_0x3822b7=this[_0x3ea66a(0x2a1)](_0x5efaa9);return null===_0x3822b7?_0x3ea66a(0x2a7):Array[_0x3ea66a(0x2db)](_0x3822b7)?_0x3ea66a(0x27f):y(_0x3822b7)?null:_0x3ea66a(0x2c4);},'inlineValueOf'(_0x507b4c){return m(this['rowValueOf'](_0x507b4c));},'prettyValueOf'(_0x145d66){return m(this['rowValueOf'](_0x145d66),0x2);},'scoreOf'(_0x55e542){const _0x5f08d5=_0x1740ed,_0x5771bd=this[_0x5f08d5(0x230)](_0x55e542);return _0x5771bd?this['query'][_0x5f08d5(0x220)]?.[_0x5771bd]?.[_0x5f08d5(0x2a0)]??null:null;},'matchOf'(_0x554f66){const _0x30507e=_0x1740ed,_0x3c0c1b=this[_0x30507e(0x230)](_0x554f66);if(!_0x3c0c1b)return null;const _0x5101b1=this[_0x30507e(0x23d)][_0x30507e(0x220)]?.[_0x3c0c1b];if(!_0x5101b1||null==_0x5101b1[_0x30507e(0x2a0)])return null;const _0x3e225d=_0x5101b1[_0x30507e(0x2c8)]??0x2*_0x5101b1[_0x30507e(0x2bd)];return _0x5101b1['score']+'/'+_0x3e225d;},'vectorScoreOf'(_0xd2ab4f){const _0x324197=_0x1740ed,_0x2bdc98=this[_0x324197(0x230)](_0xd2ab4f);if(!_0x2bdc98)return null;const _0x1300d0=this[_0x324197(0x23d)]['vectorScoreMap']?.[_0x2bdc98];return null==_0x1300d0?null:Math[_0x324197(0x266)](0x64*_0x1300d0)+'%';},'vectorChunkMetaOf'(_0x3a24f7){const _0x2ed277=_0x1740ed,_0x40c3ef=this['keyOf'](_0x3a24f7);return _0x40c3ef?this[_0x2ed277(0x23d)][_0x2ed277(0x2e6)]?.[_0x40c3ef]??null:null;},'distanceOf'(_0x54d9e7){const _0x37e9a0=_0x1740ed,_0x3a57f3=this[_0x37e9a0(0x230)](_0x54d9e7);if(!_0x3a57f3)return null;const _0x20c22e=this[_0x37e9a0(0x1ea)]?.[_0x3a57f3];return null==_0x20c22e?null:_0x20c22e<0x3e8?Math[_0x37e9a0(0x266)](_0x20c22e)+'\x20m':(_0x20c22e/0x3e8)['toFixed'](0x1)+_0x37e9a0(0x299);},'displayVectorName'(_0x2b9941){const _0x4f2905=_0x1740ed,_0x4bd70d=(_0x3a8739['$ok'][_0x4f2905(0x274)][_0x4f2905(0x254)][_0x4f2905(0x22e)]||_0x4f2905(0x272))+':';return _0x2b9941['startsWith'](_0x4bd70d)?_0x2b9941['slice'](_0x4bd70d[_0x4f2905(0x209)]):_0x2b9941;},'selectVectorEngine'(_0x3be5eb,_0x5a5be5){const _0x2715d3=_0x1740ed;if('__create_pipeline__'===_0x3be5eb)return _0x5a5be5&&(_0x5a5be5[_0x2715d3(0x24c)][_0x2715d3(0x2df)]=this[_0x2715d3(0x23d)][_0x2715d3(0x217)]||''),void this[_0x2715d3(0x2d5)]();this[_0x2715d3(0x23d)]['selectedVectorEngine']=_0x3be5eb||null,this['query']['selectedVectorEngine']&&(this[_0x2715d3(0x23d)]['selectedIndex']=null,this[_0x2715d3(0x23d)]['selectedFtsIndex']=null,this[_0x2715d3(0x23d)]['selectedPrefix']=void 0x0,this[_0x2715d3(0x23d)]['selectedIndexStart']=void 0x0,this[_0x2715d3(0x23d)][_0x2715d3(0x275)]=void 0x0);},'openCreatePipelineModal'(){const _0x1f3756=_0x1740ed;this[_0x1f3756(0x2af)]();},'createMenuOpen':!0x1,'onRowChanged'(_0x5f2323){const _0x3bde83=_0x1740ed,_0x340fd7=_0x5f2323?.[_0x3bde83(0x2ea)]??null,_0x1e2e55=_0x340fd7?.['key']??null;if(null!=_0x1e2e55){const _0x43e074=this[_0x3bde83(0x23d)][_0x3bde83(0x282)][_0x3bde83(0x21b)](_0x4111f7=>_0x4111f7?.['key']===_0x1e2e55);if(_0x43e074>=0x0){const _0x5d7dc=_0x340fd7?.['value'];x(_0x5d7dc,_0x1e2e55),this[_0x3bde83(0x23d)][_0x3bde83(0x282)]['splice'](_0x43e074,0x1,{...this['query'][_0x3bde83(0x282)][_0x43e074],'value':_0x5d7dc}),_0x43e074<this[_0x3bde83(0x23d)]['values'][_0x3bde83(0x209)]&&this['query'][_0x3bde83(0x1f8)]['splice'](_0x43e074,0x1,_0x5d7dc);}}_0x3a8739[_0x3bde83(0x260)][_0x3bde83(0x2b6)][_0x3bde83(0x212)]['info'](_0x3bde83(0x20a)),this['loadViolations']();},'onRemoveRow'(_0x19b96b){const _0x22c62e=_0x1740ed,_0x528089=this[_0x22c62e(0x23d)]['items']['findIndex'](_0x422cb3=>_0x422cb3?.[_0x22c62e(0x28d)]===_0x19b96b);_0x528089>=0x0&&(this[_0x22c62e(0x23d)]['values'][_0x22c62e(0x2a2)](_0x528089,0x1),this[_0x22c62e(0x23d)][_0x22c62e(0x282)][_0x22c62e(0x2a2)](_0x528089,0x1));},async 'openAddModal'(){const _0x4999dc=_0x1740ed;await _0x3a8739[_0x4999dc(0x260)][_0x4999dc(0x2b6)][_0x4999dc(0x2e9)][_0x4999dc(0x267)]({'owner':_0x3a8739,'title':_0x4999dc(0x25b),'content':_0x4999dc(0x273),'context':_0x39cb28=>({'modal':_0x39cb28,'type':this['type'],'onDone':async({key:_0x12415a,value:_0x210a9d})=>{const _0x455f26=_0x4999dc;x(_0x210a9d,_0x12415a),this[_0x455f26(0x23d)][_0x455f26(0x1f8)][_0x455f26(0x25a)](_0x210a9d),this[_0x455f26(0x23d)][_0x455f26(0x282)]['unshift']({'key':_0x12415a,'value':_0x210a9d});}})});},async 'openCreateIndex'(){const _0x34bf74=_0x1740ed;let _0x12bd56={},_0x230158=[];try{const _0x193426=await fetch(this[_0x34bf74(0x20c)]+_0x34bf74(0x205)+this[_0x34bf74(0x2c7)]+_0x34bf74(0x28c)),_0x345dbd=await _0x193426[_0x34bf74(0x1e2)]();_0x12bd56=(_0x345dbd['data']??_0x345dbd[_0x34bf74(0x253)])?.[_0x34bf74(0x256)]??{},_0x230158=Object[_0x34bf74(0x288)](_0x12bd56)['filter'](_0x18c227=>_0x12bd56[_0x18c227]['includes'](_0x34bf74(0x1f4)));}catch{const _0x2f63bf=(_0x3a8739[_0x34bf74(0x260)][_0x34bf74(0x274)][_0x34bf74(0x254)][_0x34bf74(0x234)]||[])[_0x34bf74(0x28e)](_0x42a7b0=>_0x42a7b0[_0x34bf74(0x2c7)]===this[_0x34bf74(0x2c7)]);for(const _0x21d567 of Object[_0x34bf74(0x288)](_0x2f63bf?.['fields']||{}))_0x12bd56[_0x21d567]=_0x2f63bf['fields'][_0x21d567];}await _0x3a8739[_0x34bf74(0x260)]['shared'][_0x34bf74(0x2e9)][_0x34bf74(0x267)]({'owner':_0x3a8739,'title':_0x34bf74(0x2ae),'content':_0x34bf74(0x1eb),'context':_0x2e5e30=>({'modal':_0x2e5e30,'type':this[_0x34bf74(0x2c7)],'deepPaths':_0x12bd56,'geoFields':_0x230158,'onDone':async()=>{await this['loadIndexes'](!0x0);}})});},async 'dropType'(){const _0x68abf8=_0x1740ed;if(this[_0x68abf8(0x2c7)]&&await _0x3a8739[_0x68abf8(0x260)][_0x68abf8(0x2b6)][_0x68abf8(0x2e9)]['confirm'](_0x68abf8(0x2b4)+this[_0x68abf8(0x2c7)]+_0x68abf8(0x202)))try{await fetch(this[_0x68abf8(0x20c)]+_0x68abf8(0x205)+this[_0x68abf8(0x2c7)],{'method':'DELETE'}),await _0x3a8739[_0x68abf8(0x260)][_0x68abf8(0x274)][_0x68abf8(0x254)]['reloadTypes'](),_0x3a8739[_0x68abf8(0x215)][_0x68abf8(0x259)](new CustomEvent(_0x68abf8(0x29c),{'detail':this[_0x68abf8(0x2c7)]}));}catch(_0x3c17ac){console[_0x68abf8(0x243)](_0x68abf8(0x270),_0x3c17ac);}},async 'removeIndex'(_0x832ee1){const _0x576712=_0x1740ed,_0x896400=_0x832ee1||this[_0x576712(0x23d)][_0x576712(0x278)];if(_0x896400&&await _0x3a8739['$ok']['shared'][_0x576712(0x2e9)][_0x576712(0x203)](_0x576712(0x293)+_0x896400+'\x22?')){try{const _0x277c27=await fetch(this[_0x576712(0x20c)]+_0x576712(0x205)+this[_0x576712(0x2c7)]+'/index/'+_0x896400,{'method':_0x576712(0x1ef)});if(!_0x277c27['ok']){const _0x399c87=await _0x277c27[_0x576712(0x1e2)]()[_0x576712(0x2c0)](()=>({})),_0x511591=_0x399c87?.[_0x576712(0x243)]?.[_0x576712(0x2d3)];if(_0x576712(0x2c9)===_0x511591){const _0x16c86f=(_0x399c87?.['error']?.[_0x576712(0x2ec)]?.[_0x576712(0x24b)]??[])[_0x576712(0x2d6)](_0x522c95=>_0x522c95[_0x576712(0x245)]+':'+_0x522c95['name'])[_0x576712(0x235)](',\x20');return void _0x3a8739[_0x576712(0x260)][_0x576712(0x2b6)]?.[_0x576712(0x212)]?.[_0x576712(0x243)]?.(_0x576712(0x248)+(_0x16c86f||_0x576712(0x279)));}throw new Error(_0x399c87?.[_0x576712(0x243)]?.[_0x576712(0x23c)]??_0x576712(0x2ba));}}catch(_0x2820c0){return console['error']('Remove\x20index\x20error',_0x2820c0),void _0x3a8739[_0x576712(0x260)][_0x576712(0x2b6)]?.[_0x576712(0x212)]?.['error']?.(_0x2820c0['message']);}this['query'][_0x576712(0x278)]===_0x896400&&(this[_0x576712(0x23d)][_0x576712(0x278)]=null),this[_0x576712(0x23d)][_0x576712(0x2c5)](),await this[_0x576712(0x2bb)](!0x0),await this[_0x576712(0x23d)][_0x576712(0x208)]();}},'selectIndex'(_0x728812){const _0x589f4e=_0x1740ed;if(_0x589f4e(0x1f6)===_0x728812)return this['query']['selectedIndex']=null,void this[_0x589f4e(0x2a4)]();_0x589f4e(0x2bf)!==_0x728812?(this['query']['selectedIndex']=_0x728812||null,this[_0x589f4e(0x23d)]['selectedIndex']&&(this['query'][_0x589f4e(0x1e8)]=null),this[_0x589f4e(0x23d)]['selectedIndex']||(this[_0x589f4e(0x23d)][_0x589f4e(0x23a)]=void 0x0,this[_0x589f4e(0x23d)][_0x589f4e(0x20d)]=void 0x0,this[_0x589f4e(0x23d)][_0x589f4e(0x275)]=void 0x0)):this[_0x589f4e(0x225)]();},'selectFtsIndex'(_0x5c2693,_0x3d4e17){const _0x200f23=_0x1740ed;if(_0x200f23(0x2ce)===_0x5c2693)return _0x3d4e17&&(_0x3d4e17[_0x200f23(0x24c)][_0x200f23(0x2df)]=this[_0x200f23(0x23d)][_0x200f23(0x1e8)]||''),void this[_0x200f23(0x227)]();_0x200f23(0x291)!==_0x5c2693?(this[_0x200f23(0x23d)][_0x200f23(0x1e8)]=_0x5c2693||null,this[_0x200f23(0x23d)][_0x200f23(0x1e8)]&&(this['query']['selectedIndex']=null,this[_0x200f23(0x23d)]['selectedPrefix']=void 0x0,this[_0x200f23(0x23d)]['selectedIndexStart']=void 0x0,this[_0x200f23(0x23d)][_0x200f23(0x275)]=void 0x0)):this[_0x200f23(0x2f3)]();},async 'openCreateFtsModal'(){const _0x2cbe18=_0x1740ed;let _0x1b5c82={};try{const _0x37394f=await fetch(this[_0x2cbe18(0x20c)]+_0x2cbe18(0x205)+this['type']+_0x2cbe18(0x28c)),_0x5ca52b=await _0x37394f[_0x2cbe18(0x1e2)]();_0x1b5c82=(_0x5ca52b['data']??_0x5ca52b['result'])?.[_0x2cbe18(0x256)]??{};}catch{const _0x3e7a2d=(_0x3a8739[_0x2cbe18(0x260)][_0x2cbe18(0x274)][_0x2cbe18(0x254)][_0x2cbe18(0x234)]||[])[_0x2cbe18(0x28e)](_0x3621a1=>_0x3621a1['type']===this[_0x2cbe18(0x2c7)]);for(const _0x4fafc5 of Object[_0x2cbe18(0x288)](_0x3e7a2d?.['fields']||{}))_0x1b5c82[_0x4fafc5]=_0x3e7a2d[_0x2cbe18(0x21a)][_0x4fafc5];}await _0x3a8739[_0x2cbe18(0x260)][_0x2cbe18(0x2b6)][_0x2cbe18(0x2e9)][_0x2cbe18(0x267)]({'owner':_0x3a8739,'title':_0x2cbe18(0x20b),'content':'<create-fts-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:api-base=\x22apiBase\x22\x20:deep-paths=\x22deepPaths\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x4f1ada=>({'modal':_0x4f1ada,'type':this[_0x2cbe18(0x2c7)],'apiBase':this[_0x2cbe18(0x20c)],'deepPaths':_0x1b5c82,'onDone':async()=>{const _0x2333bc=_0x2cbe18;await this[_0x2333bc(0x22b)](!0x0);}})});},async 'dropFtsIndex'(_0xccb160){const _0x5c645b=_0x1740ed,_0x16f387=_0xccb160||this[_0x5c645b(0x23d)][_0x5c645b(0x1e8)];if(_0x16f387&&await _0x3a8739[_0x5c645b(0x260)][_0x5c645b(0x2b6)][_0x5c645b(0x2e9)]['confirm'](_0x5c645b(0x26b)+_0x16f387+_0x5c645b(0x202))){try{await fetch(this['envApiBase']+_0x5c645b(0x205)+this[_0x5c645b(0x2c7)]+_0x5c645b(0x23b)+encodeURIComponent(_0x16f387),{'method':_0x5c645b(0x1ef)});}catch(_0x561a17){return console[_0x5c645b(0x243)](_0x5c645b(0x2f2),_0x561a17),void _0x3a8739[_0x5c645b(0x260)]['shared']?.[_0x5c645b(0x212)]?.[_0x5c645b(0x243)]?.('Drop\x20FTS\x20failed');}this[_0x5c645b(0x23d)][_0x5c645b(0x1e8)]===_0x16f387&&(this[_0x5c645b(0x23d)][_0x5c645b(0x1e8)]=null),await this[_0x5c645b(0x22b)](!0x0),await this[_0x5c645b(0x23d)][_0x5c645b(0x208)]();}},async 'rebuildIndex'(_0x23c8c1){const _0x18debc=_0x1740ed;if(_0x23c8c1&&await _0x3a8739[_0x18debc(0x260)]['shared'][_0x18debc(0x2e9)]['confirm'](_0x18debc(0x1fc)+_0x23c8c1+'\x22?\x20This\x20will\x20re-scan\x20all\x20records.'))try{await fetch(this[_0x18debc(0x20c)]+'/type/'+this[_0x18debc(0x2c7)]+_0x18debc(0x1df)+encodeURIComponent(_0x23c8c1)+_0x18debc(0x1e3),{'method':_0x18debc(0x21d)}),_0x3a8739[_0x18debc(0x260)][_0x18debc(0x2b6)]?.[_0x18debc(0x212)]?.['info']?.('Rebuilding\x20index\x20\x22'+_0x23c8c1+'\x22…'),await this['loadIndexes'](!0x0);}catch(_0x2ad71d){console[_0x18debc(0x243)](_0x18debc(0x294),_0x2ad71d),_0x3a8739['$ok'][_0x18debc(0x2b6)]?.[_0x18debc(0x212)]?.[_0x18debc(0x243)]?.(_0x18debc(0x2b0));}},async 'rebuildFts'(_0x29c03a){const _0x3bff65=_0x1740ed,_0x191d71=_0x29c03a||this['query'][_0x3bff65(0x1e8)];if(_0x191d71&&await _0x3a8739[_0x3bff65(0x260)][_0x3bff65(0x2b6)][_0x3bff65(0x2e9)]['confirm']('Rebuild\x20FTS\x20index\x20\x22'+_0x191d71+'\x22?\x20This\x20will\x20re-index\x20all\x20records.'))try{await fetch(this[_0x3bff65(0x20c)]+_0x3bff65(0x205)+this[_0x3bff65(0x2c7)]+_0x3bff65(0x23b)+encodeURIComponent(_0x191d71)+_0x3bff65(0x1e3),{'method':_0x3bff65(0x21d)}),_0x3a8739['$ok'][_0x3bff65(0x2b6)]?.[_0x3bff65(0x212)]?.[_0x3bff65(0x226)]?.(_0x3bff65(0x28a)+_0x191d71+'\x22…'),await this['loadFtsIndexes'](!0x0);}catch(_0xfd7782){console[_0x3bff65(0x243)](_0x3bff65(0x2de),_0xfd7782),_0x3a8739['$ok'][_0x3bff65(0x2b6)]?.[_0x3bff65(0x212)]?.[_0x3bff65(0x243)]?.(_0x3bff65(0x2b0));}},'onGeoTableSelect'(_0x3bd1b7){const _0x30ea0b=_0x1740ed;if('geo'!==this[_0x30ea0b(0x2ad)])return;this[_0x30ea0b(0x292)]=_0x30ea0b(0x2b9);const _0xd98cd8=_0x3bd1b7[_0x30ea0b(0x2ea)]?.[_0x30ea0b(0x2e3)];this['geoHighlightedKey']=_0x30ea0b(0x262)===_0xd98cd8?null:_0x3bd1b7[_0x30ea0b(0x2ea)]?.['row']?.[_0x30ea0b(0x20e)]??null;},'onGeoMapSelect'(_0x87e470){const _0x3d7442=_0x1740ed,_0x49b5e2=_0x87e470[_0x3d7442(0x2ea)]?.[_0x3d7442(0x28d)]??null;this[_0x3d7442(0x292)]=_0x3d7442(0x2d6),this[_0x3d7442(0x283)]=this[_0x3d7442(0x283)]===_0x49b5e2?null:_0x49b5e2;}};},'_unsubs':[],async 'init'(_0x372076){const _0x1933f9=_0x28b9;if(_0x372076[_0x1933f9(0x2cf)](()=>this[_0x1933f9(0x2c7)],async()=>{const _0x2d60c2=_0x1933f9;this['query']['type']=this['type'],this[_0x2d60c2(0x23d)][_0x2d60c2(0x1e8)]=null,this[_0x2d60c2(0x23d)]['selectedVectorEngine']=null,this[_0x2d60c2(0x2ad)]='scan',this[_0x2d60c2(0x23d)][_0x2d60c2(0x2c5)](),await this['loadIndexes'](!0x0),await this['loadFtsIndexes'](!0x0),await this['loadVectorEngines'](!0x0),await this[_0x2d60c2(0x2a3)](),await this[_0x2d60c2(0x1f1)](),await this[_0x2d60c2(0x23d)][_0x2d60c2(0x208)]();}),_0x372076[_0x1933f9(0x2cf)](()=>[this['query'][_0x1933f9(0x23d)],this[_0x1933f9(0x23d)][_0x1933f9(0x278)],this['query'][_0x1933f9(0x20d)],this[_0x1933f9(0x23d)][_0x1933f9(0x275)],this['query'][_0x1933f9(0x22f)],this[_0x1933f9(0x23d)][_0x1933f9(0x22d)],this[_0x1933f9(0x23d)]['selectedPrefix'],this[_0x1933f9(0x23d)][_0x1933f9(0x1e8)],this[_0x1933f9(0x23d)][_0x1933f9(0x2d7)],this[_0x1933f9(0x23d)][_0x1933f9(0x1e6)],this[_0x1933f9(0x23d)][_0x1933f9(0x284)],this['query'][_0x1933f9(0x217)],this[_0x1933f9(0x23d)][_0x1933f9(0x29f)],this[_0x1933f9(0x23d)][_0x1933f9(0x2ab)]],async()=>{const _0x27767c=_0x1933f9;this[_0x27767c(0x2c7)]&&(this[_0x27767c(0x23d)][_0x27767c(0x2c5)](),await this['query']['load']());}),_0x372076[_0x1933f9(0x2cf)](()=>[this[_0x1933f9(0x2ad)],this[_0x1933f9(0x1f9)],this[_0x1933f9(0x27e)],this[_0x1933f9(0x204)],this[_0x1933f9(0x2e2)],this['geoSortAsc'],this['query'][_0x1933f9(0x23d)]],async()=>{const _0x5194be=_0x1933f9;'geo'===this['searchMode']&&this[_0x5194be(0x2c7)]&&this['geoField']&&this[_0x5194be(0x27e)]&&this[_0x5194be(0x204)]&&await this['loadGeoQuery']();}),this[_0x1933f9(0x2c7)]){const _0x5baca9=new Set([_0x1933f9(0x24f),_0x1933f9(0x2ef),'manage','schema',_0x1933f9(0x1e5),_0x1933f9(0x27b)]),_0x57adcd=_0x372076[_0x1933f9(0x20f)][_0x1933f9(0x258)]?.[_0x1933f9(0x24e)]?.[_0x1933f9(0x1f3)];_0x57adcd&&_0x5baca9[_0x1933f9(0x239)](_0x57adcd)&&(this[_0x1933f9(0x1f3)]=_0x1933f9(0x1e5)===_0x57adcd?_0x1933f9(0x27b):_0x57adcd),await Promise[_0x1933f9(0x223)]([this['loadIndexes'](),this[_0x1933f9(0x22b)](),this['loadVectorEngines'](),this[_0x1933f9(0x2a3)](),this[_0x1933f9(0x1f1)](),this['loadTTLStats'](),this[_0x1933f9(0x2dc)](),this[_0x1933f9(0x23d)][_0x1933f9(0x208)]()]);}this[_0x1933f9(0x246)]=[_0x4dfb76['on'](_0x1933f9(0x2d2),()=>{const _0x338345=_0x1933f9;this['loadIndexes'](!0x0),this[_0x338345(0x22b)](!0x0);}),_0x4dfb76['on'](_0x1933f9(0x221),_0x3e5218=>{const _0x36cf86=_0x1933f9;this[_0x36cf86(0x2bb)](!0x0),this['loadFtsIndexes'](!0x0);const _0xde94f9=_0x3e5218?.[_0x36cf86(0x2c7)];if(!_0xde94f9||_0xde94f9===this[_0x36cf86(0x2c7)]){const _0x5670ee=_0x3e5218?.[_0x36cf86(0x2b5)],_0x26488a=Array[_0x36cf86(0x2db)](_0x5670ee)&&'fts'===_0x5670ee[0x0],_0x557525=_0x26488a?_0x5670ee[0x1]:_0x36cf86(0x265)==typeof _0x5670ee?_0x5670ee:'',_0x1e1289=_0x26488a?_0x36cf86(0x25f)+_0x557525:_0x557525?_0x36cf86(0x200)+_0x557525:_0x36cf86(0x285);_0x372076[_0x36cf86(0x260)][_0x36cf86(0x2b6)]?.[_0x36cf86(0x212)]?.['success']?.(_0x1e1289);}}),_0x4dfb76['on'](_0x1933f9(0x2e7),()=>this['loadIndexes'](!0x0)),_0x4dfb76['on']('index:drop',()=>this[_0x1933f9(0x2bb)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x2cc),()=>this[_0x1933f9(0x22b)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x2b2),()=>this[_0x1933f9(0x22b)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x242),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x264),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on']('engine:error',()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x1e7),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x2e5),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on']('engine:started',()=>this[_0x1933f9(0x2a3)]()),_0x4dfb76['on'](_0x1933f9(0x264),()=>this['loadTypeEnginesCount']()),_0x4dfb76['on'](_0x1933f9(0x263),()=>this[_0x1933f9(0x2a3)]()),_0x4dfb76['on'](_0x1933f9(0x1e7),()=>this[_0x1933f9(0x2a3)]()),_0x4dfb76['on'](_0x1933f9(0x2e5),()=>this['loadTypeEnginesCount']()),_0x4dfb76['on'](_0x1933f9(0x287),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on']('embeddings:pipeline:ready',()=>this[_0x1933f9(0x2a3)]())];const _0x2d6ca0=new Set([_0x1933f9(0x24f),_0x1933f9(0x2ef),_0x1933f9(0x2d4),'schema',_0x1933f9(0x1e5),_0x1933f9(0x27b)]);_0x372076[_0x1933f9(0x2cf)](()=>_0x372076[_0x1933f9(0x20f)]['$router']?.[_0x1933f9(0x1f5)]?.[_0x1933f9(0x1f3)],()=>{const _0x3f5849=_0x1933f9,_0x41b910=_0x372076[_0x3f5849(0x20f)]['$router']?.[_0x3f5849(0x1f5)]?.[_0x3f5849(0x1f3)];if(!_0x41b910)return;const _0x352ee1=_0x2d6ca0[_0x3f5849(0x239)](_0x41b910)?_0x3f5849(0x1e5)===_0x41b910?'engines':_0x41b910:'data';this['tab']!==_0x352ee1&&(this[_0x3f5849(0x1f3)]=_0x352ee1);}),_0x372076[_0x1933f9(0x2cf)](()=>this[_0x1933f9(0x283)],_0x45cf43=>{const _0x16af7d=_0x1933f9,_0x2f8e67=this[_0x16af7d(0x292)];if(this[_0x16af7d(0x292)]=null,'geo'!==this[_0x16af7d(0x2ad)])return;if(_0x16af7d(0x2b9)===_0x2f8e67)return;const _0x4af53f=_0x372076[_0x16af7d(0x215)]?.[_0x16af7d(0x224)](_0x16af7d(0x269));if(!_0x4af53f)return;if(!_0x45cf43)return _0x4af53f[_0x16af7d(0x2b3)]?.(),void _0x4af53f[_0x16af7d(0x1ff)]?.();const _0xad4296=this[_0x16af7d(0x28b)]?.[_0x16af7d(0x28e)](_0x2813e8=>this['keyOf'](_0x2813e8)===_0x45cf43);_0xad4296?(_0x4af53f[_0x16af7d(0x2b7)]?.(_0xad4296),_0x4af53f['clearExpanded']?.(),_0x4af53f[_0x16af7d(0x24d)]?.(_0xad4296)):(_0x4af53f[_0x16af7d(0x2b3)]?.(),_0x4af53f[_0x16af7d(0x1ff)]?.());});},'unmount'(){const _0x158cac=_0x28b9;for(const _0x548660 of this['_unsubs'])_0x548660();this[_0x158cac(0x246)]=[];},'template':_0x213c47(0x232),'style':_0x213c47(0x219)};
|