@camstack/addon-admin-ui 1.2.340 → 1.2.341
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/dist/assets/{AddonCollectionPage-OzCDkyMU.js → AddonCollectionPage-OFxQqAoW.js} +1 -1
- package/dist/assets/{Addons-C6XFi5pW.js → Addons-CGWlUYfe.js} +1 -1
- package/dist/assets/{AdminTabs-Ch-CMNb7.js → AdminTabs-DLnTp3g1.js} +1 -1
- package/dist/assets/{AiProfiles-zINN3DWe.js → AiProfiles-CGMdRCP9.js} +1 -1
- package/dist/assets/{BrokerForm-BU9fVoGh.js → BrokerForm-Cz7wX12D.js} +1 -1
- package/dist/assets/{Build-CdcBfvrZ.js → Build-Di3zrxOa.js} +1 -1
- package/dist/assets/{Calendars-i9Jpx69E.js → Calendars-z2ErDSiX.js} +1 -1
- package/dist/assets/{Capabilities-NMkE2u1W.js → Capabilities-S89Qhb3x.js} +1 -1
- package/dist/assets/{Cluster-C_rvAKwE.js → Cluster-Dgxyi1L-.js} +1 -1
- package/dist/assets/{CompositionEditor-DoeUsnlY.js → CompositionEditor-C1QWYqEr.js} +1 -1
- package/dist/assets/{CompositionEditorPage-gA_K4Md7.js → CompositionEditorPage-BVFAgSZs.js} +1 -1
- package/dist/assets/{Data-Bp1E6Ebx.js → Data-DoMUkr5U.js} +1 -1
- package/dist/assets/{DetectionIntelligence-NotL2ICP.js → DetectionIntelligence-CaFNOOBq.js} +1 -1
- package/dist/assets/{DeviceDetail-BuRLDLQo.js → DeviceDetail-DsjaKMqr.js} +1 -1
- package/dist/assets/{DeviceDoActionFields-CvCAdVMh.js → DeviceDoActionFields-CsOyPI8C.js} +1 -1
- package/dist/assets/{Devices-DPBCVqGZ.js → Devices-DyT7xApI.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-OpO8LaDo.js → EmbedPlayerPage-BwaJjheh.js} +1 -1
- package/dist/assets/{Events-DyPWp6_e.js → Events-DJ9VXfgT.js} +1 -1
- package/dist/assets/{Identity-Br1KdOR0.js → Identity-DMA2mONj.js} +1 -1
- package/dist/assets/{IntegrationDetail-BmEtRPyU.js → IntegrationDetail-Bbq5Et1Y.js} +1 -1
- package/dist/assets/{Integrations-vTbKXz8I.js → Integrations-CEvnTQ3v.js} +1 -1
- package/dist/assets/{Integrations-CN-rpCeJ.js → Integrations-cf0EhRIL.js} +1 -1
- package/dist/assets/{Locations-CKZPfhYl.js → Locations-XqJRZ8tM.js} +1 -1
- package/dist/assets/{Logs-NVSsHqFU.js → Logs-CIipk6by.js} +1 -1
- package/dist/assets/{MotionZonesSettings-BJyUvvfi.js → MotionZonesSettings-PK_RhzUS.js} +1 -1
- package/dist/assets/{MyAccess-GD_6KNr1.js → MyAccess-d2xk75ip.js} +1 -1
- package/dist/assets/{Network-QoN3n6Zz.js → Network-YxjkhS1P.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-CfS4fDa-.js → NodeAddonsSettingsPanel-MWSzdM7B.js} +1 -1
- package/dist/assets/{NodeInferenceDevices-BRXydFFv.js → NodeInferenceDevices-CJXFbwRn.js} +1 -1
- package/dist/assets/{Notifications-a2lNk25U.js → Notifications-MLHKasF-.js} +1 -1
- package/dist/assets/{Pipeline-COkO3cAW.js → Pipeline-Q4TgkeOw.js} +1 -1
- package/dist/assets/{Plates-CeTqaMVp.js → Plates-CegVEk2k.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings-D4b3HD4o.js → PrivacyMaskSettings-BnjtiPUD.js} +1 -1
- package/dist/assets/{Recordings-D6YCerVl.js → Recordings-BTderpPx.js} +1 -1
- package/dist/assets/{ScanNetworkModal-ChaGY9YG.js → ScanNetworkModal-DNLL_t7z.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-DZwqXZGk.js → SceneMonitorEditor-C35-Indg.js} +1 -1
- package/dist/assets/{Scenes-DdR-TORM.js → Scenes-ByOb7T0x.js} +1 -1
- package/dist/assets/{Settings-D2hd95ZH.js → Settings-B4Qb2DUw.js} +1 -1
- package/dist/assets/{Showroom-C2Dl5UJv.js → Showroom-DTxtdOJp.js} +1 -1
- package/dist/assets/{StorageLocationsPanel-Lf7Cc5Di.js → StorageLocationsPanel-CSWtebRR.js} +1 -1
- package/dist/assets/{Terminal-0zpwyKw1.js → Terminal-BkIgZzNv.js} +1 -1
- package/dist/assets/{Viewer-DzBafew5.js → Viewer-CfhCZXMA.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-Da61ppfF.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-z770ywnV.js} +1 -1
- package/dist/assets/{archive-B4Kq40PR.js → archive-Cr-BIlNA.js} +1 -1
- package/dist/assets/{authed-media--rdXjodO.js → authed-media-CeLnj8Ys.js} +1 -1
- package/dist/assets/{boxes-DNZ46q91.js → boxes-C54oMdA_.js} +1 -1
- package/dist/assets/circle-slash-iHyT1430.js +1 -0
- package/dist/assets/{client-DOoKqepC.js → client-USvucJT_.js} +1 -1
- package/dist/assets/{debounced-invalidate-CV4IPm22.js → debounced-invalidate-C3E-ZxqU.js} +1 -1
- package/dist/assets/{device-integration-icon-VckVIRV1.js → device-integration-icon-Bo1DZXF5.js} +1 -1
- package/dist/assets/device-picker-model-Do5zHkB-.js +1 -0
- package/dist/assets/{dist-BMRg-Acy.js → dist-DAPUZI5S.js} +1 -1
- package/dist/assets/{dist-CX4ZW5Nk.js → dist-cztQPA_y.js} +1 -1
- package/dist/assets/{face-bbox-CRAUHidx.js → face-bbox-BIRbV0KX.js} +1 -1
- package/dist/assets/{hard-drive-download-vjPcYNvQ.js → hard-drive-download-C-k_wqAM.js} +1 -1
- package/dist/assets/{hostInit--Ger2EtU.js → hostInit-DE3Z7XT5.js} +1 -1
- package/dist/assets/{index-ClfLCUUn.js → index-Bi_XNWNi.js} +3 -3
- package/dist/assets/{layers-mgcgefqn.js → layers-CW939zq1.js} +1 -1
- package/dist/assets/{location-owned-usage-C9Nw4pl1.js → location-owned-usage-BUWlm1CB.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-a89cc212.js → mf-entry-bootstrap-0-3f76a9b1.js} +2 -2
- package/dist/assets/mount-Do5zHkB-.js +1 -0
- package/dist/assets/{notification-schedule-field-C5o7LtYG.js → notification-schedule-field-CREV1-k1.js} +1 -1
- package/dist/assets/{player-overlays-D99aruRn.js → player-overlays-BzWBMmxi.js} +1 -1
- package/dist/assets/remoteEntry-BFi5UTY_.js +1 -0
- package/dist/assets/{send-BgylcHOh.js → send-DkNVOtAO.js} +1 -1
- package/dist/assets/{settings-2-LW1IN_gt.js → settings-2-C2Xnx-LO.js} +1 -1
- package/dist/assets/{square-check-big-D5pqQNiY.js → square-check-big-Cye5KH4u.js} +1 -1
- package/dist/assets/{src-DEc5SPAU.js → src-ZWAjTIoO.js} +3 -3
- package/dist/assets/{use-scenes-feed-B-ZZi-03.js → use-scenes-feed-D8q1WiH1.js} +1 -1
- package/dist/assets/{use-stationary-objects-duMJ6znZ.js → use-stationary-objects-uc9eGIUH.js} +1 -1
- package/dist/assets/useEventInvalidation-Do5zHkB-.js +1 -0
- package/dist/assets/{useNodeUrlSelection-CojY6y4Y.js → useNodeUrlSelection-C6cRiQwh.js} +1 -1
- package/dist/assets/user-round-BjVxqy86.js +1 -0
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-C5D0MB1B.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-BwnemvKX.js} +2 -2
- package/dist/index.html +7 -7
- package/dist/server/addon.js +11 -2
- package/package.json +1 -1
- package/dist/assets/circle-slash-B4DbbsQJ.js +0 -1
- package/dist/assets/device-picker-model-ClhnucnD.js +0 -1
- package/dist/assets/mount-ClhnucnD.js +0 -1
- package/dist/assets/remoteEntry-DlMXNmK9.js +0 -1
- package/dist/assets/useEventInvalidation-ClhnucnD.js +0 -1
- package/dist/assets/user-round-C9Bokffe.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./__vite-browser-external-Cc3gW-QT.js","./rolldown-runtime-Cyuzqnbw.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{t}from"./vite-preload-helper-kNaey6uv.js";import{A as n,C as r,D as i,E as a,F as o,I as s,M as c,N as l,O as u,P as d,S as f,T as p,_ as m,a as h,b as g,c as ee,d as te,f as ne,g as _,h as re,i as ie,j as v,k as ae,l as oe,m as y,n as se,o as ce,p as b,r as le,s as ue,t as de,u as fe,v as x,w as pe,x as me,y as S}from"./__vite-browser-external-Cc3gW-QT.js";var he=function(e){return e.SystemBoot=`system.boot`,e.SystemAddonsReady=`system.addons-ready`,e.SystemRestarting=`system.restarting`,e.SystemRestartCompleted=`system.restart-completed`,e.SystemTlsCertChanged=`system.tls-cert-changed`,e.UpdateAvailable=`update.available`,e.SystemReadyState=`system.ready-state`,e.AddonStarted=`addon.started`,e.AddonStopped=`addon.stopped`,e.AddonRestarted=`addon.restarted`,e.AddonUpdated=`addon.updated`,e.AddonInstalled=`addon.installed`,e.AddonUninstalled=`addon.uninstalled`,e.AddonCrashed=`addon.crashed`,e.AddonRunnerFailed=`addon.runner-failed`,e.AddonError=`addon.error`,e.AddonPageReady=`addon.page-ready`,e.AddonWidgetReady=`addon.widget-ready`,e.AddonLoadFailed=`addon.load-failed`,e.AddonLoadRecovered=`addon.load-recovered`,e.AddonRetryScheduled=`addon.retry-scheduled`,e.SystemLivenessFailed=`system.liveness-failed`,e.SystemLivenessRecovered=`system.liveness-recovered`,e.AddonRetryAttempting=`addon.retry-attempting`,e.DeviceRegistered=`device.registered`,e.DeviceUnregistered=`device.unregistered`,e.DeviceEnabled=`device.enabled`,e.DeviceDisabled=`device.disabled`,e.DeviceSettingsUpdated=`device.settings-updated`,e.DeviceBindingsChanged=`device.bindings-changed`,e.DeviceMetaChanged=`device.meta-changed`,e.DeviceSourceInfoChanged=`device.source-info-changed`,e.DeviceStreamsRegistered=`device.streams-registered`,e.DeviceProvisioned=`device.provisioned`,e.DeviceReady=`device.ready`,e.IntegrationEnabled=`integration.enabled`,e.IntegrationDisabled=`integration.disabled`,e.IntegrationDeleted=`integration.deleted`,e.BrokerStatusChanged=`broker.status-changed`,e.BrokerMessage=`broker.message`,e.ProviderStarted=`provider.started`,e.ProviderStopped=`provider.stopped`,e.ProcessCrashed=`process.crashed`,e.ProcessRestartScheduled=`process.restart_scheduled`,e.ProcessRestarted=`process.restarted`,e.StorageLocationsChanged=`storage.locations-changed`,e.RecordingStarted=`recording.started`,e.RecordingStopped=`recording.stopped`,e.RecordingError=`recording.error`,e.RecordingHealthDegraded=`recording.health.degraded`,e.RecordingStorageCritical=`recording.storage.critical`,e.RecordingSegmentWritten=`recording.segment.written`,e.RecordingPolicyFallback=`recording.policy.fallback`,e.RecordingRetentionCompleted=`recording.retention.completed`,e.RecordingExportProgress=`recording.export.progress`,e.RecordingExportCompleted=`recording.export.completed`,e.RecordingExportFailed=`recording.export.failed`,e.DetectionEvent=`detection.event`,e.SessionTrackNew=`session.track.new`,e.SessionTrackExpired=`session.track.expired`,e.BenchmarkProgress=`benchmark.progress`,e.PlatformProbePhase=`platform-probe.phase`,e.PipelineProgress=`pipeline.progress`,e.PipelineTrace=`pipeline.trace`,e.PipelineInferenceResult=`pipeline.inference-result`,e.PipelineCameraAssigned=`pipeline.camera-assigned`,e.PipelineCameraUnassigned=`pipeline.camera-unassigned`,e.PipelineNodeInferenceUnavailable=`pipeline.node-inference-unavailable`,e.PipelineDetectionBlind=`pipeline.detection-blind`,e.PipelineCameraUpdated=`pipeline.camera-updated`,e.PipelineIngestOwnerChanged=`pipeline.ingest-owner-changed`,e.PipelineRunnerLoadSnapshot=`pipeline.runner-load-snapshot`,e.PipelineCameraMetricsSnapshot=`pipeline.camera-metrics-snapshot`,e.StreamBrokerMetricsSnapshot=`stream-broker.metrics-snapshot`,e.StreamBrokerOnCamStreamDemand=`stream-broker.onCamStreamDemand`,e.StreamBrokerOnCamStreamIdle=`stream-broker.onCamStreamIdle`,e.StreamBrokerOnRequestStreamSourceRefresh=`stream-broker.onRequestStreamSourceRefresh`,e.StreamParamsChanged=`stream-params.changed`,e.DeviceStateChanged=`device.state-changed`,e.DeviceNativeShadowChanged=`device.native-shadow-changed`,e.ZoneAnalyticsOccupancyChanged=`zone-analytics.occupancy-changed`,e.BatteryOnStatusChanged=`battery.onStatusChanged`,e.NetworkLinkOnStatusChanged=`network-link.onStatusChanged`,e.BatteryOnWakeStarted=`battery.onWakeStarted`,e.DoorbellOnPressed=`doorbell.onPressed`,e.EventEmitted=`event-emitter.event`,e.PipelineEngineMetricsSnapshot=`pipeline.engine-metrics-snapshot`,e.PipelineEngineProvisioning=`pipeline.engine-provisioning`,e.ClusterTopologySnapshot=`cluster.topology-snapshot`,e.MetricsNodeResourcesSnapshot=`metrics.node-resources-snapshot`,e.MetricsNodeProcessesSnapshot=`metrics.node-processes-snapshot`,e.CapabilityBindingChanged=`capability.binding-changed`,e.ModelDownloadProgress=`model.download.progress`,e.AgentRegistered=`agent.registered`,e.AgentUnregistered=`agent.unregistered`,e.AgentOnline=`agent.online`,e.AgentOffline=`agent.offline`,e.WorkerOnline=`worker.online`,e.WorkerOffline=`worker.offline`,e.AgentTaskDispatched=`agent.task.dispatched`,e.AgentTaskAssigned=`agent.task.assigned`,e.AgentTrpcConnected=`agent.trpc.connected`,e.AgentWsConnected=`agent.ws.connected`,e.AgentWsDisconnected=`agent.ws.disconnected`,e.AgentBackupActivated=`agent.backup.activated`,e.OrchestrationSettingsUpdated=`orchestration.settings-updated`,e.PipelineAgentHwaccelChanged=`pipeline.agent-hwaccel-changed`,e.MotionAnalysis=`detection.motion-analysis`,e.MotionZonesRaw=`detection.motion-zones-raw`,e.MotionOnMotionChanged=`motion.on-motion-changed`,e.DetectionResult=`detection.result`,e.DetectionRaw=`detection.raw`,e.DetectionCameraNative=`detection.camera-native`,e.PipelineAudioInferenceResult=`pipeline.audio-inference-result`,e.DetectionPhaseTransition=`detection.phase-transition`,e.ProviderMotion=`provider.motion`,e.ProviderDetection=`provider.detection`,e.EnrichmentEmbeddingStored=`enrichment.embedding.stored`,e.EnrichmentSceneStateChanged=`enrichment.scene.state-changed`,e.EnrichmentActivitySummary=`enrichment.activity.summary`,e.PipelineAnalyticsTrackLifecycle=`pipeline-analytics.track-lifecycle`,e.PipelineAnalyticsTrackStarted=`pipeline-analytics.track-started`,e.PipelineAnalyticsTrackEnded=`pipeline-analytics.track-ended`,e.PipelineAnalyticsDetectionEvent=`pipeline-analytics.detection-event`,e.PipelineAnalyticsFrameTracked=`pipeline-analytics.frame-tracked`,e.PipelineAnalyticsStationaryChanged=`pipeline-analytics.stationary-changed`,e.PipelineAnalyticsPackageDelivered=`pipeline-analytics.package-delivered`,e.PipelineAnalyticsPackagePickedUp=`pipeline-analytics.package-picked-up`,e.PipelineAnalyticsFaceGalleryChanged=`pipeline-analytics.face-gallery-changed`,e.PipelineAnalyticsPlateGalleryChanged=`pipeline-analytics.plate-gallery-changed`,e.CameraStreamsProfileSlotsChanged=`camera-streams.onProfileSlotsChanged`,e.StreamOnline=`stream.online`,e.StreamOffline=`stream.offline`,e.NetworkTunnelStarted=`network.tunnel.started`,e.NetworkTunnelStopped=`network.tunnel.stopped`,e.LocalNetworkChanged=`network.local.changed`,e.MeshNetworkChanged=`network.mesh.changed`,e.BackupCompleted=`backup.completed`,e.BackupRunCompleted=`backup.run-completed`,e.BackupRestored=`backup.restored`,e.NotificationDispatched=`notification.dispatched`,e.NotificationFailed=`notification.failed`,e.DeviceUpdated=`device.updated`,e.DeviceOnline=`device.online`,e.DeviceOffline=`device.offline`,e.DeviceAwake=`device.awake`,e.DeviceSleeping=`device.sleeping`,e.RetentionCleanup=`retention.cleanup`,e.AddonsBulkUpdateProgress=`addons.bulk-update-progress`,e.AddonsJobProgress=`addons.job-progress`,e.AddonsJobLog=`addons.job-log`,e.AccessoriesChildVisibilityChanged=`accessories.onChildVisibilityChanged`,e.AccessoriesChanged=`accessories.onAccessoriesChanged`,e.ModelConvertProgress=`model-convert.progress`,e}({}),ge=new Set([`device.native-shadow-changed`]);function _e(e){return ge.has(e)}function ve(){let e=Object.values(he).filter(e=>typeof e==`string`);return[...new Set(e)].filter(e=>!_e(e)).toSorted()}var ye=[`f32le`,`pcmu`,`pcma`];function be(e){return typeof e==`string`&&ye.includes(e)}function xe(e){return e===`f32le`?4:1}function Se(e,t){if(t===`f32le`){let t=new Uint8Array(e.byteLength);return t.set(e),t}let n=t===`pcmu`?Te:Ee,r=new Float32Array(e.length);for(let t=0;t<e.length;t++)r[t]=n[e[t]];return new Uint8Array(r.buffer)}function Ce(){let e=new Float32Array(256);for(let t=0;t<256;t++){let n=~t&255,r=n&128?-1:1,i=n>>4&7;e[t]=r*((8*(n&15)+132<<i)-132)/32768}return e}function we(){let e=new Float32Array(256);for(let t=0;t<256;t++){let n=t^85,r=n&128?1:-1,i=n>>4&7,a=n&15;e[t]=r*(i===0?16*a+8:16*a+264<<i-1)/32768}return e}var Te=Ce(),Ee=we(),De=[{id:`overview`,label:`Overview`,icon:`layout-dashboard`,order:-10},{id:`general`,label:`General`,icon:`settings`,order:0},{id:`image`,label:`Image`,icon:`image`,order:5},{id:`light`,label:`Light`,icon:`lightbulb`,order:7},{id:`motion`,label:`Motion`,icon:`activity`,order:10},{id:`audio`,label:`Audio`,icon:`mic`,order:12},{id:`alarms`,label:`Alarms`,icon:`bell-ring`,order:13},{id:`snapshot`,label:`Snapshot`,icon:`camera`,order:15},{id:`osd`,label:`OSD`,icon:`type`,order:18},{id:`stream-broker`,label:`Stream Broker`,icon:`radio`,order:20},{id:`streaming`,label:`Streaming`,icon:`video`,order:35},{id:`ptz`,label:`PTZ`,icon:`move`,order:40},{id:`navigation`,label:`Navigation`,icon:`compass`,order:41},{id:`consumables`,label:`Consumables`,icon:`recycle`,order:44},{id:`pipeline`,label:`Detection Pipeline`,icon:`cpu`,order:39},{id:`detection-pipeline`,label:`Detection pipeline`,icon:`cpu`,order:39},{id:`zones`,label:`Detection`,icon:`shapes`,order:38},{id:`analytics`,label:`Analytics`,icon:`activity`,order:37},{id:`live-stats`,label:`Live Stats`,icon:`activity`,order:39},{id:`recording`,label:`Recording`,icon:`circle-dot`,order:40},{id:`engine`,label:`Inference Engine`,icon:`zap`,order:41},{id:`scheduler`,label:`Scheduler`,icon:`list-checks`,order:42},{id:`decoder`,label:`Decoder`,icon:`film`,order:43},{id:`notifications`,label:`Notifications`,icon:`bell`,order:50},{id:`network`,label:`Network`,icon:`globe`,order:60},{id:`storage`,label:`Storage`,icon:`hard-drive`,order:70},{id:`advanced`,label:`Advanced`,icon:`wrench`,order:100}],Oe=Object.fromEntries(De.map(e=>[e.id,e]));function ke(e){return e.type===`separator`||e.type===`info`||e.type===`qr-code`||e.type===`button`||e.type===`object-array`||e.type===`widget`||e.type===`addon-action-button`||e.type===`device-action-button`}function Ae(e){let t=new Map;if(typeof e!=`object`||!e)return t;let n=e.sections;if(!Array.isArray(n))return t;for(let e of n)typeof e==`object`&&e&&je(e.fields,t);return t}function je(e,t){if(Array.isArray(e))for(let n of e){if(typeof n!=`object`||!n)continue;let e=n.type;if(e===`group`){je(n.fields,t);continue}if(e===`sub-tabs`){let e=n.tabs;if(Array.isArray(e))for(let n of e)typeof n==`object`&&n&&je(n.fields,t);continue}let r=n.key;typeof r!=`string`||r.length===0||`value`in n&&t.set(r,{value:n.value,default:n.default})}}function Me(e){let t=new Map;for(let[n,r]of Ae(e))t.set(n,r.value??r.default);return t}function Ne(e,t){let n=Ae(e).get(t);return n===void 0?void 0:n.value??n.default}function Pe(e,t){return{...e.tabs?{tabs:[...e.tabs]}:{},sections:e.sections.map(e=>({...e,fields:e.fields.map(e=>Fe(e,t))}))}}function Fe(e,t){if(ke(e))return e;if(e.type===`group`){let n=e.fields.map(e=>Fe(e,t));return{...e,fields:n}}if(e.type===`sub-tabs`){let n=e.tabs.map(e=>({...e,fields:e.fields.map(e=>Fe(e,t))}));return{...e,tabs:n}}let n=e.key,r=Object.prototype.hasOwnProperty.call(t,n)?t[n]:void 0,i=e.default;if(e.multiple){let t=Array.isArray(r)?r:r==null?[]:[r],n=e.multiple.itemDefault===void 0?i===void 0?Ie(e)===`string`?``:null:i:e.multiple.itemDefault,a=Math.max(e.multiple.min,t.length),o=[];for(let e=0;e<a;e++)o.push(e<t.length?t[e]:n);return{...e,value:o}}let a=r===void 0?i===void 0?null:i:r,o=e.type===`textarea`&&e.isJson&&typeof a==`object`&&a?JSON.stringify(a,null,2):a;if(e.type===`tags`&&typeof e.suggestionsFrom==`string`){let n=t[e.suggestionsFrom],r=Array.isArray(n)?n.filter(e=>typeof e==`string`&&e.length>0):[],i=[...new Set([...e.suggestions??[],...r])];return{...e,suggestions:i,value:o}}if((e.type===`select`||e.type===`multiselect`)&&typeof e.optionsFrom==`string`){let n=t[e.optionsFrom],r=new Map;for(let t of e.options)r.set(t.value,t);if(Array.isArray(n))for(let e of n){if(typeof e==`string`&&e.length>0){r.has(e)||r.set(e,{value:e,label:e});continue}if(typeof e!=`object`||!e)continue;let t=Reflect.get(e,`value`),n=Reflect.get(e,`label`);typeof t!=`string`||t.length===0||r.has(t)||r.set(t,{value:t,label:typeof n==`string`&&n.length>0?n:t})}return{...e,options:[...r.values()],value:o}}return{...e,value:o}}function Ie(e){switch(e.type){case`text`:case`textarea`:case`password`:case`color`:case`probe`:case`timezone`:case`datetime`:return`string`;case`number`:case`slider`:return`number`;case`boolean`:return`boolean`;default:return`other`}}function Le(e,t){return e.category===t}function Re(e,t,n){return{id:typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2),timestamp:new Date,source:t,category:e,data:n}}function ze(e,t){let n=t.ts??Date.now();e.emit(Re(`system.ready-state`,{type:`capability`,id:t.capName,nodeId:t.sourceNodeId},{capName:t.capName,scope:t.scope,state:t.state,generation:t.generation,sourceNodeId:t.sourceNodeId,ts:n}))}function Be(e){let t=async()=>{let t=(await e.read())[e.key];if(t===void 0)return e.fallback;let n=e.schema.safeParse(t);return n.success?n.data:(e.onParseError?.(e.key,n.error),e.fallback)},n=async t=>{let n=e.schema.parse(t);await e.write({[e.key]:n})};return{get:t,set:n,update:async e=>{await n(e(await t()))}}}function Ve(e){if(e==null||e===``)return`hub`;let t=e.indexOf(`/`);if(t<0)return e;let n=e.slice(0,t);return n===``?`hub`:n}function He(e,t){return`${e}@${Ve(t)}`}function Ue(e,t,n){return e[He(t,n)]}function We(e,t,n){let r={};for(let[i,a]of Object.entries(e))r[t.has(i)?He(i,n):i]=a;return r}function Ge(e,t,n){let r={};for(let[n,i]of Object.entries(e))n.includes(`@`)||t.has(n)||(r[n]=i);for(let i of t){let t=Ue(e,i,n);t!==void 0&&(r[i]=t)}return r}var Ke=class{_ctx=null;_config;_readinessGeneration=typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14);_registeredCapNames=[];settingsStoreReady=!1;defaults;constructor(e){this.defaults=e,this._config={...e}}get autoEmitReadiness(){return!0}get ctx(){if(!this._ctx)throw Error(`${this.constructor.name}: ctx accessed before initialize()`);return this._ctx}get ctxIfReady(){return this._ctx}get config(){return this._config}async initialize(e){this._ctx=e,await this.resolveConfig();let t=await this.onInitialize();this.emitLifecycle(he.AddonStarted);let n=Ye(t),r=n&&`providers`in n&&n.providers?n.providers:[];return this._registeredCapNames=r.map(e=>e.capability.name),n}postBrokerStart(){this.autoEmitReadiness&&this._registeredCapNames.length>0&&this.emitReadinessForProviders(`ready`)}async onHubReachable(){}async shutdown(){this.emitLifecycle(he.AddonStopped),this.autoEmitReadiness&&this.emitReadinessForProviders(`down`),await this.onShutdown();for(let e of this._subscriptions)e();this._subscriptions=[],this._ctx=null}async onShutdown(){}async onConfigChanged(){}field(e){return e}schema(e){return e}globalSettingsSchema(e){return null}deviceSettingsSchema(){return null}integrationSettingSections(){return[]}async getGlobalSettings(e,t,n){let r=this.globalSettingsSchema(t);if(!r)return{sections:[]};let i=await this.resolveGlobalStore(n,t);return Pe(r,e?{...i,...e}:i)}async getIntegrationSettings(e){let t=this.integrationSettingSections();if(t.length===0)return null;let n=this.globalSettingsSchema();if(!n)throw Error(`${this.constructor.name}: integrationSettingSections() names [${t.join(`, `)}] but globalSettingsSchema() returns null.`);let r=new Map(n.sections.map(e=>[e.id,e])),i=[];for(let e of t){let t=r.get(e);if(!t)throw Error(`${this.constructor.name}: integrationSettingSections() names unknown section "${e}". Known sections: [${[...r.keys()].join(`, `)}].`);let n=qe(t.fields);n.length!==0&&i.push({...t,fields:n})}if(i.length===0)return null;let a=await this.resolveGlobalStore(e);return Pe({...n,sections:i},a)}async resolveGlobalStore(e,t){let n=await this._ctx?.settings?.readAddonStore()??{},r=this.perNodeKeys(t),i=Ve(e??this._ctx?.kernel?.localNodeId);return r.size>0?Ge(n,r,i):n}async readStoredGlobalKey(e){let t=this._ctx?.settings?.readAddonStoreResult;if(t===void 0)return{kind:`unreadable`,reason:`three-way-read-unavailable`};let n;try{n=await t.call(this._ctx?.settings)}catch(e){return{kind:`unreadable`,reason:`store-read-failed`,error:e instanceof Error?e.message:String(e)}}return n.kind===`failed`?{kind:`unreadable`,reason:`store-read-failed`,error:n.error}:n.kind===`missing`||!Object.prototype.hasOwnProperty.call(n.value,e)?{kind:`absent`}:{kind:`present`,value:n.value[e]}}async updateGlobalSettings(e,t){let n=this.perNodeKeys(),r=Ve(this._ctx?.kernel?.localNodeId),i=Ve(t??this._ctx?.kernel?.localNodeId),a=e,o=n.size>0?We(a,n,i):a;await this._ctx?.settings?.writeAddonStore(o),i===r&&(await this.resolveConfig(),await this.onConfigChanged(),this.emitLifecycle(he.AddonUpdated,{level:`global`}),this.maybeAutoRestart(e,this.globalSettingsSchema()))}_perNodeKeysCache=new Map;perNodeKeys(e){let t=e??``,n=this._perNodeKeysCache.get(t);if(n)return n;let r=this.globalSettingsSchema(e),i=new Set(r?r.sections.flatMap(e=>Je(e.fields)):[]);return this._perNodeKeysCache.set(t,i),i}maybeAutoRestart(e,t){if(!t)return;let n=new Set;for(let e of t.sections)for(let t of e.fields)t.type===`separator`||t.type===`info`||t.requiresRestart&&n.add(t.key);if(n.size===0||!Object.keys(e).some(e=>n.has(e)))return;let r=this._ctx;if(!r)return;let i=r.id;setImmediate(()=>{r.api.addons?.restartAddon?.mutate({addonId:i}).then(()=>{r.logger.info(`addon auto-restart triggered by restart-required setting change`,{meta:{changedFields:Object.keys(e).filter(e=>n.has(e))}})}).catch(e=>{r.logger.error(`addon auto-restart failed`,{meta:{error:e instanceof Error?e.message:String(e)}})})})}async getDeviceSettings(e){let t=this.deviceSettingsSchema();return t?Pe(t,await this._ctx?.settings?.readDeviceStore(e)??{}):{sections:[]}}async updateDeviceSettings(e,t){await this._ctx?.settings?.writeDeviceStore(e,t)}_subscriptions=[];watchCapability(e,t){let n=new Set(Array.isArray(e)?e:[e]);this.subscribe({category:`system.ready-state`},e=>{let r=e.data;if(typeof r.capName!=`string`||!n.has(r.capName)||r.scope?.type!==`node`)return;let i=r.scope.nodeId;if(typeof i!=`string`||i.length===0)return;let a=r.capName;r.state===`down`?t.onDown?.(i,a):r.state===`ready`&&t.onReady?.(i,a)})}subscribe(e,t){let n=this.ctx.eventBus.subscribe(e,t);this._subscriptions.push(n)}emitLifecycle(e,t){try{let n=this._ctx;if(!n)return;n.eventBus.emit({id:`${n.id}-${Date.now()}`,timestamp:new Date,source:{type:`addon`,id:n.id,nodeId:n.kernel.localNodeId??`hub`},category:e,data:{addonId:n.id,...t}})}catch{}}emitReadinessForProviders(e){let t=this._ctx;if(!t||this._registeredCapNames.length===0)return;let n=t.kernel?.localNodeId??`hub`,r=n.includes(`/`)?n.split(`/`)[0]:n;for(let n of this._registeredCapNames)try{ze(t.eventBus,{capName:n,scope:{type:`node`,nodeId:r},state:e,generation:this._readinessGeneration,sourceNodeId:r})}catch{}}async resolveModelsDir(){let{join:n}=await t(async()=>{let{join:t}=await import(`./__vite-browser-external-Cc3gW-QT.js`).then(t=>e(t.t(),1));return{join:t}},__vite__mapDeps([0,1]),import.meta.url),{promises:r}=await t(async()=>{let{promises:t}=await import(`./__vite-browser-external-Cc3gW-QT.js`).then(t=>e(t.t(),1));return{promises:t}},__vite__mapDeps([0,1]),import.meta.url),i=n(this.ctx.nodeDataDir,`models`);return await r.mkdir(i,{recursive:!0}),i}get capabilities(){return this.ctx.capabilities??null}async resolveConfig(){let e=await this.readAddonStoreWithRetry(),t=this.perNodeKeys(),n=Ve(this._ctx?.kernel?.localNodeId),r={...this.defaults};for(let i of Object.keys(this.defaults)){let a=t.has(i)?Ue(e,i,n):e[i];if(a!=null){let e=typeof this.defaults[i];typeof a===e&&(r[i]=a)}}this._config=r}state(e,t,n){return Be({key:e,schema:t,fallback:n,read:()=>this.readAddonStoreWithRetry(),write:async e=>{await this._ctx?.settings?.writeAddonStore(e)},onParseError:(e,t)=>this._ctx?.logger?.warn?.(`durable-state: stored "${e}" failed validation — using fallback`,{meta:{addonId:this._ctx?.id,key:e,error:String(t)}})})}deviceState(e,t,n,r){return Be({key:t,schema:n,fallback:r,read:async()=>await this._ctx?.settings?.readDeviceStore(e)??{},write:async t=>{await this._ctx?.settings?.writeDeviceStore(e,t)},onParseError:(t,n)=>this._ctx?.logger?.warn?.(`durable-state: stored device ${e} "${t}" failed validation — using fallback`,{meta:{addonId:this._ctx?.id,deviceId:e,key:t,error:String(n)}})})}async readAddonStoreWithRetry(){let e=this._ctx?.settings;if(!e)return{};let t=[150,350,600,900],n;for(let r=0;r<=t.length;r++)try{let t=await e.readAddonStore()??{};return this.settingsStoreReady=!0,t}catch(e){n=e;let i=e instanceof Error?e.message:String(e);if(!(i.includes(`SqliteSettingsBackend not initialized`)||i.includes(`provider not available`)))throw e;if(r===t.length)break;await new Promise(e=>setTimeout(e,t[r]))}return this.settingsStoreReady=!1,this._ctx?.logger?.warn?.(`readAddonStore: settings-store unavailable after retries — using defaults`,{meta:{error:n instanceof Error?n.message:String(n)}}),{}}};function qe(e){let t=[];for(let n of e){if(n.type===`group`){let e=qe(n.fields);e.length>0&&t.push({...n,fields:e});continue}if(n.type===`sub-tabs`){let e=n.tabs.map(e=>({...e,fields:qe(e.fields)})).filter(e=>e.fields.length>0);e.length>0&&t.push({...n,tabs:e});continue}`perNode`in n&&n.perNode===!0||t.push(n)}return t}function Je(e){let t=[];for(let n of e){if(n.type===`group`){t.push(...Je(n.fields));continue}if(n.type===`sub-tabs`){for(let e of n.tabs)t.push(...Je(e.fields));continue}`perNode`in n&&n.perNode===!0&&t.push(n.key)}return t}function Ye(e){if(e!=null)return Array.isArray(e)?{providers:e}:e}var Xe=class{disposers=[];disposed=!1;onError;constructor(e={}){this.onError=e.onError??((e,t)=>{console.error(`[DisposerChain] disposer #${t} threw`,e)})}add(e){if(this.disposed){try{let t=e();t&&typeof t.then==`function`&&t.catch(e=>this.onError(e,-1))}catch(e){this.onError(e,-1)}return()=>void 0}return this.disposers.push(e),()=>{let t=this.disposers.indexOf(e);t>=0&&this.disposers.splice(t,1)}}get isDisposed(){return this.disposed}get size(){return this.disposers.length}async dispose(){if(this.disposed)return;this.disposed=!0;let e=this.disposers.slice().toReversed();this.disposers=[];for(let t=0;t<e.length;t++){let n=e[t];try{let e=n();e&&typeof e.then==`function`&&await e}catch(n){this.onError(n,e.length-1-t)}}}},Ze=`x-camstack-dataplane-secret`,Qe=[`grid-view`,`events-view`],$e=3e4,et=64,tt=15e3,nt=256*1024,rt=u({url:c().min(1),hostNodeId:c().min(1),expiresAtMs:i().int().nonnegative(),declaredBytes:i().int().nonnegative().nullable()}),C=b([`high`,`mid`,`low`]),it=[`high`,`mid`,`low`],at=d([C,p(`auto`)]),ot=b([`pull-rtsp`,`pull-rtmp`,`pull-http`,`pull-flv`,`pull-rfc4571`,`push-annexb`,`derived`]),st=u({width:i().int().positive(),height:i().int().positive()}),ct=u({camStreamId:c().min(1),deviceId:i().int().nonnegative(),kind:ot,url:c().optional(),codec:c().optional(),resolution:st.optional(),fps:i().positive().optional(),label:c().optional(),deviceFeatures:x(c()).optional(),autoEligible:S().optional(),profileHint:C.optional(),metadata:v(c(),o()).optional()}),lt=b([`unassigned`,`idle`,`connecting`,`streaming`,`error`]),ut=u({deviceId:i().int().nonnegative(),profile:C,brokerId:c(),sourceCamStreamId:c().nullable(),status:lt,resolution:st.optional(),codec:c().optional(),preBufferSec:i().nonnegative().optional(),errorMessage:c().optional()});function dt(e,t){return`${e}/${t}`}function ft(e,t){return`${e}/${t}`}function pt(e){let t=e.indexOf(`/`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);if(!/^\d+$/.test(n))return null;let i=C.safeParse(r);return i.success?{deviceId:Number(n),profile:i.data}:null}function mt(e,t){let n=[...e].filter(e=>t===void 0||e.deviceId===t).toSorted((e,t)=>it.indexOf(e.profile)-it.indexOf(t.profile)),r=new Set,i=[];for(let e of n){let t=e.sourceCamStreamId;t!==null&&(r.has(t)||(r.add(t),i.push(e)))}return i}var ht=u({id:c(),label:c(),protocol:b([`rtsp`,`rtmp`,`annexb`,`http-mjpeg`,`webrtc`,`custom`]),url:c().optional(),resolution:u({width:i(),height:i()}).readonly().optional(),fps:i().optional(),bitrate:i().optional(),codec:c().optional(),profileHint:C.optional()}),gt=u({type:c(),url:c(),videoCodec:c().optional(),audioCodec:c().optional(),metadata:v(c(),o()).readonly().optional()}),_t=u({type:b([`video`,`audio`]),data:y(Uint8Array),pts:i(),dts:i(),keyframe:S(),codec:c()}),vt=u({data:y(Uint8Array),width:i(),height:i(),format:b([`jpeg`,`rgb`,`bgr`,`yuv420`,`gray`]),timestamp:i()}),w=u({shmId:c(),slot:i().int().nonnegative(),seq:i().int().nonnegative(),width:i().int().positive(),height:i().int().positive(),format:b([`jpeg`,`rgb`,`bgr`,`yuv420`,`gray`]),pts:i(),byteLength:i().int().nonnegative(),nodeId:c(),slotCount:i().int().positive()}),yt=b([`rgb`,`bgr`,`yuv420`,`gray`]),bt=u({brokerId:c(),format:yt,maxFps:i().positive().optional(),tag:c().optional()}),xt=u({subscriptionId:c(),maxFps:i().nonnegative()}),St=b(ye),Ct=u({data:y(Uint8Array),sampleRate:i().int().positive(),channels:i().int().positive(),timestamp:i(),format:St.optional()}),wt=u({brokerId:c(),tag:c().optional(),accept:x(St).readonly().optional()}),Tt=u({subscriptionId:c()}),Et=b([`idle`,`connecting`,`streaming`,`error`,`stopped`]),Dt=u({status:Et,inputFps:i(),decodeFps:i(),encodedSubscribers:i(),decodedSubscribers:i(),uptimeMs:i(),bitrateKbps:i(),idrIntervalMs:i(),codec:c().optional(),totalBytes:i(),packetCount:i(),rtspClients:i(),pipeClients:i(),preBufferSec:i(),preBufferMs:i(),preBufferPackets:i(),decoderNodeId:c().nullable(),audio:u({codec:c(),sampleRate:i(),channels:i(),supported:S()}).nullable().optional(),audioMuted:S().optional(),audioMutedDropped:i().optional()}),Ot=u({profile:C,brokerId:c(),url:c(),mutedUrl:c(),enabled:S(),codec:c().optional(),resolution:st.optional()}),kt=class extends Error{capName;scope;waitedMs;constructor(e,t,n){super(`Timed out waiting for ${e} (${jt(t)}) to become ready after ${n}ms`),this.name=`ReadinessTimeoutError`,this.capName=e,this.scope=t,this.waitedMs=n}};function At(e,t){return`${e}|${jt(t)}`}function jt(e){switch(e.type){case`global`:return`global`;case`node`:return`node:${e.nodeId}`;case`device`:return`device:${e.deviceId}`}}function Mt(e){switch(e){case`starting`:return 0;case`ready`:return 1;case`down`:return 2}}function Nt(e,t){return e.type===t.type?e.type===`global`||t.type===`global`?!0:e.type===`node`&&t.type===`node`?e.nodeId===t.nodeId:e.type===`device`&&t.type===`device`?e.deviceId===t.deviceId:!1:!1}var Pt=class{bus;sourceNodeId;logger;now;generation;verboseDeviceScopeLogs;snapshot=new Map;subscriptions=new Set;unsubscribeBus;unsubscribeAgentOffline;constructor(e){if(this.bus=e.eventBus,this.sourceNodeId=e.sourceNodeId,this.logger=e.logger,this.now=e.now??(()=>Date.now()),this.generation=e.generation??Ft(),this.verboseDeviceScopeLogs=e.verboseDeviceScopeLogs??!1,this.unsubscribeBus=this.bus.subscribe({category:`system.ready-state`},e=>this.ingest(e.data)),this.unsubscribeAgentOffline=this.bus.subscribe({category:`agent.offline`},e=>this.synthesizeDownForNode(e.data.agentId)),typeof this.bus.getRecent==`function`)try{let e=this.bus.getRecent({category:`system.ready-state`});for(let t of e)this.ingest(t.data)}catch{}}close(){this.unsubscribeBus(),this.unsubscribeAgentOffline(),this.subscriptions.clear()}get(e,t){return this.snapshot.get(At(e,t))??null}getSnapshotForTransport(){return Array.from(this.snapshot.values())}hydrate(e){let t=this.now(),n=0;for(let r of e){let e=At(r.capName,r.scope),i=this.snapshot.get(e)??null,a,o;if(i!==null){if(this.isLocallyAuthoritative(i))continue;let e=i.generation===r.generation;if(e&&Mt(r.state)<=Mt(i.state))continue;a=!e&&r.state===`ready`?i.epoch+1:i.epoch,o=Math.max(0,t-i.lastChange)}else a=1,o=0;let s={capName:r.capName,scope:r.scope,state:r.state,generation:r.generation,epoch:a,lastChange:t,sourceNodeId:r.sourceNodeId};this.snapshot.set(e,s),n++,this.logPerRecord(r.scope,`readiness: ${r.capName} (${jt(r.scope)}) → ${r.state} (hydrated${i===null?``:` update`}, gen=${r.generation.slice(0,6)})`);let c={capName:r.capName,scope:r.scope,state:r.state,epoch:a,generation:r.generation,sourceNodeId:`hydrated`,ts:t,durationInPrevState:o};for(let e of this.subscriptions)if(e.capName===r.capName&&Nt(e.scope,r.scope))try{e.handler(c)}catch(e){this.logger?.warn(`readiness hydrate handler threw for ${r.capName}: ${e.message??String(e)}`)}}return n}logPerRecord(e,t){if(this.logger){if(e.type===`device`){if(!this.verboseDeviceScopeLogs)return;this.logger.debug(t,{tags:{deviceId:e.deviceId}});return}this.logger.debug(t)}}isLocallyAuthoritative(e){return e.scope.type===`node`?e.scope.nodeId===this.sourceNodeId:e.sourceNodeId===this.sourceNodeId}getAll(){return new Map(this.snapshot)}emitReady(e,t){this.emitTransition(e,t,`ready`)}emitStarting(e,t){this.emitTransition(e,t,`starting`)}emitDown(e,t){this.emitTransition(e,t,`down`)}awaitReady(e,t,n={}){let r=n.timeoutMs??1/0,i=this.now();return this.get(e,t)?.state===`ready`?Promise.resolve():n.signal?.aborted?Promise.reject(n.signal.reason??Error(`aborted`)):new Promise((a,o)=>{let s=!1,c=this.onReadyState(e,t,e=>{e.state===`ready`&&(s||(s=!0,f(),a()))}),l=Number.isFinite(r)?setTimeout(()=>{s||(s=!0,f(),o(new kt(e,t,this.now()-i)))},r):null,u=setInterval(()=>{s||this.logger?.warn(`readiness: still awaiting ${e} (${jt(t)}) after ${this.now()-i}ms`)},3e4);typeof u.unref==`function`&&u.unref();let d=()=>{s||(s=!0,f(),o(n.signal?.reason??Error(`aborted`)))};n.signal?.addEventListener(`abort`,d,{once:!0});function f(){c(),l!==null&&clearTimeout(l),clearInterval(u),n.signal?.removeEventListener(`abort`,d)}})}onReadyState(e,t,n){let r={capName:e,scope:t,handler:n};this.subscriptions.add(r);let i=this.get(e,t);return i!==null&&queueMicrotask(()=>{this.subscriptions.has(r)&&n({capName:e,scope:t,state:i.state,epoch:i.epoch,generation:i.generation,sourceNodeId:this.sourceNodeId,ts:i.lastChange,durationInPrevState:0})}),()=>{this.subscriptions.delete(r)}}emitTransition(e,t,n){let r=this.now();this.bus.emit(Re(`system.ready-state`,{type:`capability`,id:e,nodeId:this.sourceNodeId},{capName:e,scope:t,state:n,generation:this.generation,sourceNodeId:this.sourceNodeId,ts:r}))}ingest(e){if(typeof e?.capName!=`string`||e.state!==`ready`&&e.state!==`starting`&&e.state!==`down`||typeof e.generation!=`string`||e.scope?.type!==`global`&&e.scope?.type!==`node`&&e.scope?.type!==`device`)return;let t=At(e.capName,e.scope),n=this.snapshot.get(t)??null,r=this.now(),i;if(i=n===null?+(e.state===`ready`):n.generation!==e.generation&&e.state===`ready`?n.epoch+1:n.epoch,n!==null&&n.generation===e.generation&&n.state===e.state)return;let a=n===null?0:Math.max(0,r-n.lastChange),o={capName:e.capName,scope:e.scope,state:e.state,generation:e.generation,epoch:i,lastChange:r,sourceNodeId:e.sourceNodeId};this.snapshot.set(t,o);let s={capName:e.capName,scope:e.scope,state:e.state,epoch:i,generation:e.generation,sourceNodeId:e.sourceNodeId,ts:e.ts,durationInPrevState:a};this.logPerRecord(e.scope,`readiness: ${e.capName} (${jt(e.scope)}) → ${e.state} epoch=${i} gen=${e.generation.slice(0,6)} (prev ${a}ms)`);for(let t of this.subscriptions)if(t.capName===e.capName&&Nt(t.scope,e.scope))try{t.handler(s)}catch(t){this.logger?.warn(`readiness handler threw for ${e.capName}: ${t.message??String(t)}`)}}synthesizeDownForNode(e){let t=this.now();for(let[n,r]of this.snapshot){if(r.state===`down`||!(r.scope.type===`node`&&r.scope.nodeId===e||r.scope.type===`device`&&r.sourceNodeId===e))continue;let i=Math.max(0,t-r.lastChange),a={...r,state:`down`,lastChange:t};this.snapshot.set(n,a);let o={capName:r.capName,scope:r.scope,state:`down`,epoch:r.epoch,generation:r.generation,sourceNodeId:this.sourceNodeId,ts:t,durationInPrevState:i};this.logPerRecord(r.scope,`readiness: ${r.capName} (${jt(r.scope)}) → down (synthesized from agent.offline ${e})`);for(let e of this.subscriptions)if(e.capName===r.capName&&Nt(e.scope,r.scope))try{e.handler(o)}catch(e){this.logger?.warn(`readiness handler threw during agent.offline demux for ${r.capName}: ${e.message??String(e)}`)}}}};function Ft(){return typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14)}function It(e,t){for(let{capName:n,scope:r}of t)e.emitDown(n,r)}var Lt=`__camstackNodePin`;function Rt(e){return{context:{[Lt]:zt(e)}}}function zt(e){let t=e.split(`/`)[0];return t===void 0||t.length===0?e:t}function Bt(e){if(typeof e!=`object`||!e)return;let t=Reflect.get(e,Lt);return typeof t==`string`?t:void 0}u({field:c().min(1),on:p(`advance`)});var Vt=`session`;function Ht(e){return e.mount?e.mount:e.deviceNative===!0?{kind:`device-native`}:e.scope===`device`&&e.kind===`wrapper`?{kind:`device-scoped`}:e.mode===`collection`?{kind:`collection`}:{kind:`singleton`}}var Ut=`provider`,Wt=u({id:c(),title:c(),description:c().optional(),style:b([`card`,`accordion`]).optional(),defaultCollapsed:S().optional(),columns:d([p(1),p(2),p(3),p(4)]).optional(),tab:c().optional(),location:b([`settings`,`top-tab`]).optional(),order:i().optional(),fields:x(m())}),Gt=u({tabs:x(u({id:c(),label:c(),icon:c(),order:i().optional()})).optional(),sections:x(Wt)}).nullable(),Kt={getDeviceSettingsContribution:{input:u({deviceId:i()}),output:Gt,kind:`query`,auth:`protected`},getDeviceLiveContribution:{input:u({deviceId:i()}),output:Gt,kind:`query`,auth:`protected`},applyDeviceSettingsPatch:{input:u({deviceId:i(),patch:v(c(),o())}),output:u({success:p(!0)}),kind:`mutation`,auth:`admin`}},qt={getStatus:{input:u({deviceId:i()}),output:o().nullable(),kind:`query`,auth:`protected`}};function Jt(e){let t=e.methods;return e.exposesDeviceSettings&&(t={...Kt,...t}),e.status&&(t={...qt,...t}),t}function T(e,t,n){return{input:e,output:t,kind:n?.kind??`query`,...n?.auth===void 0?{}:{auth:n.auth},...n?.access===void 0?{}:{access:n.access},...n?.caller===void 0?{}:{caller:n.caller},timeoutMs:n?.timeoutMs}}function Yt(e,t,n){return{...T(e,t,n),systemOnly:!0}}function Xt(e,t,n){return{...T(e,t,n),providerOptional:!0}}function Zt(e){return{data:e}}function Qt(e){return e?.deviceConfig!==void 0}var $t=u({staticDir:c()}),en=u({version:c()}),tn={name:`admin-ui`,scope:`system`,mode:`singleton`,internal:!0,methods:{getStaticDir:T(_(),$t,{auth:`admin`}),getVersion:T(_(),en,{auth:`admin`})}};function nn(e){return e}function rn(e,t,n){return{input:e,output:t,kind:n?.kind??`query`,auth:n?.auth??`protected`,scope:n?.scope??{kind:`system`},...n?.caller?{caller:`required`}:{}}}function an(e,t,n){return{input:e,output:t,kind:n?.kind??`query`,auth:n?.auth??`protected`,scope:{kind:`device`,...n?.deviceTypes?{deviceTypes:n.deviceTypes}:{}}}}function on(e){let t={};for(let[n,r]of Object.entries(e))t[n]={kind:r.kind,auth:r.auth,scope:r.scope,...r.caller===`required`?{caller:`required`}:{}};return t}var sn=256,cn=u({staticDir:c()}),ln=u({version:c()}),un={name:`viewer-ui`,scope:`system`,mode:`singleton`,internal:!0,methods:{getStaticDir:T(_(),cn,{auth:`admin`}),getVersion:T(_(),ln,{auth:`admin`})}},dn=u({id:c(),label:c(),protocol:b([`rtsp`,`rtmp`,`annexb`,`http-mjpeg`,`webrtc`,`custom`]),url:c().optional(),resolution:u({width:i(),height:i()}).optional(),fps:i().optional(),bitrate:i().optional(),codec:c().optional(),profileHint:C.optional(),sdp:c().optional()}),fn=u({key:c(),value:o()}),pn=u({source:c(),data:v(c(),o())}),mn={name:`device-ops`,scope:`device`,deviceNative:!0,mode:`singleton`,methods:{getStreamSources:T(u({deviceId:i()}),x(dn)),getConfigEntries:T(u({deviceId:i()}),x(fn)),setConfig:T(u({deviceId:i(),values:v(c(),o())}),_(),{kind:`mutation`,auth:`admin`}),runAction:T(u({deviceId:i(),action:c().min(1),input:o()}),o(),{kind:`mutation`}),removeDevice:T(u({deviceId:i()}),_(),{kind:`mutation`,auth:`admin`}),getSettingsSchema:T(u({deviceId:i()}),o().nullable()),getRawState:T(u({deviceId:i()}),pn.nullable(),{auth:`protected`})}},hn=`device.state-changed`;function gn(e){let t=new Map,n=new Map,r=null,i=(e,t)=>`${e}:${t}`,a=()=>{r||e.live?.onEvent&&(r=e.live.onEvent.subscribe({category:hn},{onData:e=>{let r=e.data;if(!r||typeof r.deviceId!=`number`||typeof r.capName!=`string`)return;let a=i(r.deviceId,r.capName);t.set(a,r.slice);let o=n.get(a);if(o)for(let e of o)try{e(r.slice)}catch{}}}))},o=()=>{r&&(n.size>0||(r.unsubscribe(),r=null))};return{read(e,n){return t.get(i(e,n))},async refresh(r,a){let o=await e.deviceState.getCapSlice.query({deviceId:r,capName:a}),s=i(r,a);t.set(s,o??void 0);let c=n.get(s);if(c)for(let e of c)try{e(o??void 0)}catch{}},watch(e,t,r){let s=i(e,t),c=n.get(s);return c||(c=new Set,n.set(s,c)),c.add(r),a(),()=>{c.delete(r),c.size===0&&n.delete(s),o()}},async write(t,n,r){await e.deviceState.setCapSlice.mutate({deviceId:t,capName:n,slice:r})}}}function _n(e){let{eventBus:t,api:n}=e,r=new Map,i=new Map,a=null,o=(e,t)=>`${e}:${t}`,s=(e,t,n)=>{let a=o(e,t);r.set(a,n);let s=i.get(a);if(s)for(let e of s)try{e(n)}catch{}},c=()=>{a||=t.subscribe({category:hn},e=>{let t=e.data;if(typeof t!=`object`||!t)return;let n=Reflect.get(t,`deviceId`),r=Reflect.get(t,`capName`);typeof n!=`number`||typeof r!=`string`||s(n,r,Reflect.get(t,`slice`))})},l=()=>{a!==null&&(i.size>0||(a(),a=null))};return{read(e,t){return r.get(o(e,t))},async refresh(e,t){s(e,t,await n.deviceState.getCapSlice.query({deviceId:e,capName:t})??void 0)},watch(e,t,n){let r=o(e,t),a=i.get(r);return a||(a=new Set,i.set(r,a)),a.add(n),c(),()=>{a.delete(n),a.size===0&&i.delete(r),l()}},async write(e,t,r){await n.deviceState.setCapSlice.mutate({deviceId:e,capName:t,slice:r})}}}function vn(e,t,n){let r=(e,t)=>`${e}:${t}`;return{read(t,n){return e.get(t)?.get(n)},async refresh(){},watch(e,n,i){let a=r(e,n),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(i),()=>{o.delete(i),o.size===0&&t.delete(a)}},async write(e,t,r){if(!n)throw Error(`createMirrorSource: write requires an api reference — pass it as the third argument when constructing the source`);await n.deviceState.setCapSlice.mutate({deviceId:e,capName:t,slice:r})}}}function E(e,t,n){let r=yn(e)?e:gn(e);return{get value(){return r.read(t,n)},refresh(){return r.refresh(t,n)},subscribe(e){let i=r.watch(t,n,t=>{try{e(t)}catch{}});try{e(r.read(t,n))}catch{}return r.read(t,n)===void 0&&r.refresh(t,n).catch(()=>void 0),i},async set(e){await r.write(t,n,e)},async patch(e){let i={...r.read(t,n),...e};await r.write(t,n,i)}}}function yn(e){return typeof e.read==`function`&&typeof e.watch==`function`}function bn(e,t,n){let r=e,i=n?.stateSource??gn(e);function a(e,n){let r=typeof e==`object`&&e?e:{};return n===void 0?{...r,deviceId:t.deviceId}:{...r,deviceId:t.deviceId,nodeId:n}}function o(e,t,n,i,a){let o=r[e]?.[t];if(!o)throw Error(`DeviceProxy: api has no '${e}.${t}'`);let s=o;return n===`mutation`?s.mutate(i):n===`subscription`?s.subscribe(i,a):s.query(i)}function s(e,n,r,i,s,c){return o(n,r,i,a(s,t.entries.find(t=>t.capName===e)?.providerNodeId),c)}function c(e,t,n,r,i){return o(e,t,n,a(r,void 0),i)}function l(e){return t.entries.some(t=>t.capName===e)}let u={setChildHidden:e=>s(`accessories`,`accessories`,`setChildHidden`,`mutation`,e),getStatus:e=>s(`accessories`,`accessories`,`getStatus`,`query`,e)},d={getStatus:e=>s(`air-quality-sensor`,`airQualitySensor`,`getStatus`,`query`,e)},f={arm:e=>s(`alarm-panel`,`alarmPanel`,`arm`,`mutation`,e),disarm:e=>s(`alarm-panel`,`alarmPanel`,`disarm`,`mutation`,e),trigger:e=>s(`alarm-panel`,`alarmPanel`,`trigger`,`mutation`,e),getStatus:e=>s(`alarm-panel`,`alarmPanel`,`getStatus`,`query`,e)},p={getStatus:e=>s(`ambient-light-sensor`,`ambientLightSensor`,`getStatus`,`query`,e)},m={resolveDeviceSettings:e=>s(`audio-analysis`,`audioAnalysis`,`resolveDeviceSettings`,`query`,e),getDeviceSettingsContribution:e=>s(`audio-analysis`,`audioAnalysis`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`audio-analysis`,`audioAnalysis`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`audio-analysis`,`audioAnalysis`,`applyDeviceSettingsPatch`,`mutation`,e)},h={getCurrentSnapshot:e=>s(`audio-metrics`,`audioMetrics`,`getCurrentSnapshot`,`query`,e),getHistory:e=>s(`audio-metrics`,`audioMetrics`,`getHistory`,`query`,e)},g={enable:e=>s(`automation-control`,`automationControl`,`enable`,`mutation`,e),disable:e=>s(`automation-control`,`automationControl`,`disable`,`mutation`,e),trigger:e=>s(`automation-control`,`automationControl`,`trigger`,`mutation`,e),getStatus:e=>s(`automation-control`,`automationControl`,`getStatus`,`query`,e)},ee={wakeForStream:e=>s(`battery`,`battery`,`wakeForStream`,`mutation`,e),getStatus:e=>s(`battery`,`battery`,`getStatus`,`query`,e)},te={getStatus:e=>s(`binary`,`binary`,`getStatus`,`query`,e)},ne={setBrightness:e=>s(`brightness`,`brightness`,`setBrightness`,`mutation`,e),getStatus:e=>s(`brightness`,`brightness`,`getStatus`,`query`,e)},_={press:e=>s(`button`,`button`,`press`,`mutation`,e)},re={getCredentials:e=>s(`camera-credentials`,`cameraCredentials`,`getCredentials`,`query`,e),getStatus:e=>s(`camera-credentials`,`cameraCredentials`,`getStatus`,`query`,e)},ie={getLayout:e=>s(`camera-grid-layout`,`cameraGridLayout`,`getLayout`,`query`,e),saveLayout:e=>s(`camera-grid-layout`,`cameraGridLayout`,`saveLayout`,`mutation`,e),getDeviceSettingsContribution:e=>s(`camera-grid-layout`,`cameraGridLayout`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`camera-grid-layout`,`cameraGridLayout`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`camera-grid-layout`,`cameraGridLayout`,`applyDeviceSettingsPatch`,`mutation`,e)},v={getDeviceSettingsContribution:e=>s(`camera-pipeline-config`,`cameraPipelineConfig`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`camera-pipeline-config`,`cameraPipelineConfig`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`camera-pipeline-config`,`cameraPipelineConfig`,`applyDeviceSettingsPatch`,`mutation`,e)},ae={getCameraStreams:e=>s(`camera-streams`,`cameraStreams`,`getCameraStreams`,`query`,e),getBrokerStreams:e=>s(`camera-streams`,`cameraStreams`,`getBrokerStreams`,`query`,e),getRtspEntries:e=>s(`camera-streams`,`cameraStreams`,`getRtspEntries`,`query`,e),getProfileRtspEntries:e=>s(`camera-streams`,`cameraStreams`,`getProfileRtspEntries`,`query`,e),pickStream:e=>s(`camera-streams`,`cameraStreams`,`pickStream`,`query`,e)},oe={getStatus:e=>s(`carbon-monoxide`,`carbonMonoxide`,`getStatus`,`query`,e)},y={setMode:e=>s(`climate-control`,`climateControl`,`setMode`,`mutation`,e),setFanMode:e=>s(`climate-control`,`climateControl`,`setFanMode`,`mutation`,e),setPreset:e=>s(`climate-control`,`climateControl`,`setPreset`,`mutation`,e),setTarget:e=>s(`climate-control`,`climateControl`,`setTarget`,`mutation`,e),setTargetRange:e=>s(`climate-control`,`climateControl`,`setTargetRange`,`mutation`,e),setTargetHumidity:e=>s(`climate-control`,`climateControl`,`setTargetHumidity`,`mutation`,e),setSwingVertical:e=>s(`climate-control`,`climateControl`,`setSwingVertical`,`mutation`,e),setSwingHorizontal:e=>s(`climate-control`,`climateControl`,`setSwingHorizontal`,`mutation`,e),getStatus:e=>s(`climate-control`,`climateControl`,`getStatus`,`query`,e)},se={setColor:e=>s(`color`,`color`,`setColor`,`mutation`,e),getStatus:e=>s(`color`,`color`,`getStatus`,`query`,e)},ce={getStatus:e=>s(`connectivity`,`connectivity`,`getStatus`,`query`,e)},b={reset:e=>s(`consumables`,`consumables`,`reset`,`mutation`,e),getStatus:e=>s(`consumables`,`consumables`,`getStatus`,`query`,e)},le={getStatus:e=>s(`contact`,`contact`,`getStatus`,`query`,e)},ue={setValue:e=>s(`control`,`control`,`setValue`,`mutation`,e),getStatus:e=>s(`control`,`control`,`getStatus`,`query`,e)},de={open:e=>s(`cover`,`cover`,`open`,`mutation`,e),close:e=>s(`cover`,`cover`,`close`,`mutation`,e),stop:e=>s(`cover`,`cover`,`stop`,`mutation`,e),setPosition:e=>s(`cover`,`cover`,`setPosition`,`mutation`,e),setTiltPosition:e=>s(`cover`,`cover`,`setTiltPosition`,`mutation`,e),getStatus:e=>s(`cover`,`cover`,`getStatus`,`query`,e)},fe={getOptions:e=>s(`day-night`,`dayNight`,`getOptions`,`query`,e),setSettings:e=>s(`day-night`,`dayNight`,`setSettings`,`mutation`,e),getStatus:e=>s(`day-night`,`dayNight`,`getStatus`,`query`,e)},x={getDeviceSettingsContribution:e=>s(`detection-pipeline`,`detectionPipeline`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`detection-pipeline`,`detectionPipeline`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`detection-pipeline`,`detectionPipeline`,`applyDeviceSettingsPatch`,`mutation`,e)},pe={getAdminLink:e=>s(`device-admin-link`,`deviceAdminLink`,`getAdminLink`,`query`,e)},me={listDiscovered:e=>s(`device-discovery`,`deviceDiscovery`,`listDiscovered`,`query`,e),refreshDiscovery:e=>s(`device-discovery`,`deviceDiscovery`,`refreshDiscovery`,`mutation`,e),adoptDevice:e=>s(`device-discovery`,`deviceDiscovery`,`adoptDevice`,`mutation`,e),releaseDevice:e=>s(`device-discovery`,`deviceDiscovery`,`releaseDevice`,`mutation`,e),getStatus:e=>s(`device-discovery`,`deviceDiscovery`,`getStatus`,`query`,e)},S={listSources:e=>s(`device-extension`,`deviceExtension`,`listSources`,`query`,e),listSlots:e=>s(`device-extension`,`deviceExtension`,`listSlots`,`query`,e),listCandidates:e=>s(`device-extension`,`deviceExtension`,`listCandidates`,`query`,e),setSlot:e=>s(`device-extension`,`deviceExtension`,`setSlot`,`mutation`,e)},he={getStreamSources:e=>s(`device-ops`,`deviceOps`,`getStreamSources`,`query`,e),getConfigEntries:e=>s(`device-ops`,`deviceOps`,`getConfigEntries`,`query`,e),setConfig:e=>s(`device-ops`,`deviceOps`,`setConfig`,`mutation`,e),runAction:e=>s(`device-ops`,`deviceOps`,`runAction`,`mutation`,e),removeDevice:e=>s(`device-ops`,`deviceOps`,`removeDevice`,`mutation`,e),getSettingsSchema:e=>s(`device-ops`,`deviceOps`,`getSettingsSchema`,`query`,e),getRawState:e=>s(`device-ops`,`deviceOps`,`getRawState`,`query`,e)},ge={getStatus:e=>s(`device-status`,`deviceStatus`,`getStatus`,`query`,e)},_e={getStatus:e=>s(`doorbell`,`doorbell`,`getStatus`,`query`,e)},ve={getStatus:e=>s(`enum-sensor`,`enumSensor`,`getStatus`,`query`,e)},ye={getStatus:e=>s(`event-emitter`,`eventEmitter`,`getStatus`,`query`,e)},be={setPercentage:e=>s(`fan-control`,`fanControl`,`setPercentage`,`mutation`,e),setPreset:e=>s(`fan-control`,`fanControl`,`setPreset`,`mutation`,e),setDirection:e=>s(`fan-control`,`fanControl`,`setDirection`,`mutation`,e),setOscillating:e=>s(`fan-control`,`fanControl`,`setOscillating`,`mutation`,e),getStatus:e=>s(`fan-control`,`fanControl`,`getStatus`,`query`,e)},xe={getStatus:e=>s(`feature-probe`,`featureProbe`,`getStatus`,`query`,e)},Se={getStatus:e=>s(`flood`,`flood`,`getStatus`,`query`,e)},Ce={getStatus:e=>s(`gas`,`gas`,`getStatus`,`query`,e)},we={setOn:e=>s(`humidifier`,`humidifier`,`setOn`,`mutation`,e),setTargetHumidity:e=>s(`humidifier`,`humidifier`,`setTargetHumidity`,`mutation`,e),setMode:e=>s(`humidifier`,`humidifier`,`setMode`,`mutation`,e),getStatus:e=>s(`humidifier`,`humidifier`,`getStatus`,`query`,e)},Te={getStatus:e=>s(`humidity-sensor`,`humiditySensor`,`getStatus`,`query`,e)},Ee={getStatus:e=>s(`image`,`image`,`getStatus`,`query`,e)},De={getOptions:e=>s(`image-settings`,`imageSettings`,`getOptions`,`query`,e),setSettings:e=>s(`image-settings`,`imageSettings`,`setSettings`,`mutation`,e),getStatus:e=>s(`image-settings`,`imageSettings`,`getStatus`,`query`,e)},Oe={startSession:e=>s(`intercom`,`intercom`,`startSession`,`mutation`,e),handleAnswer:e=>s(`intercom`,`intercom`,`handleAnswer`,`mutation`,e),stopSession:e=>s(`intercom`,`intercom`,`stopSession`,`mutation`,e),startTalkSession:e=>s(`intercom`,`intercom`,`startTalkSession`,`mutation`,e),pushTalkAudio:e=>s(`intercom`,`intercom`,`pushTalkAudio`,`mutation`,e),endTalkSession:e=>s(`intercom`,`intercom`,`endTalkSession`,`mutation`,e),getStatus:e=>s(`intercom`,`intercom`,`getStatus`,`query`,e)},ke={startMowing:e=>s(`lawn-mower-control`,`lawnMowerControl`,`startMowing`,`mutation`,e),pause:e=>s(`lawn-mower-control`,`lawnMowerControl`,`pause`,`mutation`,e),dock:e=>s(`lawn-mower-control`,`lawnMowerControl`,`dock`,`mutation`,e),getStatus:e=>s(`lawn-mower-control`,`lawnMowerControl`,`getStatus`,`query`,e)},Ae={lock:e=>s(`lock-control`,`lockControl`,`lock`,`mutation`,e),unlock:e=>s(`lock-control`,`lockControl`,`unlock`,`mutation`,e),open:e=>s(`lock-control`,`lockControl`,`open`,`mutation`,e),getStatus:e=>s(`lock-control`,`lockControl`,`getStatus`,`query`,e)},je={play:e=>s(`media-player`,`mediaPlayer`,`play`,`mutation`,e),pause:e=>s(`media-player`,`mediaPlayer`,`pause`,`mutation`,e),stop:e=>s(`media-player`,`mediaPlayer`,`stop`,`mutation`,e),next:e=>s(`media-player`,`mediaPlayer`,`next`,`mutation`,e),previous:e=>s(`media-player`,`mediaPlayer`,`previous`,`mutation`,e),seek:e=>s(`media-player`,`mediaPlayer`,`seek`,`mutation`,e),setVolume:e=>s(`media-player`,`mediaPlayer`,`setVolume`,`mutation`,e),setMute:e=>s(`media-player`,`mediaPlayer`,`setMute`,`mutation`,e),setShuffle:e=>s(`media-player`,`mediaPlayer`,`setShuffle`,`mutation`,e),setRepeat:e=>s(`media-player`,`mediaPlayer`,`setRepeat`,`mutation`,e),selectSource:e=>s(`media-player`,`mediaPlayer`,`selectSource`,`mutation`,e),playMedia:e=>s(`media-player`,`mediaPlayer`,`playMedia`,`mutation`,e),getStatus:e=>s(`media-player`,`mediaPlayer`,`getStatus`,`query`,e)},Me={isDetected:e=>s(`motion`,`motion`,`isDetected`,`query`,e),getStatus:e=>s(`motion`,`motion`,`getStatus`,`query`,e)},Ne={analyze:e=>s(`motion-detection`,`motionDetection`,`analyze`,`mutation`,e),removeCamera:e=>s(`motion-detection`,`motionDetection`,`removeCamera`,`mutation`,e),reset:e=>s(`motion-detection`,`motionDetection`,`reset`,`mutation`,e),getDeviceSettingsContribution:e=>s(`motion-detection`,`motionDetection`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`motion-detection`,`motionDetection`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`motion-detection`,`motionDetection`,`applyDeviceSettingsPatch`,`mutation`,e)},Pe={setMotionTrigger:e=>s(`motion-trigger`,`motionTrigger`,`setMotionTrigger`,`mutation`,e),getStatus:e=>s(`motion-trigger`,`motionTrigger`,`getStatus`,`query`,e)},Fe={getOptions:e=>s(`motion-zones`,`motionZones`,`getOptions`,`query`,e),setZone:e=>s(`motion-zones`,`motionZones`,`setZone`,`mutation`,e),getStatus:e=>s(`motion-zones`,`motionZones`,`getStatus`,`query`,e)},Ie={getOptions:e=>s(`native-object-detection`,`nativeObjectDetection`,`getOptions`,`query`,e),setSettings:e=>s(`native-object-detection`,`nativeObjectDetection`,`setSettings`,`mutation`,e),setEnabled:e=>s(`native-object-detection`,`nativeObjectDetection`,`setEnabled`,`mutation`,e),getStatus:e=>s(`native-object-detection`,`nativeObjectDetection`,`getStatus`,`query`,e)},Le={move:e=>s(`navigation`,`navigation`,`move`,`mutation`,e),stop:e=>s(`navigation`,`navigation`,`stop`,`mutation`,e),goToPoint:e=>s(`navigation`,`navigation`,`goToPoint`,`mutation`,e),listActions:e=>s(`navigation`,`navigation`,`listActions`,`query`,e),runAction:e=>s(`navigation`,`navigation`,`runAction`,`mutation`,e),playSound:e=>s(`navigation`,`navigation`,`playSound`,`mutation`,e),setLightOn:e=>s(`navigation`,`navigation`,`setLightOn`,`mutation`,e),setLightMode:e=>s(`navigation`,`navigation`,`setLightMode`,`mutation`,e),setLightLevel:e=>s(`navigation`,`navigation`,`setLightLevel`,`mutation`,e),getFeatures:e=>s(`navigation`,`navigation`,`getFeatures`,`query`,e),getStatus:e=>s(`navigation`,`navigation`,`getStatus`,`query`,e)},Re={getStatus:e=>s(`network-link`,`networkLink`,`getStatus`,`query`,e)},ze={send:e=>s(`notifier`,`notifier`,`send`,`mutation`,e),cancel:e=>s(`notifier`,`notifier`,`cancel`,`mutation`,e),getStatus:e=>s(`notifier`,`notifier`,`getStatus`,`query`,e)},Be={getStatus:e=>s(`numeric-sensor`,`numericSensor`,`getStatus`,`query`,e)},Ve={setOverlay:e=>s(`osd`,`osd`,`setOverlay`,`mutation`,e),getStatus:e=>s(`osd`,`osd`,`getStatus`,`query`,e)},He={feed:e=>s(`pet-feeder`,`petFeeder`,`feed`,`mutation`,e),cancelFeed:e=>s(`pet-feeder`,`petFeeder`,`cancelFeed`,`mutation`,e),resetDesiccant:e=>s(`pet-feeder`,`petFeeder`,`resetDesiccant`,`mutation`,e),markFoodReplenished:e=>s(`pet-feeder`,`petFeeder`,`markFoodReplenished`,`mutation`,e),callPet:e=>s(`pet-feeder`,`petFeeder`,`callPet`,`mutation`,e),playSound:e=>s(`pet-feeder`,`petFeeder`,`playSound`,`mutation`,e),setChildLock:e=>s(`pet-feeder`,`petFeeder`,`setChildLock`,`mutation`,e),setIndicatorLight:e=>s(`pet-feeder`,`petFeeder`,`setIndicatorLight`,`mutation`,e),setFeedSound:e=>s(`pet-feeder`,`petFeeder`,`setFeedSound`,`mutation`,e),setVolume:e=>s(`pet-feeder`,`petFeeder`,`setVolume`,`mutation`,e),getStatus:e=>s(`pet-feeder`,`petFeeder`,`getStatus`,`query`,e)},Ue={getActiveTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getActiveTracks`,`query`,e),getTrack:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getTrack`,`query`,e),listTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listTracks`,`query`,e),listRecentTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRecentTracks`,`query`,e),clearTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`clearTracks`,`mutation`,e),getMotionEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getMotionEvents`,`query`,e),getObjectEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getObjectEvents`,`query`,e),getAudioEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getAudioEvents`,`query`,e),listEventKinds:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listEventKinds`,`query`,e),listEventKindsBatch:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listEventKindsBatch`,`query`,e),getSensorEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getSensorEvents`,`query`,e),getKeyEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getKeyEvents`,`query`,e),getKeyEventsBatch:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getKeyEventsBatch`,`query`,e),readLongTermSeries:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`readLongTermSeries`,`query`,e),getEventDensity:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventDensity`,`query`,e),getEventDensityBatch:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventDensityBatch`,`query`,e),pruneEventsBefore:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`pruneEventsBefore`,`mutation`,e),pruneTracksBefore:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`pruneTracksBefore`,`mutation`,e),wipeAllAnalytics:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`wipeAllAnalytics`,`mutation`,e),reconcileFromDisk:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`reconcileFromDisk`,`mutation`,e),deleteTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`deleteTracks`,`mutation`,e),setTrackFlags:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`setTrackFlags`,`mutation`,e),listArchivedDebugNotes:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listArchivedDebugNotes`,`query`,e),setTrackRelation:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`setTrackRelation`,`mutation`,e),clearTrackRelation:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`clearTrackRelation`,`mutation`,e),setTrackPurity:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`setTrackPurity`,`mutation`,e),listTrackRelations:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listTrackRelations`,`query`,e),listBirthDecisions:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listBirthDecisions`,`query`,e),getEventStoreFootprint:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventStoreFootprint`,`query`,e),getEventMediaFootprintByKind:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventMediaFootprintByKind`,`query`,e),pruneEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`pruneEvents`,`mutation`,e),deleteDeviceEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`deleteDeviceEvents`,`mutation`,e),pauseForStorageMigration:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`pauseForStorageMigration`,`mutation`,e),resumeForStorageMigration:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`resumeForStorageMigration`,`mutation`,e),refreshStorageLocationsForMigration:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`refreshStorageLocationsForMigration`,`mutation`,e),startStorageMigrationMove:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`startStorageMigrationMove`,`mutation`,e),getStorageMigrationMoveStatus:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getStorageMigrationMoveStatus`,`query`,e),cancelStorageMigrationMove:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`cancelStorageMigrationMove`,`mutation`,e),relocateMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`relocateMedia`,`mutation`,e),countUnstampedEventMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`countUnstampedEventMedia`,`query`,e),countRelocatableMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`countRelocatableMedia`,`query`,e),listRelocateMediaJobs:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRelocateMediaJobs`,`query`,e),cancelRelocateMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`cancelRelocateMedia`,`mutation`,e),listOpsLog:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listOpsLog`,`query`,e),reclaimDebugMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`reclaimDebugMedia`,`mutation`,e),getMediaReclaimStatus:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getMediaReclaimStatus`,`query`,e),getTrainingExportSummary:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getTrainingExportSummary`,`query`,e),getTrainingExportUrl:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getTrainingExportUrl`,`query`,e),listRetrainStaging:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRetrainStaging`,`query`,e),listRetrainFrames:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRetrainFrames`,`query`,e),selectRetrainFrames:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`selectRetrainFrames`,`mutation`,e),deselectRetrainFrame:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`deselectRetrainFrame`,`mutation`,e),getRetrainFrameImage:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getRetrainFrameImage`,`query`,e),proposeRetrainAnnotations:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`proposeRetrainAnnotations`,`mutation`,e),listRetrainAnnotations:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRetrainAnnotations`,`query`,e),saveRetrainAnnotations:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`saveRetrainAnnotations`,`mutation`,e),completeRetrainTrack:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`completeRetrainTrack`,`mutation`,e),restageRetrainTrack:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`restageRetrainTrack`,`mutation`,e),getRetrainExportUrl:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getRetrainExportUrl`,`query`,e),getEventMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventMedia`,`query`,e),getTrackMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getTrackMedia`,`query`,e),listTrackMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listTrackMedia`,`query`,e),listEventMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listEventMedia`,`query`,e),ownersWithMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`ownersWithMedia`,`query`,e),searchObjectEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`searchObjectEvents`,`query`,e),wipeObjectEmbeddings:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`wipeObjectEmbeddings`,`mutation`,e),rebuildObjectEmbeddings:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`rebuildObjectEmbeddings`,`mutation`,e),getObjectEmbeddingRebuildStatus:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getObjectEmbeddingRebuildStatus`,`query`,e),getDeviceSettingsContribution:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`applyDeviceSettingsPatch`,`mutation`,e)},We={getStatus:e=>s(`power-meter`,`powerMeter`,`getStatus`,`query`,e)},Ge={getStatus:e=>s(`presence`,`presence`,`getStatus`,`query`,e)},Ke={getStatus:e=>s(`pressure-sensor`,`pressureSensor`,`getStatus`,`query`,e)},qe={getOptions:e=>s(`privacy-mask`,`privacyMask`,`getOptions`,`query`,e),setMask:e=>s(`privacy-mask`,`privacyMask`,`setMask`,`mutation`,e),setAudioEnabled:e=>s(`privacy-mask`,`privacyMask`,`setAudioEnabled`,`mutation`,e),getStatus:e=>s(`privacy-mask`,`privacyMask`,`getStatus`,`query`,e)},Je={move:e=>s(`ptz`,`ptz`,`move`,`mutation`,e),continuousMove:e=>s(`ptz`,`ptz`,`continuousMove`,`mutation`,e),stop:e=>s(`ptz`,`ptz`,`stop`,`mutation`,e),getPresets:e=>s(`ptz`,`ptz`,`getPresets`,`query`,e),goToPreset:e=>s(`ptz`,`ptz`,`goToPreset`,`mutation`,e),savePreset:e=>s(`ptz`,`ptz`,`savePreset`,`mutation`,e),deletePreset:e=>s(`ptz`,`ptz`,`deletePreset`,`mutation`,e),getOptions:e=>s(`ptz`,`ptz`,`getOptions`,`query`,e),goHome:e=>s(`ptz`,`ptz`,`goHome`,`mutation`,e),getHomePreset:e=>s(`ptz`,`ptz`,`getHomePreset`,`query`,e),setHomePreset:e=>s(`ptz`,`ptz`,`setHomePreset`,`mutation`,e),captureHomeHere:e=>s(`ptz`,`ptz`,`captureHomeHere`,`mutation`,e),getHomeReturn:e=>s(`ptz`,`ptz`,`getHomeReturn`,`query`,e),setHomeReturn:e=>s(`ptz`,`ptz`,`setHomeReturn`,`mutation`,e),getPosition:e=>s(`ptz`,`ptz`,`getPosition`,`query`,e),setAutofocus:e=>s(`ptz`,`ptz`,`setAutofocus`,`mutation`,e),getStatus:e=>s(`ptz`,`ptz`,`getStatus`,`query`,e)},Ye={getStatus:e=>s(`ptz-autotrack`,`ptzAutotrack`,`getStatus`,`query`,e),setEnabled:e=>s(`ptz-autotrack`,`ptzAutotrack`,`setEnabled`,`mutation`,e),getSettings:e=>s(`ptz-autotrack`,`ptzAutotrack`,`getSettings`,`query`,e),setSettings:e=>s(`ptz-autotrack`,`ptzAutotrack`,`setSettings`,`mutation`,e)},Xe={reboot:e=>s(`reboot`,`reboot`,`reboot`,`mutation`,e)},Ze={listSources:e=>s(`recording`,`recording`,`listSources`,`query`,e),getAvailability:e=>s(`recording`,`recording`,`getAvailability`,`query`,e),getDaysWithRecordings:e=>s(`recording`,`recording`,`getDaysWithRecordings`,`query`,e),getPlayback:e=>s(`recording`,`recording`,`getPlayback`,`query`,e),getPlaybackOptions:e=>s(`recording`,`recording`,`getPlaybackOptions`,`query`,e)},Qe={getOptions:e=>s(`recording-onboard`,`recordingOnboard`,`getOptions`,`query`,e),setSettings:e=>s(`recording-onboard`,`recordingOnboard`,`setSettings`,`mutation`,e),getStatus:e=>s(`recording-onboard`,`recordingOnboard`,`getStatus`,`query`,e)},$e={getStatus:e=>s(`recording-signal`,`recordingSignal`,`getStatus`,`query`,e)},et={listScenes:e=>s(`scene-monitor`,`sceneMonitor`,`listScenes`,`query`,e),listScenesBatch:e=>s(`scene-monitor`,`sceneMonitor`,`listScenesBatch`,`query`,e),createScene:e=>s(`scene-monitor`,`sceneMonitor`,`createScene`,`mutation`,e),updateScene:e=>s(`scene-monitor`,`sceneMonitor`,`updateScene`,`mutation`,e),deleteScene:e=>s(`scene-monitor`,`sceneMonitor`,`deleteScene`,`mutation`,e),captureReference:e=>s(`scene-monitor`,`sceneMonitor`,`captureReference`,`mutation`,e),deleteReference:e=>s(`scene-monitor`,`sceneMonitor`,`deleteReference`,`mutation`,e),recheckNow:e=>s(`scene-monitor`,`sceneMonitor`,`recheckNow`,`mutation`,e),resetScene:e=>s(`scene-monitor`,`sceneMonitor`,`resetScene`,`mutation`,e),getStatus:e=>s(`scene-monitor`,`sceneMonitor`,`getStatus`,`query`,e)},tt={run:e=>s(`script-runner`,`scriptRunner`,`run`,`mutation`,e),stop:e=>s(`script-runner`,`scriptRunner`,`stop`,`mutation`,e),getStatus:e=>s(`script-runner`,`scriptRunner`,`getStatus`,`query`,e)},nt={getStatus:e=>s(`smoke`,`smoke`,`getStatus`,`query`,e)},rt={getSnapshot:e=>s(`snapshot`,`snapshot`,`getSnapshot`,`query`,e),invalidateCache:e=>s(`snapshot`,`snapshot`,`invalidateCache`,`mutation`,e),getSnapshotOverview:e=>s(`snapshot`,`snapshot`,`getSnapshotOverview`,`query`,e),getDebugState:e=>s(`snapshot`,`snapshot`,`getDebugState`,`query`,e),getSnapshotLinks:e=>s(`snapshot`,`snapshot`,`getSnapshotLinks`,`query`,e),getStatus:e=>s(`snapshot`,`snapshot`,`getStatus`,`query`,e),getDeviceSettingsContribution:e=>s(`snapshot`,`snapshot`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`snapshot`,`snapshot`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`snapshot`,`snapshot`,`applyDeviceSettingsPatch`,`mutation`,e)},C={getCatalog:e=>s(`stream-catalog`,`streamCatalog`,`getCatalog`,`query`,e)},it={getOptions:e=>s(`stream-params`,`streamParams`,`getOptions`,`query`,e),setProfile:e=>s(`stream-params`,`streamParams`,`setProfile`,`mutation`,e),getConfigSchema:e=>s(`stream-params`,`streamParams`,`getConfigSchema`,`query`,e),getStatus:e=>s(`stream-params`,`streamParams`,`getStatus`,`query`,e)},at={listSignals:e=>s(`stream-signals`,`streamSignals`,`listSignals`,`query`,e)},ot={setState:e=>s(`switch`,`switch`,`setState`,`mutation`,e),getStatus:e=>s(`switch`,`switch`,`getStatus`,`query`,e)},st={getStatus:e=>s(`tamper`,`tamper`,`getStatus`,`query`,e)},ct={getStatus:e=>s(`temperature-sensor`,`temperatureSensor`,`getStatus`,`query`,e)},lt={installUpdate:e=>s(`update`,`update`,`installUpdate`,`mutation`,e),getStatus:e=>s(`update`,`update`,`getStatus`,`query`,e)},ut={start:e=>s(`vacuum-control`,`vacuumControl`,`start`,`mutation`,e),pause:e=>s(`vacuum-control`,`vacuumControl`,`pause`,`mutation`,e),stop:e=>s(`vacuum-control`,`vacuumControl`,`stop`,`mutation`,e),returnToBase:e=>s(`vacuum-control`,`vacuumControl`,`returnToBase`,`mutation`,e),locate:e=>s(`vacuum-control`,`vacuumControl`,`locate`,`mutation`,e),setFanSpeed:e=>s(`vacuum-control`,`vacuumControl`,`setFanSpeed`,`mutation`,e),getStatus:e=>s(`vacuum-control`,`vacuumControl`,`getStatus`,`query`,e)},dt={open:e=>s(`valve`,`valve`,`open`,`mutation`,e),close:e=>s(`valve`,`valve`,`close`,`mutation`,e),stop:e=>s(`valve`,`valve`,`stop`,`mutation`,e),setPosition:e=>s(`valve`,`valve`,`setPosition`,`mutation`,e),getStatus:e=>s(`valve`,`valve`,`getStatus`,`query`,e)},ft={getStatus:e=>s(`vibration`,`vibration`,`getStatus`,`query`,e)},pt={listClips:e=>s(`videoclips`,`videoclips`,`listClips`,`query`,e),listSources:e=>s(`videoclips`,`videoclips`,`listSources`,`query`,e),getClipPlayback:e=>s(`videoclips`,`videoclips`,`getClipPlayback`,`query`,e),readClipBytes:e=>s(`videoclips`,`videoclips`,`readClipBytes`,`query`,e),offerClipBytes:e=>s(`videoclips`,`videoclips`,`offerClipBytes`,`query`,e),dialClipStream:e=>s(`videoclips`,`videoclips`,`dialClipStream`,`query`,e),getPlaybackOptions:e=>s(`videoclips`,`videoclips`,`getPlaybackOptions`,`query`,e)},mt={setTargetTemp:e=>s(`water-heater`,`waterHeater`,`setTargetTemp`,`mutation`,e),setOperationMode:e=>s(`water-heater`,`waterHeater`,`setOperationMode`,`mutation`,e),setAway:e=>s(`water-heater`,`waterHeater`,`setAway`,`mutation`,e),getStatus:e=>s(`water-heater`,`waterHeater`,`getStatus`,`query`,e)},ht={getStatus:e=>s(`weather`,`weather`,`getStatus`,`query`,e)},gt={listStreams:e=>s(`webrtc-session`,`webrtcSession`,`listStreams`,`query`,e),createSession:e=>s(`webrtc-session`,`webrtcSession`,`createSession`,`mutation`,e),handleOffer:e=>s(`webrtc-session`,`webrtcSession`,`handleOffer`,`mutation`,e),handleAnswer:e=>s(`webrtc-session`,`webrtcSession`,`handleAnswer`,`mutation`,e),addIceCandidate:e=>s(`webrtc-session`,`webrtcSession`,`addIceCandidate`,`mutation`,e),getIceCandidates:e=>s(`webrtc-session`,`webrtcSession`,`getIceCandidates`,`query`,e),closeSession:e=>s(`webrtc-session`,`webrtcSession`,`closeSession`,`mutation`,e),hasAdaptiveBitrate:e=>s(`webrtc-session`,`webrtcSession`,`hasAdaptiveBitrate`,`query`,e),getSessionState:e=>s(`webrtc-session`,`webrtcSession`,`getSessionState`,`query`,e),applyDownlinkProbe:e=>s(`webrtc-session`,`webrtcSession`,`applyDownlinkProbe`,`mutation`,e),getSessionDebug:e=>s(`webrtc-session`,`webrtcSession`,`getSessionDebug`,`query`,e)},_t={getCurrentSnapshot:e=>s(`zone-analytics`,`zoneAnalytics`,`getCurrentSnapshot`,`query`,e),getCurrentSnapshotBatch:e=>s(`zone-analytics`,`zoneAnalytics`,`getCurrentSnapshotBatch`,`query`,e),getZoneHistory:e=>s(`zone-analytics`,`zoneAnalytics`,`getZoneHistory`,`query`,e),getCameraHistory:e=>s(`zone-analytics`,`zoneAnalytics`,`getCameraHistory`,`query`,e),getUnzonedHistory:e=>s(`zone-analytics`,`zoneAnalytics`,`getUnzonedHistory`,`query`,e)},vt={listRules:e=>s(`zone-rules`,`zoneRules`,`listRules`,`query`,e),setRules:e=>s(`zone-rules`,`zoneRules`,`setRules`,`mutation`,e)},w={listZones:e=>s(`zones`,`zones`,`listZones`,`query`,e),addZone:e=>s(`zones`,`zones`,`addZone`,`mutation`,e),removeZone:e=>s(`zones`,`zones`,`removeZone`,`mutation`,e),updateZone:e=>s(`zones`,`zones`,`updateZone`,`mutation`,e)},yt={getDeviceSettings:e=>c(`addonSettings`,`getDeviceSettings`,`query`,e),updateDeviceSettings:e=>c(`addonSettings`,`updateDeviceSettings`,`mutation`,e)},bt={detachDevice:e=>c(`audioAnalyzer`,`detachDevice`,`mutation`,e)},xt={getStatus:e=>c(`deviceAdoption`,`getStatus`,`query`,e)},St={getDeviceSettingsContribution:e=>c(`deviceExport`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>c(`deviceExport`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>c(`deviceExport`,`applyDeviceSettingsPatch`,`mutation`,e)},Ct={loadConfig:e=>c(`deviceManager`,`loadConfig`,`query`,e),loadRuntimeState:e=>c(`deviceManager`,`loadRuntimeState`,`query`,e),loadMeta:e=>c(`deviceManager`,`loadMeta`,`query`,e),setName:e=>c(`deviceManager`,`setName`,`mutation`,e),setLocation:e=>c(`deviceManager`,`setLocation`,`mutation`,e),setType:e=>c(`deviceManager`,`setType`,`mutation`,e),setIntegrationId:e=>c(`deviceManager`,`setIntegrationId`,`mutation`,e),setLinkDeviceId:e=>c(`deviceManager`,`setLinkDeviceId`,`mutation`,e),setPrimaryChildEntityId:e=>c(`deviceManager`,`setPrimaryChildEntityId`,`mutation`,e),setChildLayout:e=>c(`deviceManager`,`setChildLayout`,`mutation`,e),setDisplay:e=>c(`deviceManager`,`setDisplay`,`mutation`,e),getWireableFields:e=>c(`deviceManager`,`getWireableFields`,`query`,e),setRole:e=>c(`deviceManager`,`setRole`,`mutation`,e),applyInitialMeta:e=>c(`deviceManager`,`applyInitialMeta`,`mutation`,e),setMetadata:e=>c(`deviceManager`,`setMetadata`,`mutation`,e),setDisabled:e=>c(`deviceManager`,`setDisabled`,`mutation`,e),getDevice:e=>c(`deviceManager`,`getDevice`,`query`,e),getLinkedDevices:e=>c(`deviceManager`,`getLinkedDevices`,`query`,e),getStreamSources:e=>c(`deviceManager`,`getStreamSources`,`query`,e),getConfigSchema:e=>c(`deviceManager`,`getConfigSchema`,`query`,e),getSettingsSchema:e=>c(`deviceManager`,`getSettingsSchema`,`query`,e),updateConfig:e=>c(`deviceManager`,`updateConfig`,`mutation`,e),enable:e=>c(`deviceManager`,`enable`,`mutation`,e),disable:e=>c(`deviceManager`,`disable`,`mutation`,e),remove:e=>c(`deviceManager`,`remove`,`mutation`,e),getStreamProfileMap:e=>c(`deviceManager`,`getStreamProfileMap`,`query`,e),setStreamProfileMap:e=>c(`deviceManager`,`setStreamProfileMap`,`mutation`,e),probeStreams:e=>c(`deviceManager`,`probeStreams`,`mutation`,e),getBindings:e=>c(`deviceManager`,`getBindings`,`query`,e),setWrapperActive:e=>c(`deviceManager`,`setWrapperActive`,`mutation`,e),getWrapperActivation:e=>c(`deviceManager`,`getWrapperActivation`,`query`,e),getDeviceSettingsAggregate:e=>c(`deviceManager`,`getDeviceSettingsAggregate`,`query`,e),getDeviceLiveInfoAggregate:e=>c(`deviceManager`,`getDeviceLiveInfoAggregate`,`query`,e),getDeviceAggregate:e=>c(`deviceManager`,`getDeviceAggregate`,`query`,e),runDeviceAction:e=>c(`deviceManager`,`runDeviceAction`,`mutation`,e),updateDeviceField:e=>c(`deviceManager`,`updateDeviceField`,`mutation`,e),updateDeviceFieldsBatch:e=>c(`deviceManager`,`updateDeviceFieldsBatch`,`mutation`,e),testField:e=>c(`deviceManager`,`testField`,`mutation`,e),getDeviceStatusAggregate:e=>c(`deviceManager`,`getDeviceStatusAggregate`,`query`,e)},wt={getSnapshot:e=>c(`deviceState`,`getSnapshot`,`query`,e),getCapSlice:e=>c(`deviceState`,`getCapSlice`,`query`,e),setCapSlice:e=>c(`deviceState`,`setCapSlice`,`mutation`,e),claimFields:e=>c(`deviceState`,`claimFields`,`mutation`,e),patchOwnedFields:e=>c(`deviceState`,`patchOwnedFields`,`mutation`,e),releaseClaim:e=>c(`deviceState`,`releaseClaim`,`mutation`,e),getNativeCapSlice:e=>c(`deviceState`,`getNativeCapSlice`,`query`,e)},Tt={listRecentFaces:e=>c(`faceGallery`,`listRecentFaces`,`query`,e),getFaceByTrack:e=>c(`faceGallery`,`getFaceByTrack`,`query`,e)},Et={getDeviceStats:e=>c(`networkQuality`,`getDeviceStats`,`query`,e),reportClientStats:e=>c(`networkQuality`,`reportClientStats`,`mutation`,e)},Dt={setDeviceMuted:e=>c(`notificationRules`,`setDeviceMuted`,`mutation`,e)},Ot={getDeviceOsd:e=>c(`osdManager`,`getDeviceOsd`,`query`,e),getSourceCatalog:e=>c(`osdManager`,`getSourceCatalog`,`query`,e),setSlotBinding:e=>c(`osdManager`,`setSlotBinding`,`mutation`,e),clearSlotBinding:e=>c(`osdManager`,`clearSlotBinding`,`mutation`,e),previewSlot:e=>c(`osdManager`,`previewSlot`,`mutation`,e),renderDevice:e=>c(`osdManager`,`renderDevice`,`mutation`,e)},kt={runPipeline:e=>c(`pipelineExecutor`,`runPipeline`,`mutation`,e),runPipelineBatch:e=>c(`pipelineExecutor`,`runPipelineBatch`,`mutation`,e)},At={assignPipeline:e=>c(`pipelineOrchestrator`,`assignPipeline`,`mutation`,e),unassignPipeline:e=>c(`pipelineOrchestrator`,`unassignPipeline`,`mutation`,e),setPipelineDevicePin:e=>c(`pipelineOrchestrator`,`setPipelineDevicePin`,`mutation`,e),getPipelineDevicePin:e=>c(`pipelineOrchestrator`,`getPipelineDevicePin`,`query`,e),getPipelineAssignment:e=>c(`pipelineOrchestrator`,`getPipelineAssignment`,`query`,e),getCameraMetrics:e=>c(`pipelineOrchestrator`,`getCameraMetrics`,`query`,e),assignAudio:e=>c(`pipelineOrchestrator`,`assignAudio`,`mutation`,e),unassignAudio:e=>c(`pipelineOrchestrator`,`unassignAudio`,`mutation`,e),getAudioAssignment:e=>c(`pipelineOrchestrator`,`getAudioAssignment`,`query`,e),getCameraSettings:e=>c(`pipelineOrchestrator`,`getCameraSettings`,`query`,e),setCameraStepToggle:e=>c(`pipelineOrchestrator`,`setCameraStepToggle`,`mutation`,e),getCameraStepOverrides:e=>c(`pipelineOrchestrator`,`getCameraStepOverrides`,`query`,e),setCameraStepOverride:e=>c(`pipelineOrchestrator`,`setCameraStepOverride`,`mutation`,e),setCameraPipelineForAgent:e=>c(`pipelineOrchestrator`,`setCameraPipelineForAgent`,`mutation`,e),resolvePipeline:e=>c(`pipelineOrchestrator`,`resolvePipeline`,`query`,e),getCameraSwitches:e=>c(`pipelineOrchestrator`,`getCameraSwitches`,`query`,e),setCameraSwitch:e=>c(`pipelineOrchestrator`,`setCameraSwitch`,`mutation`,e),getCameraStatus:e=>c(`pipelineOrchestrator`,`getCameraStatus`,`query`,e),getDeviceSettingsContribution:e=>c(`pipelineOrchestrator`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>c(`pipelineOrchestrator`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>c(`pipelineOrchestrator`,`applyDeviceSettingsPatch`,`mutation`,e)},jt={detachCamera:e=>c(`pipelineRunner`,`detachCamera`,`mutation`,e),getCameraMetrics:e=>c(`pipelineRunner`,`getCameraMetrics`,`query`,e),requestOccupancyBurst:e=>c(`pipelineRunner`,`requestOccupancyBurst`,`mutation`,e),runDetailSubtree:e=>c(`pipelineRunner`,`runDetailSubtree`,`mutation`,e),parkTrackFrame:e=>c(`pipelineRunner`,`parkTrackFrame`,`mutation`,e),getParkedTrackFrame:e=>c(`pipelineRunner`,`getParkedTrackFrame`,`query`,e),releaseParkedTrackFrames:e=>c(`pipelineRunner`,`releaseParkedTrackFrames`,`mutation`,e)},Mt={listPlates:e=>c(`plateGallery`,`listPlates`,`query`,e),getPlateByTrack:e=>c(`plateGallery`,`getPlateByTrack`,`query`,e)},Nt={getDeviceConfig:e=>c(`recordingArchive`,`getDeviceConfig`,`query`,e),locateSegment:e=>c(`recordingArchive`,`locateSegment`,`query`,e),readSegmentBytes:e=>c(`recordingArchive`,`readSegmentBytes`,`query`,e),readGopBytes:e=>c(`recordingArchive`,`readGopBytes`,`query`,e),readWindowBytes:e=>c(`recordingArchive`,`readWindowBytes`,`query`,e),setDeviceConfig:e=>c(`recordingArchive`,`setDeviceConfig`,`mutation`,e),rescanStorage:e=>c(`recordingArchive`,`rescanStorage`,`mutation`,e),pruneFootage:e=>c(`recordingArchive`,`pruneFootage`,`mutation`,e),deleteFootprint:e=>c(`recordingArchive`,`deleteFootprint`,`mutation`,e),renderGif:e=>c(`recordingArchive`,`renderGif`,`mutation`,e),renderClip:e=>c(`recordingArchive`,`renderClip`,`mutation`,e),getStatus:e=>c(`recordingArchive`,`getStatus`,`query`,e),getDeviceSettingsContribution:e=>c(`recordingArchive`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>c(`recordingArchive`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>c(`recordingArchive`,`applyDeviceSettingsPatch`,`mutation`,e)},Pt={listExports:e=>c(`recordingExport`,`listExports`,`query`,e)},Ft={reportStreamSignal:e=>c(`streamBroker`,`reportStreamSignal`,`mutation`,e),publishCameraStream:e=>c(`streamBroker`,`publishCameraStream`,`mutation`,e),retractCameraStream:e=>c(`streamBroker`,`retractCameraStream`,`mutation`,e),assignProfile:e=>c(`streamBroker`,`assignProfile`,`mutation`,e),unassignProfile:e=>c(`streamBroker`,`unassignProfile`,`mutation`,e),forgetDeviceHardware:e=>c(`streamBroker`,`forgetDeviceHardware`,`mutation`,e),renderPreBufferClip:e=>c(`streamBroker`,`renderPreBufferClip`,`mutation`,e),produceEventMedia:e=>c(`streamBroker`,`produceEventMedia`,`mutation`,e),restartProfile:e=>c(`streamBroker`,`restartProfile`,`mutation`,e),getDeviceAudioMute:e=>c(`streamBroker`,`getDeviceAudioMute`,`query`,e),setDeviceAudioMute:e=>c(`streamBroker`,`setDeviceAudioMute`,`mutation`,e),getDeviceSettingsContribution:e=>c(`streamBroker`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>c(`streamBroker`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>c(`streamBroker`,`applyDeviceSettingsPatch`,`mutation`,e)};return{deviceId:t.deviceId,binding:t,state:{airQualitySensor:E(i,t.deviceId,`air-quality-sensor`),alarmPanel:E(i,t.deviceId,`alarm-panel`),ambientLightSensor:E(i,t.deviceId,`ambient-light-sensor`),audioMetrics:E(i,t.deviceId,`audio-metrics`),automationControl:E(i,t.deviceId,`automation-control`),battery:E(i,t.deviceId,`battery`),binary:E(i,t.deviceId,`binary`),brightness:E(i,t.deviceId,`brightness`),cameraStreams:E(i,t.deviceId,`camera-streams`),carbonMonoxide:E(i,t.deviceId,`carbon-monoxide`),climateControl:E(i,t.deviceId,`climate-control`),color:E(i,t.deviceId,`color`),connectivity:E(i,t.deviceId,`connectivity`),consumables:E(i,t.deviceId,`consumables`),contact:E(i,t.deviceId,`contact`),control:E(i,t.deviceId,`control`),cover:E(i,t.deviceId,`cover`),dayNight:E(i,t.deviceId,`day-night`),deviceDiscovery:E(i,t.deviceId,`device-discovery`),deviceStatus:E(i,t.deviceId,`device-status`),doorbell:E(i,t.deviceId,`doorbell`),enumSensor:E(i,t.deviceId,`enum-sensor`),eventEmitter:E(i,t.deviceId,`event-emitter`),fanControl:E(i,t.deviceId,`fan-control`),featureProbe:E(i,t.deviceId,`feature-probe`),flood:E(i,t.deviceId,`flood`),gas:E(i,t.deviceId,`gas`),humidifier:E(i,t.deviceId,`humidifier`),humiditySensor:E(i,t.deviceId,`humidity-sensor`),image:E(i,t.deviceId,`image`),imageSettings:E(i,t.deviceId,`image-settings`),intercom:E(i,t.deviceId,`intercom`),lawnMowerControl:E(i,t.deviceId,`lawn-mower-control`),lockControl:E(i,t.deviceId,`lock-control`),mediaPlayer:E(i,t.deviceId,`media-player`),motion:E(i,t.deviceId,`motion`),motionTrigger:E(i,t.deviceId,`motion-trigger`),motionZones:E(i,t.deviceId,`motion-zones`),nativeObjectDetection:E(i,t.deviceId,`native-object-detection`),navigation:E(i,t.deviceId,`navigation`),networkLink:E(i,t.deviceId,`network-link`),notifier:E(i,t.deviceId,`notifier`),numericSensor:E(i,t.deviceId,`numeric-sensor`),petFeeder:E(i,t.deviceId,`pet-feeder`),powerMeter:E(i,t.deviceId,`power-meter`),presence:E(i,t.deviceId,`presence`),pressureSensor:E(i,t.deviceId,`pressure-sensor`),privacyMask:E(i,t.deviceId,`privacy-mask`),ptzAutotrack:E(i,t.deviceId,`ptz-autotrack`),recordingOnboard:E(i,t.deviceId,`recording-onboard`),recordingSignal:E(i,t.deviceId,`recording-signal`),sceneMonitor:E(i,t.deviceId,`scene-monitor`),scriptRunner:E(i,t.deviceId,`script-runner`),smoke:E(i,t.deviceId,`smoke`),streamCatalog:E(i,t.deviceId,`stream-catalog`),streamParams:E(i,t.deviceId,`stream-params`),streamSignals:E(i,t.deviceId,`stream-signals`),switch:E(i,t.deviceId,`switch`),tamper:E(i,t.deviceId,`tamper`),temperatureSensor:E(i,t.deviceId,`temperature-sensor`),update:E(i,t.deviceId,`update`),vacuumControl:E(i,t.deviceId,`vacuum-control`),valve:E(i,t.deviceId,`valve`),vibration:E(i,t.deviceId,`vibration`),waterHeater:E(i,t.deviceId,`water-heater`),weather:E(i,t.deviceId,`weather`),zoneAnalytics:E(i,t.deviceId,`zone-analytics`),zoneRules:E(i,t.deviceId,`zone-rules`),zones:E(i,t.deviceId,`zones`)},...l(`accessories`)?{accessories:u}:{},...l(`air-quality-sensor`)?{airQualitySensor:d}:{},...l(`alarm-panel`)?{alarmPanel:f}:{},...l(`ambient-light-sensor`)?{ambientLightSensor:p}:{},...l(`audio-analysis`)?{audioAnalysis:m}:{},...l(`audio-metrics`)?{audioMetrics:h}:{},...l(`automation-control`)?{automationControl:g}:{},...l(`battery`)?{battery:ee}:{},...l(`binary`)?{binary:te}:{},...l(`brightness`)?{brightness:ne}:{},...l(`button`)?{button:_}:{},...l(`camera-credentials`)?{cameraCredentials:re}:{},...l(`camera-grid-layout`)?{cameraGridLayout:ie}:{},...l(`camera-pipeline-config`)?{cameraPipelineConfig:v}:{},...l(`camera-streams`)?{cameraStreams:ae}:{},...l(`carbon-monoxide`)?{carbonMonoxide:oe}:{},...l(`climate-control`)?{climateControl:y}:{},...l(`color`)?{color:se}:{},...l(`connectivity`)?{connectivity:ce}:{},...l(`consumables`)?{consumables:b}:{},...l(`contact`)?{contact:le}:{},...l(`control`)?{control:ue}:{},...l(`cover`)?{cover:de}:{},...l(`day-night`)?{dayNight:fe}:{},...l(`detection-pipeline`)?{detectionPipeline:x}:{},...l(`device-admin-link`)?{deviceAdminLink:pe}:{},...l(`device-discovery`)?{deviceDiscovery:me}:{},...l(`device-extension`)?{deviceExtension:S}:{},...l(`device-ops`)?{deviceOps:he}:{},...l(`device-status`)?{deviceStatus:ge}:{},...l(`doorbell`)?{doorbell:_e}:{},...l(`enum-sensor`)?{enumSensor:ve}:{},...l(`event-emitter`)?{eventEmitter:ye}:{},...l(`fan-control`)?{fanControl:be}:{},...l(`feature-probe`)?{featureProbe:xe}:{},...l(`flood`)?{flood:Se}:{},...l(`gas`)?{gas:Ce}:{},...l(`humidifier`)?{humidifier:we}:{},...l(`humidity-sensor`)?{humiditySensor:Te}:{},...l(`image`)?{image:Ee}:{},...l(`image-settings`)?{imageSettings:De}:{},...l(`intercom`)?{intercom:Oe}:{},...l(`lawn-mower-control`)?{lawnMowerControl:ke}:{},...l(`lock-control`)?{lockControl:Ae}:{},...l(`media-player`)?{mediaPlayer:je}:{},...l(`motion`)?{motion:Me}:{},...l(`motion-detection`)?{motionDetection:Ne}:{},...l(`motion-trigger`)?{motionTrigger:Pe}:{},...l(`motion-zones`)?{motionZones:Fe}:{},...l(`native-object-detection`)?{nativeObjectDetection:Ie}:{},...l(`navigation`)?{navigation:Le}:{},...l(`network-link`)?{networkLink:Re}:{},...l(`notifier`)?{notifier:ze}:{},...l(`numeric-sensor`)?{numericSensor:Be}:{},...l(`osd`)?{osd:Ve}:{},...l(`pet-feeder`)?{petFeeder:He}:{},...l(`pipeline-analytics`)?{pipelineAnalytics:Ue}:{},...l(`power-meter`)?{powerMeter:We}:{},...l(`presence`)?{presence:Ge}:{},...l(`pressure-sensor`)?{pressureSensor:Ke}:{},...l(`privacy-mask`)?{privacyMask:qe}:{},...l(`ptz`)?{ptz:Je}:{},...l(`ptz-autotrack`)?{ptzAutotrack:Ye}:{},...l(`reboot`)?{reboot:Xe}:{},...l(`recording`)?{recording:Ze}:{},...l(`recording-onboard`)?{recordingOnboard:Qe}:{},...l(`recording-signal`)?{recordingSignal:$e}:{},...l(`scene-monitor`)?{sceneMonitor:et}:{},...l(`script-runner`)?{scriptRunner:tt}:{},...l(`smoke`)?{smoke:nt}:{},...l(`snapshot`)?{snapshot:rt}:{},...l(`stream-catalog`)?{streamCatalog:C}:{},...l(`stream-params`)?{streamParams:it}:{},...l(`stream-signals`)?{streamSignals:at}:{},...l(`switch`)?{switch:ot}:{},...l(`tamper`)?{tamper:st}:{},...l(`temperature-sensor`)?{temperatureSensor:ct}:{},...l(`update`)?{update:lt}:{},...l(`vacuum-control`)?{vacuumControl:ut}:{},...l(`valve`)?{valve:dt}:{},...l(`vibration`)?{vibration:ft}:{},...l(`videoclips`)?{videoclips:pt}:{},...l(`water-heater`)?{waterHeater:mt}:{},...l(`weather`)?{weather:ht}:{},...l(`webrtc-session`)?{webrtcSession:gt}:{},...l(`zone-analytics`)?{zoneAnalytics:_t}:{},...l(`zone-rules`)?{zoneRules:vt}:{},...l(`zones`)?{zones:w}:{},addonSettings:yt,audioAnalyzer:bt,deviceAdoption:xt,deviceExport:St,deviceManager:Ct,deviceState:wt,faceGallery:Tt,networkQuality:Et,notificationRules:Dt,osdManager:Ot,pipelineExecutor:kt,pipelineOrchestrator:At,pipelineRunner:jt,plateGallery:Mt,recordingArchive:Nt,recordingExport:Pt,streamBroker:Ft}}var xn=new Set(`accessories.air-quality-sensor.alarm-panel.ambient-light-sensor.audio-analysis.audio-metrics.automation-control.battery.binary.brightness.button.camera-credentials.camera-grid-layout.camera-pipeline-config.camera-streams.carbon-monoxide.climate-control.color.connectivity.consumables.contact.control.cover.day-night.detection-pipeline.device-admin-link.device-discovery.device-extension.device-ops.device-status.doorbell.enum-sensor.event-emitter.fan-control.feature-probe.flood.gas.humidifier.humidity-sensor.image.image-settings.intercom.lawn-mower-control.lock-control.media-player.motion.motion-detection.motion-trigger.motion-zones.native-object-detection.navigation.network-link.notifier.numeric-sensor.osd.pet-feeder.pipeline-analytics.power-meter.presence.pressure-sensor.privacy-mask.ptz.ptz-autotrack.reboot.recording.recording-onboard.recording-signal.scene-monitor.script-runner.smoke.snapshot.stream-catalog.stream-params.stream-signals.switch.tamper.temperature-sensor.update.vacuum-control.valve.vibration.videoclips.water-heater.weather.webrtc-session.zone-analytics.zone-rules.zones`.split(`.`));function Sn(e){return xn.has(e)}var Cn=[15e3,6e4,5*6e4,15*6e4,30*6e4,60*6e4,90*6e4];function wn(e){return JSON.parse(e)}function Tn(e){return typeof e!=`object`||!e||Array.isArray(e)?null:{...e}}function En(e){return Array.isArray(e)?e:[]}function Dn(e,t=``){return typeof e==`string`?e:t}function On(e,t=0){return typeof e==`number`?e:t}function kn(e,t=!1){return typeof e==`boolean`?e:t}function An(e){try{return Tn(wn(e))}catch{return null}}function jn(e){try{let t=wn(e);return Array.isArray(t)?t:null}catch{return null}}function Mn(e){return new Promise(t=>setTimeout(t,Math.max(0,e)))}function Nn(e,t){return t.aborted?Promise.resolve():new Promise(n=>{let r=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},Math.max(0,e)),i=()=>{clearTimeout(r),t.removeEventListener(`abort`,i),n()};t.addEventListener(`abort`,i,{once:!0})})}var D=function(e){return e.Camera=`camera`,e.Hub=`hub`,e.Light=`light`,e.Siren=`siren`,e.Switch=`switch`,e.Sensor=`sensor`,e.Thermostat=`thermostat`,e.Climate=`climate`,e.Button=`button`,e.EventEmitter=`event-emitter`,e.Update=`update`,e.Generic=`generic`,e.Notifier=`notifier`,e.Script=`script`,e.Automation=`automation`,e.Lock=`lock`,e.Cover=`cover`,e.Valve=`valve`,e.Humidifier=`humidifier`,e.WaterHeater=`water-heater`,e.Fan=`fan`,e.MediaPlayer=`media-player`,e.AlarmPanel=`alarm-panel`,e.Control=`control`,e.Presence=`presence`,e.Weather=`weather`,e.Vacuum=`vacuum`,e.LawnMower=`lawn-mower`,e.Container=`container`,e.Image=`image`,e.PetFeeder=`pet-feeder`,e}({}),Pn=function(e){return e.BatteryOperated=`battery-operated`,e.Rebootable=`rebootable`,e.Resyncable=`resyncable`,e.NativeSnapshot=`native-snapshot`,e.DoorbellButton=`doorbell-button`,e.TwoWayAudio=`two-way-audio`,e.PanTiltZoom=`pan-tilt-zoom`,e.PtzAutotrack=`ptz-autotrack`,e.MotionTrigger=`motion-trigger`,e.LightColorRgb=`light-color-rgb`,e.LightColorHsv=`light-color-hsv`,e.LightColorMired=`light-color-mired`,e.ClimateDualSetpoint=`climate-dual-setpoint`,e.ClimateHumidity=`climate-humidity`,e.ClimateFanMode=`climate-fan-mode`,e.ClimatePreset=`climate-preset`,e.ClimateSwingVertical=`climate-swing-vertical`,e.ClimateSwingHorizontal=`climate-swing-horizontal`,e.CoverPositionable=`cover-positionable`,e.CoverTilt=`cover-tilt`,e.ValvePositionable=`valve-positionable`,e.FanSpeed=`fan-speed`,e.FanPreset=`fan-preset`,e.FanDirection=`fan-direction`,e.FanOscillating=`fan-oscillating`,e.LockPinRequired=`lock-pin-required`,e.LockOpen=`lock-open`,e.MediaPlayerSeek=`media-player-seek`,e.MediaPlayerVolume=`media-player-volume`,e.MediaPlayerMute=`media-player-mute`,e.MediaPlayerShuffle=`media-player-shuffle`,e.MediaPlayerRepeat=`media-player-repeat`,e.MediaPlayerSelectSource=`media-player-select-source`,e.MediaPlayerPlayMedia=`media-player-play-media`,e.MediaPlayerNext=`media-player-next`,e.MediaPlayerPrevious=`media-player-previous`,e.MediaPlayerStop=`media-player-stop`,e.AlarmPinRequired=`alarm-pin-required`,e.PresenceGps=`presence-gps`,e.NotifierImage=`notifier-image`,e.NotifierPriority=`notifier-priority`,e.NotifierData=`notifier-data`,e.NotifierActions=`notifier-actions`,e.NotifierRecipients=`notifier-recipients`,e.ScriptVariables=`script-variables`,e.AutomationSkipCondition=`automation-skip-condition`,e.VacuumHasMap=`vacuum-has-map`,e.VacuumHasAi=`vacuum-has-ai`,e.MowerHasMap=`mower-has-map`,e.MowerHasTargetedMowing=`mower-has-targeted-mowing`,e}({}),Fn=function(e){return e.ChargingDC=`charging-dc`,e.ChargingSolar=`charging-solar`,e.NotCharging=`not-charging`,e}({}),O=function(e){return e.Siren=`siren`,e.Floodlight=`floodlight`,e.Spotlight=`spotlight`,e.PirSensor=`pir-sensor`,e.Chime=`chime`,e.Autotrack=`autotrack`,e.Nightvision=`nightvision`,e.PrivacyMask=`privacy-mask`,e.Doorbell=`doorbell`,e.BinaryHelper=`binary-helper`,e.MotionSensor=`motion-sensor`,e.ContactSensor=`contact-sensor`,e.LeakSensor=`leak-sensor`,e.SmokeSensor=`smoke-sensor`,e.COSensor=`co-sensor`,e.GasSensor=`gas-sensor`,e.TamperSensor=`tamper-sensor`,e.VibrationSensor=`vibration-sensor`,e.ConnectivitySensor=`connectivity-sensor`,e.SoundSensor=`sound-sensor`,e.BinarySensor=`binary-sensor`,e.TemperatureSensor=`temperature-sensor`,e.HumiditySensor=`humidity-sensor`,e.AmbientLightSensor=`ambient-light-sensor`,e.PressureSensor=`pressure-sensor`,e.WindSensor=`wind-sensor`,e.RainSensor=`rain-sensor`,e.UvSensor=`uv-sensor`,e.SolarRadiationSensor=`solar-radiation-sensor`,e.SoilMoistureSensor=`soil-moisture-sensor`,e.PowerSensor=`power-sensor`,e.EnergySensor=`energy-sensor`,e.VoltageSensor=`voltage-sensor`,e.CurrentSensor=`current-sensor`,e.AirQualitySensor=`air-quality-sensor`,e.BatterySensor=`battery-sensor`,e.NumericSensor=`numeric-sensor`,e.EnumSensor=`enum-sensor`,e.DateTimeSensor=`datetime-sensor`,e.GenericSensor=`generic-sensor`,e.NumericControl=`numeric-control`,e.SelectControl=`select-control`,e.TextControl=`text-control`,e.DateTimeControl=`datetime-control`,e.MobilePushNotifier=`mobile-push-notifier`,e.MessagingNotifier=`messaging-notifier`,e.EmailNotifier=`email-notifier`,e.GenericNotifier=`generic-notifier`,e}({});function In(e){return e instanceof Error?e.message:typeof e==`string`?e:String(e)}var Ln=de(),Rn={opus:`libopus`,aac:`aac`,pcmu:`pcm_mulaw`,pcma:`pcm_alaw`},zn={aac:{kind:`encode`,codec:`aac`,bitrateKbps:128,sampleRateHz:48e3,channels:1},opus:{kind:`encode`,codec:`opus`,bitrateKbps:64,sampleRateHz:48e3,channels:1},pcmu:{kind:`encode`,codec:`pcmu`,sampleRateHz:8e3,channels:1}};function Bn(e){return[`-hide_banner`,`-loglevel`,e]}function Vn(e){return!e||e===`none`||e===`copy`}function Hn(e,t){let n=[];if(Vn(t)||n.push(`-hwaccel`,String(t)),e.extraArgs?.length&&n.push(...e.extraArgs),e.decodeThreadCount!==void 0&&e.decodeThreadCount>0&&n.push(`-threads`,String(e.decodeThreadCount)),e.analyzeDurationUs!==void 0&&n.push(`-analyzeduration`,String(e.analyzeDurationUs)),e.probeSizeBytes!==void 0&&n.push(`-probesize`,String(e.probeSizeBytes)),e.lowDelay===!0&&n.push(`-flags`,`low_delay`),e.useWallclockTimestamps===!0&&n.push(`-use_wallclock_as_timestamps`,`1`),e.fflags?.length)for(let t of e.fflags)n.push(`-fflags`,t);if(e.rtspTransport&&n.push(`-rtsp_transport`,e.rtspTransport),e.rawVideo!==void 0){let t=e.rawVideo;n.push(`-f`,`rawvideo`,`-pix_fmt`,t.pixelFormat,`-video_size`,`${String(t.width)}x${String(t.height)}`,`-framerate`,String(t.framerate))}return n.push(`-i`,e.url),n}function Un(e){let t=e.filterGraph;return t?{video:`[${t.videoOutLabel}]`,audio:t.audioOutLabel?`[${t.audioOutLabel}]`:`0:a:0?`}:e.extraInputs?.length?{video:`0:v:0`,audio:`0:a:0?`}:{video:null,audio:null}}function Wn(e,t,n,r){if(n){if(e)throw Error(`FfmpegInvocation: video.scale cannot be combined with a filter graph — scale inside the graph instead (the -vf would feed an output the graph already feeds)`);if(t.some(e=>e===`-vf`))throw Error(`FfmpegInvocation: outputArgs carries a -vf while a filter graph feeds the same output — fold the filter into the graph`);return[]}if(t.some(e=>e===`-vf`))return[];if(!e)return r.length>0?[`-vf`,r]:[];let i=r.length>0?`,${r}`:``;return e.mode===`exact`?[`-vf`,`scale=${e.width}:${e.height}${i}`]:[`-vf`,`scale='min(${e.width},iw)':'min(${e.height},ih)':force_original_aspect_ratio=decrease:force_divisible_by=2${i}`]}function Gn(e,t){return e===void 0||!Vn(t)?``:`format=nv12,hwupload`}function Kn(e){let t=e.bitrateKbps;if(t===void 0)return[];let n=e.rateControl??{kind:`cap`,vbvSeconds:2},r=Math.max(1,Math.round(t*n.vbvSeconds));return[...n.kind===`cbr`?[`-b:v`,`${t}k`]:[],`-maxrate`,`${t}k`,`-bufsize`,`${r}k`]}function qn(e,t,n,r){if(e.kind===`raw`){if(n&&e.filter!==void 0)throw Error(`FfmpegInvocation: video.filter cannot be combined with a filter graph — fold the filter into the graph`);return[...e.filter===void 0?[]:[`-vf`,e.filter],`-c:v`,`rawvideo`,`-pix_fmt`,e.pixelFormat,...e.fps===void 0?[]:[`-r`,String(e.fps)]]}if(e.kind===`copy`){if(n)throw Error("FfmpegInvocation: a filter graph produces a NEW picture, so video.kind must be `encode`");return[`-c:v`,`copy`,...e.bitstreamFilter?[`-bsf:v`,e.bitstreamFilter]:[]]}let i=r===void 0?``:Gn(r.device,r.decodeHwAccel);if(r!==void 0&&n)throw Error(`FfmpegInvocation: a hardware encode fed by a filter graph must upload INSIDE the graph — hwEncodeDevice cannot be combined with filterGraph`);let a=[...Wn(e.scale,t,n,i),`-c:v`,e.encoder];return e.preset!==void 0&&a.push(`-preset`,e.preset),e.tune!==void 0&&a.push(`-tune`,e.tune),e.singleSlicePerFrame===!0&&e.encoder===`libx264`&&a.push(`-x264-params`,`sliced-threads=0`),e.profile!==void 0&&a.push(`-profile:v`,e.profile),e.level!==void 0&&a.push(`-level`,e.level),e.pixelFormat!==void 0&&a.push(`-pix_fmt`,e.pixelFormat),e.fps!==void 0&&a.push(`-r`,String(e.fps)),e.gopFrames!==void 0&&a.push(`-g`,String(e.gopFrames)),e.forceKeyFramesSeconds!==void 0&&a.push(`-force_key_frames`,`expr:gte(t,n_forced*${e.forceKeyFramesSeconds})`),e.bf!==void 0&&a.push(`-bf`,String(e.bf)),a.push(...Kn(e)),e.bitstreamFilter!==void 0&&a.push(`-bsf:v`,e.bitstreamFilter),a}function Jn(e){if(e.kind===`none`)return[`-an`];if(e.kind===`copy`)return[`-c:a`,`copy`];let t=[];return e.filter!==void 0&&t.push(`-af`,e.filter),t.push(`-c:a`,Rn[e.codec]),e.application!==void 0&&t.push(`-application`,e.application),e.frameDurationMs!==void 0&&t.push(`-frame_duration`,String(e.frameDurationMs)),e.globalHeader===!0&&t.push(`-flags`,`+global_header`),e.sampleRateHz!==void 0&&t.push(`-ar`,String(e.sampleRateHz)),e.bitrateKbps!==void 0&&t.push(`-b:a`,`${e.bitrateKbps}k`),e.vbvBufferKbits!==void 0&&t.push(`-bufsize`,`${e.vbvBufferKbits}k`),e.channels!==void 0&&t.push(`-ac`,String(e.channels)),t}function Yn(e){let t=[];return e.payloadType!==void 0&&t.push(`-payload_type`,String(e.payloadType)),e.ssrc!==void 0&&t.push(`-ssrc`,String(e.ssrc)),e.sdpFile!==void 0&&t.push(`-sdp_file`,e.sdpFile),t.push(`-f`,`rtp`,e.url),t}function Xn(e){return e.kind===`stdout`&&(e.container===`h264`||e.container===`hevc`)}var Zn=`+frag_keyframe+empty_moov+default_base_moof`;function Qn(e){return e.kind===`rtsp-listen`?[`-f`,`rtsp`,`-rtsp_transport`,`tcp`,`-rtsp_flags`,`listen`,e.url]:e.kind===`rtp-outputs`?[]:e.container===`mp4`?er(e):[`-f`,e.container,`pipe:1`]}var $n=.9;function er(e){return[`-movflags`,Zn,`-min_frag_duration`,String(Math.max(0,Math.round(e.fragmentMs*$n*1e3))),`-f`,`mp4`,`pipe:1`]}function tr(e){return[`-map`,`0:a:0?`,...Jn(e.codec===`pcma`?{kind:`encode`,codec:`pcma`,sampleRateHz:8e3,channels:1}:zn[e.codec]),...Yn({url:e.rtpUrl,sdpFile:e.sdpFile})]}function nr(e){return e.hwEncodeDevice===void 0?void 0:{device:e.hwEncodeDevice,decodeHwAccel:e.decodeHwAccel}}function rr(e){let t=e.filterGraph??null,n=[...Bn(e.logLevel),...e.hwEncodeDevice===void 0?[]:[`-vaapi_device`,e.hwEncodeDevice.renderNode],...Hn(e.input,e.decodeHwAccel),...(e.extraInputs??[]).flatMap(t=>Hn(t,e.decodeHwAccel)),...t?[`-filter_complex`,t.graph]:[]],r=[...e.threadCount>0?[`-threads`,String(e.threadCount)]:[],...e.filterThreadCount!==void 0&&e.filterThreadCount>0?[`-filter_threads`,String(e.filterThreadCount)]:[]],i=Un(e),a=i.video?[`-map`,i.video]:[],o=i.audio?[`-map`,i.audio]:[];if(e.sink.kind===`rtp-outputs`){let a=e.sink.video?[`-an`,`-map`,i.video??`0:v:0`,...qn(e.video,e.outputArgs,t,nr(e)),...r,...e.outputArgs,...Yn(e.sink.video)]:[],o=e.sink.audio?[`-vn`,`-map`,i.audio??`0:a:0?`,...Jn(e.audio),...Yn(e.sink.audio)]:[];return[...n,...a,...o]}let s=Xn(e.sink)||e.audio.kind===`none`,c=Xn(e.sink)?[`-an`]:Jn(e.audio);return[...n,...a,...qn(e.video,e.outputArgs,t,nr(e)),...r,...s?[]:o,...c,...e.outputArgs,...Qn(e.sink),...e.audioSidecar?tr(e.audioSidecar):[]]}var ir={videotoolbox:{h264:`h264_videotoolbox`,h265:`hevc_videotoolbox`},vaapi:{h264:`h264_vaapi`,h265:`hevc_vaapi`},qsv:{h264:`h264_qsv`,h265:`hevc_qsv`},cuda:{h264:`h264_nvenc`,h265:`hevc_nvenc`},nvdec:{h264:`h264_nvenc`,h265:`hevc_nvenc`},amf:{h264:`h264_amf`,h265:`hevc_amf`}};function ar(e,t,n){let r=e===`h264`?`libx264`:`libx265`;if(!n||t===null||Vn(t)||t===`auto`)return r;let i=ir[t.toLowerCase()];return i?e===`h264`?i.h264:i.h265:r}function or(e){return e===`passthrough`?{kind:`none`}:e.codec===`copy`?{kind:`copy`}:{kind:`encode`,codec:e.codec,...e.bitrateKbps===void 0?{}:{bitrateKbps:e.bitrateKbps},...e.sampleRateHz===void 0?{}:{sampleRateHz:e.sampleRateHz},...e.channels===void 0?{}:{channels:e.channels}}}function sr(e){let t=e.profile.video,n=t.codec===`copy`||e.forceReencode!==!0&&t.codec===e.sourceCodec,r=t.width!==void 0&&t.height!==void 0?{mode:`fit`,width:t.width,height:t.height}:null,i=t.codec===`h265`?`h265`:`h264`,a=n?{kind:`copy`,...e.bitstreamFilter===void 0?{}:{bitstreamFilter:e.bitstreamFilter}}:{kind:`encode`,encoder:ar(i,e.decodeHwAccel,e.hardwareEncoders===!0),scale:r,...t.preset===void 0?{}:{preset:t.preset},...t.tune===void 0?{}:{tune:t.tune},...t.singleSlicePerFrame===void 0?{}:{singleSlicePerFrame:t.singleSlicePerFrame},...t.profile===void 0?{}:{profile:t.profile},...t.level===void 0?{}:{level:t.level},...e.pixelFormat===void 0?{}:{pixelFormat:e.pixelFormat},...t.fps===void 0?{}:{fps:t.fps},...t.gopFrames===void 0?{}:{gopFrames:t.gopFrames},...e.forceKeyFramesSeconds===void 0?{}:{forceKeyFramesSeconds:e.forceKeyFramesSeconds},...t.bf===void 0?{}:{bf:t.bf},...t.bitrateKbps===void 0?{}:{bitrateKbps:t.bitrateKbps},...e.rateControl===void 0?{}:{rateControl:e.rateControl},...e.bitstreamFilter===void 0?{}:{bitstreamFilter:e.bitstreamFilter}};return{logLevel:e.logLevel??`error`,decodeHwAccel:e.decodeHwAccel,input:{url:e.sourceUrl,rtspTransport:`tcp`,fflags:[`+discardcorrupt`],...e.profile.inputArgs?.length?{extraArgs:e.profile.inputArgs}:{}},video:a,audio:or(e.profile.audio),threadCount:e.threadCount??0,outputArgs:e.profile.outputArgs??[],sink:e.sink,...e.audioSidecar===void 0?{}:{audioSidecar:e.audioSidecar}}}var cr=16*1024*1024,lr=8,ur=16,dr=class{maxUnitBytes;buffer=new Uint8Array;unitStart=0;cursor=0;state=`init`;nextSequence=0;faultReason=null;interstitial=new Set;constructor(e={}){this.maxUnitBytes=e.maxUnitBytes??cr}get fault(){return this.faultReason}get pendingBytes(){return this.buffer.length-this.unitStart}get discardedInterstitialTypes(){return[...this.interstitial]}push(e){return this.faultReason!==null||e.length===0?[]:(this.append(e),this.pendingBytes>this.maxUnitBytes?this.fail(`a single fMP4 unit exceeded ${this.maxUnitBytes} bytes — this stream is not fragmented`):this.drainBoxes())}append(e){if(this.buffer.length===0){this.buffer=e.slice();return}let t=new Uint8Array(this.buffer.length+e.length);t.set(this.buffer,0),t.set(e,this.buffer.length),this.buffer=t}drainBoxes(){let e=[];for(;;){let t=this.readHeader();if(this.faultReason!==null)return e;if(t===null||this.cursor+t.totalBytes>this.buffer.length)break;let n=this.cursor,r=n+t.totalBytes;this.cursor=r;let i=this.consumeBox(t.type,n,r);if(this.faultReason!==null)return e;i!==null&&e.push(i)}return this.compact(),e}consumeBox(e,t,n){if(this.state===`init`){if(e!==`moof`)return null;if(t===this.unitStart)return this.fail(`a moof arrived before any initialisation box — there is no ftyp/moov to send`),null;let n=this.emit(`init`,this.unitStart,t);return this.unitStart=t,this.state=`fragment`,n}if(this.state===`idle`)return e===`moof`?(this.unitStart=t,this.state=`fragment`,null):(this.interstitial.add(e),this.unitStart=n,null);if(e!==`mdat`)return null;let r=this.emit(`fragment`,this.unitStart,n);return this.unitStart=n,this.state=`idle`,r}readHeader(){let e=this.buffer.length-this.cursor;if(e<lr)return null;let t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),n=t.getUint32(this.cursor),r=String.fromCharCode(this.buffer[this.cursor+4]??0,this.buffer[this.cursor+5]??0,this.buffer[this.cursor+6]??0,this.buffer[this.cursor+7]??0);if(n===0)return this.fail(`box "${r}" declares size 0 (to EOF) — an unbounded box cannot be fragmented`),null;if(n===1){if(e<ur)return null;let n=t.getBigUint64(this.cursor+lr);return n>BigInt(this.maxUnitBytes)?(this.fail(`box "${r}" declares ${n} bytes, over the ${this.maxUnitBytes} byte bound`),null):{type:r,totalBytes:Number(n)}}return n<lr?(this.fail(`box "${r}" declares an impossible size of ${n} bytes`),null):{type:r,totalBytes:n}}emit(e,t,n){let r=this.nextSequence;return this.nextSequence+=1,{kind:e,data:this.buffer.slice(t,n),sequence:r}}compact(){this.unitStart!==0&&(this.buffer=this.buffer.slice(this.unitStart),this.cursor-=this.unitStart,this.unitStart=0)}fail(e){return this.faultReason=e,this.buffer=new Uint8Array,this.unitStart=0,this.cursor=0,[]}};function fr(e){let t=JSON.stringify(e,pr);return(0,Ln.createHash)(`sha256`).update(t??``).digest(`hex`)}function pr(e,t){if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t,n={};for(let t of Object.keys(e).toSorted())n[t]=e[t];return n}return t}var mr=`8.1.2-5`,hr=`https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${mr}`;function gr(e){return`${hr}/jellyfin-ffmpeg_${mr}_portable_${e}-gpl.tar.xz`}gr(`linux64`),gr(`linuxarm64`),gr(`macarm64`),gr(`mac64`);var _r=`CAMSTACK_FFMPEG_PATH`,vr={contact:`entryOpen`,binary:`on`,switch:`on`,motion:`detected`,flood:`flooded`,gas:`detected`,smoke:`detected`,"carbon-monoxide":`detected`,vibration:`detected`,tamper:`tampered`},yr={contact:`lastChangedAt`,binary:`lastChangedAt`,switch:`lastChangedAt`,motion:`lastDetectedAt`,flood:`lastChangedAt`,gas:`lastChangedAt`,smoke:`lastChangedAt`,"carbon-monoxide":`lastChangedAt`,vibration:`lastChangedAt`,tamper:`lastChangedAt`},br=Object.keys(vr),xr=[`sensor`,`switch`,`control`];function Sr(e){return Object.prototype.hasOwnProperty.call(vr,e)}function Cr(e,t){let n=vr[e];if(n===void 0)return null;let r=t[n];return typeof r==`boolean`?r:null}function wr(e,t){let n=yr[e];if(n===void 0)return null;let r=t[n];return typeof r!=`number`||!Number.isFinite(r)||r<=0?null:r}var Tr=3e4;function Er(e){let t=e.changedAt,n=Math.max(e.startedAtMs,e.nowMs-e.firstSightingFreshnessMs),r=e.priorLevel===void 0&&e.level&&t!==null&&Number.isFinite(t)&&t>=n,i=e.priorLevel===!1&&e.level&&t!==null&&Number.isFinite(t);return(r||i)&&t!==null?{kind:`rise`,timestamp:t}:{kind:`none`,nextPriorLevel:e.level}}function Dr(e){let t=Cr(e.capName,e.slice);return t===null?{edge:`none`,value:null,reason:Sr(e.capName)?`non-boolean-value`:`unknown-cap`}:Er({level:t,changedAt:wr(e.capName,e.slice),priorLevel:e.prior,startedAtMs:e.startedAtMs,nowMs:e.nowMs,firstSightingFreshnessMs:e.firstSightingFreshnessMs}).kind===`rise`?{edge:`rising`,value:!0}:e.prior===void 0?t?{edge:`none`,value:t,reason:`baseline-seeded-stale-active`}:{edge:`none`,value:t,reason:`baseline-seeded-inactive`}:e.prior===t?{edge:`none`,value:t,reason:`no-change`}:t?{edge:`none`,value:t,reason:`missing-timestamp`}:{edge:`none`,value:t,reason:`falling-edge`}}var k=class extends Error{position;constructor(e,t){super(e),this.name=`ExpressionParseError`,this.position=t}},A=class extends Error{constructor(e){super(e),this.name=`ExpressionEvalError`}};function Or(e){return e===`rose`||e===`count`}function j(e,t,n){if(typeof e!=`number`||!Number.isFinite(e))throw new A(`${t}: argument ${n+1} must be a finite number`);return e}function kr(e,t,n){if(typeof e!=`string`)throw new A(`${t}: argument ${n+1} must be a string`);return e}function M(e,t){if(!Number.isFinite(e))throw new A(`${t}: produced a non-finite result`);return e}function Ar(e,t){return e.map((e,n)=>j(e,t,n))}function jr(e,t,n){if(typeof e!=`boolean`)throw new A(`${t}: argument ${n+1} must be a boolean`);return e}var Mr=/^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/;function Nr(e){if(typeof e==`number`)return Number.isFinite(e)?e:null;if(typeof e!=`string`)return null;let t=e.trim();if(!Mr.test(t))return null;let n=Number(t);return Number.isFinite(n)?n:null}var Pr=2e3;function Fr(e,t,n,r,i,a){let o=jr(e,`rose`,0),s=typeof t==`number`&&Number.isFinite(t)?t:null,c=n===void 0?Pr:j(n,`rose`,2);if(c<0)throw new A(`rose: debounce must be a non-negative finite number`);if(r.disarmNext===!0||i.disarmRoseNext)return r.disarmNext=!1,r.priorLevel===void 0&&(r.priorLevel=o),a.currentOutput;let l=Er({level:o,changedAt:s,priorLevel:r.priorLevel,startedAtMs:a.startedAtMs,nowMs:a.nowMs,firstSightingFreshnessMs:Tr});return r.priorLevel=l.kind===`rise`?!0:l.nextPriorLevel,l.kind===`none`||i.acceptedEdgeAt!==null&&l.timestamp-i.acceptedEdgeAt<c?a.currentOutput:(i.acceptedEdgeAt=l.timestamp,l.timestamp)}function Ir(e){e.disarmRoseNext=!0;for(let[t,n]of e.calls)n.kind===`rose`&&e.calls.set(t,{...n,disarmNext:!0})}function Lr(e,t,n){let r=typeof n==`number`&&Number.isFinite(n)&&n>=0?n:0;return e===null?(t.primed=!0,r):typeof e!=`number`||!Number.isFinite(e)?r:t.primed?t.highWater!==null&&e<=t.highWater?r:(t.highWater=e,r+1):(t.primed=!0,t.highWater=e,r)}var Rr=1/0,zr={min:{minArgs:1,maxArgs:Rr,apply:e=>M(Math.min(...Ar(e,`min`)),`min`)},max:{minArgs:1,maxArgs:Rr,apply:e=>M(Math.max(...Ar(e,`max`)),`max`)},abs:{minArgs:1,maxArgs:1,apply:e=>M(Math.abs(j(e[0],`abs`,0)),`abs`)},floor:{minArgs:1,maxArgs:1,apply:e=>M(Math.floor(j(e[0],`floor`,0)),`floor`)},ceil:{minArgs:1,maxArgs:1,apply:e=>M(Math.ceil(j(e[0],`ceil`,0)),`ceil`)},sqrt:{minArgs:1,maxArgs:1,apply:e=>M(Math.sqrt(j(e[0],`sqrt`,0)),`sqrt`)},round:{minArgs:1,maxArgs:2,apply:e=>{let t=j(e[0],`round`,0),n=e.length>1?Math.trunc(j(e[1],`round`,1)):0;if(n<0||n>100)throw new A(`round: digits must be between 0 and 100`);let r=10**n;return M(Math.round(t*r)/r,`round`)}},pow:{minArgs:2,maxArgs:2,apply:e=>M(j(e[0],`pow`,0)**j(e[1],`pow`,1),`pow`)},clamp:{minArgs:3,maxArgs:3,apply:e=>{let t=j(e[0],`clamp`,0),n=j(e[1],`clamp`,1),r=j(e[2],`clamp`,2);if(n>r)throw new A(`clamp: lower bound is greater than upper bound`);return M(Math.min(r,Math.max(n,t)),`clamp`)}},avg:{minArgs:1,maxArgs:Rr,apply:e=>{let t=Ar(e,`avg`);return M(t.reduce((e,t)=>e+t,0)/t.length,`avg`)}},sum:{minArgs:1,maxArgs:Rr,apply:e=>M(Ar(e,`sum`).reduce((e,t)=>e+t,0),`sum`)},coalesce:{minArgs:1,maxArgs:Rr,apply:e=>{for(let t of e)if(t!==null)return t;return null}},age:{minArgs:2,maxArgs:2,apply:e=>M(j(e[0],`age`,0)-j(e[1],`age`,1),`age`)},convert:{minArgs:3,maxArgs:3,apply:(e,t)=>{let n=j(e[0],`convert`,0),r=kr(e[1],`convert`,1).trim(),i=kr(e[2],`convert`,2).trim();if(t.convert){let e=t.convert(n,r,i);if(e===null)throw new A(`convert: cannot convert '${r}' to '${i}'`);return M(e,`convert`)}if(r===i)return n;throw new A(`convert: unit conversion table not installed`)}},any:{minArgs:1,maxArgs:Rr,apply:e=>e.map((e,t)=>jr(e,`any`,t)).some(e=>e)},all:{minArgs:1,maxArgs:Rr,apply:e=>e.map((e,t)=>jr(e,`all`,t)).every(e=>e)},within:{minArgs:2,maxArgs:2,apply:(e,t)=>{let n=j(e[1],`within`,1);if(n<0)throw new A(`within: the window must not be negative`);let r=e[0];if(r===null)return!1;let i=j(r,`within`,0),a=t.now;if(a===void 0||!Number.isFinite(a))throw new A(`within: no clock was supplied to this evaluation`);let o=a-i<=n;return o&&t.noteDeadline?.(i+n+1),o}},number:{minArgs:1,maxArgs:1,apply:e=>Nr(e[0])},latest:{minArgs:1,maxArgs:Rr,apply:e=>{let t=e.flatMap((e,t)=>e===null?[]:[j(e,`latest`,t)]);return t.length===0?null:M(Math.max(...t),`latest`)}},rose:{minArgs:2,maxArgs:3,apply:()=>{throw new A(`rose: stateful evaluation context is required`)}},count:{minArgs:1,maxArgs:1,apply:()=>{throw new A(`count: stateful evaluation context is required`)}}},Br=Object.freeze(Object.assign(Object.create(null),zr)),Vr=new Set(Object.keys(zr)),Hr=2048,Ur=256,Wr=4096,Gr=32,Kr=16,qr=256,Jr=/^[A-Za-z_][A-Za-z0-9_]*$/,Yr=new Set([`now`,`true`,`false`,`null`]),Xr=new Set([`true`,`false`,`null`]);function Zr(e){return e>=`0`&&e<=`9`}function Qr(e){return e>=`A`&&e<=`Z`||e>=`a`&&e<=`z`||e===`_`}function $r(e){return Qr(e)||Zr(e)}function ei(e){return e===` `||e===` `||e===`
|
|
3
|
-
`||e===`\r`||e===`\f`||e===`\v`}function ti(e){if(e.length>2048)throw new k(`expression too long (${e.length} > ${Hr} chars)`,0);let t=[],n=0,r=e.length;for(;n<r;){let i=e[n];if(ei(i)){n+=1;continue}if(Zr(i)){let i=n;for(;n<r&&Zr(e[n]);)n+=1;if(n<r&&e[n]===`.`){if(n+1>=r||!Zr(e[n+1]))throw new k(`malformed number: decimal point needs a digit`,n);for(n+=1;n<r&&Zr(e[n]);)n+=1}let a=e.slice(i,n),o=Number(a);if(!Number.isFinite(o))throw new k(`malformed number: '${a}'`,i);t.push({type:`number`,value:o,pos:i});continue}if(i===`'`||i===`"`){let a=i,o=n;n+=1;let s=``,c=!1;for(;n<r;){let t=e[n];if(t===`\\`){let t=n+1<r?e[n+1]:``;if(t===`\\`||t===`'`||t===`"`){s+=t,n+=2;continue}throw new k(`invalid string escape: '\\${t}'`,n)}if(t===a){c=!0,n+=1;break}s+=t,n+=1}if(!c)throw new k(`unterminated string literal`,o);t.push({type:`string`,value:s,pos:o});continue}if(Qr(i)){let i=n;for(;n<r&&$r(e[n]);)n+=1;let a=e.slice(i,n);Xr.has(a)?t.push({type:`keyword`,keyword:ni(a),pos:i}):t.push({type:`identifier`,name:a,pos:i});continue}let a=n+1<r?e.slice(n,n+2):``;if(a===`<=`||a===`>=`||a===`==`||a===`!=`||a===`&&`||a===`||`){t.push({type:`punct`,punct:a,pos:n}),n+=2;continue}if(ri(i)){t.push({type:`punct`,punct:i,pos:n}),n+=1;continue}throw new k(`unexpected character '${i}'`,n)}return t.push({type:`eof`,pos:r}),t}function ni(e){return e===`true`?`true`:e===`false`?`false`:`null`}function ri(e){return e===`(`||e===`)`||e===`,`||e===`?`||e===`:`||e===`+`||e===`-`||e===`*`||e===`/`||e===`%`||e===`!`||e===`<`||e===`>`}var ii={"||":1,"&&":2,"==":3,"!=":3,"<":4,"<=":4,">":4,">=":4,"+":5,"-":5,"*":6,"/":6,"%":6};function ai(e){return e===`&&`||e===`||`}function oi(e){return e===`+`||e===`-`||e===`*`||e===`/`||e===`%`||e===`==`||e===`!=`||e===`<`||e===`<=`||e===`>`||e===`>=`}var si=class{tokens;pos=0;nodeCount=0;identifiers=new Set;callees=new Set;constructor(e){this.tokens=e}parse(){let e=this.parseTernary(),t=this.peek();if(t.type!==`eof`)throw new k(`unexpected trailing input`,t.pos);return{ast:e,identifiers:this.identifiers,callees:this.callees,nodeCount:this.nodeCount}}peek(){return this.tokens[this.pos]}next(){return this.tokens[this.pos++]}expectPunct(e){let t=this.peek();if(t.type!==`punct`||t.punct!==e)throw new k(`expected '${e}'`,t.pos);this.pos+=1}matchPunct(e){let t=this.peek();return t.type===`punct`&&t.punct===e?(this.pos+=1,!0):!1}countNode(){if(this.nodeCount+=1,this.nodeCount>256)throw new k(`expression too complex`,this.peek().pos)}parseTernary(){let e=this.parseBinary(1);if(this.matchPunct(`?`)){let t=this.parseTernary();this.expectPunct(`:`);let n=this.parseTernary();return this.countNode(),{kind:`conditional`,test:e,consequent:t,alternate:n}}return e}parseBinary(e){let t=this.parseUnary();for(;;){let n=this.peek();if(n.type!==`punct`)break;let r=ii[n.punct];if(r===void 0||r<e)break;let i=n.punct;this.pos+=1;let a=this.parseBinary(r+1);if(this.countNode(),ai(i))t={kind:`logical`,op:i,left:t,right:a};else if(oi(i))t={kind:`binary`,op:i,left:t,right:a};else throw new k(`unexpected operator '${i}'`,n.pos)}return t}parseUnary(){let e=this.peek();if(e.type===`punct`&&(e.punct===`!`||e.punct===`-`)){let t=e.punct;this.pos+=1;let n=this.parseUnary();return this.countNode(),{kind:`unary`,op:t,operand:n}}return this.parsePrimary()}parsePrimary(){let e=this.next();switch(e.type){case`number`:return this.countNode(),{kind:`literal`,value:e.value};case`string`:return this.countNode(),{kind:`literal`,value:e.value};case`keyword`:return this.countNode(),{kind:`literal`,value:e.keyword===`null`?null:e.keyword===`true`};case`identifier`:{let t=this.peek();return t.type===`punct`&&t.punct===`(`?this.parseCall(e.name,e.pos):(this.identifiers.add(e.name),this.countNode(),{kind:`identifier`,name:e.name})}case`punct`:if(e.punct===`(`){let e=this.parseTernary();return this.expectPunct(`)`),e}throw new k(`unexpected token '${e.punct}'`,e.pos);case`eof`:throw new k(`unexpected end of expression`,e.pos)}}parseCall(e,t){if(!Vr.has(e))throw new k(`unknown function '${e}'`,t);this.expectPunct(`(`);let n=[];if(!this.matchPunct(`)`))for(;;){if(n.push(this.parseTernary()),n.length>16)throw new k(`too many arguments to '${e}'`,t);if(!this.matchPunct(`,`)){this.expectPunct(`)`);break}}return this.callees.add(e),this.countNode(),{kind:`call`,callee:e,args:n}}};function ci(e){return new si(ti(e)).parse()}var li=new Map;function ui(e){let t=li.get(e);if(t!==void 0)return li.delete(e),li.set(e,t),t;let n;try{n={ok:!0,parsed:ci(e)}}catch(e){n={ok:!1,error:e instanceof k?e.message:String(e)}}if(li.set(e,n),li.size>256){let e=li.keys().next().value;e!==void 0&&li.delete(e)}return n}function di(e){let t=ui(e);if(t.ok)return t.parsed;throw new k(t.error)}function fi(e){return ui(e)}var pi=Object.freeze({});function mi(e){let t=Object.create(null);for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function hi(e){return typeof e==`number`&&Number.isFinite(e)}function gi(e){return!!e}function _i(e,t){if(!Number.isFinite(e))throw new A(`${t} produced a non-finite result`);return e}function vi(e){if(e.steps+=1,e.steps>e.maxSteps)throw new A(`expression evaluation step budget exceeded`)}function N(e,t){return`${e}/${t}`}function P(e,t,n){switch(vi(t),e.kind){case`literal`:return e.value;case`identifier`:if(!(e.name in t.scope))throw new A(`unknown identifier: ${e.name}`);return t.scope[e.name];case`unary`:return yi(e.op,P(e.operand,t,N(n,`operand`)));case`binary`:return bi(e.op,P(e.left,t,N(n,`left`)),P(e.right,t,N(n,`right`)));case`logical`:{let r=P(e.left,t,N(n,`left`));return e.op===`&&`?gi(r)?P(e.right,t,N(n,`right`)):r:gi(r)?r:P(e.right,t,N(n,`right`))}case`conditional`:return gi(P(e.test,t,N(n,`test`)))?P(e.consequent,t,N(n,`consequent`)):P(e.alternate,t,N(n,`alternate`));case`call`:{let r=e.args.map((e,r)=>P(e,t,N(n,`arg:${r}`)));return xi(e.callee,r,n,t)}}}function yi(e,t){if(e===`!`)return!gi(t);if(!hi(t))throw new A(`unary "-" requires a finite number`);return _i(-t,`unary "-"`)}function bi(e,t,n){switch(e){case`==`:return t===n;case`!=`:return t!==n;case`+`:if(typeof t==`string`&&typeof n==`string`)return t+n;if(hi(t)&&hi(n))return _i(t+n,`"+"`);throw new A(`"+" requires two numbers or two strings`);case`-`:case`*`:case`/`:case`%`:if(!hi(t)||!hi(n))throw new A(`"${e}" requires two finite numbers`);return _i(e===`-`?t-n:e===`*`?t*n:e===`/`?t/n:t%n,`"${e}"`);case`<`:case`<=`:case`>`:case`>=`:if(hi(t)&&hi(n)||typeof t==`string`&&typeof n==`string`)return e===`<`?t<n:e===`<=`?t<=n:e===`>`?t>n:t>=n;throw new A(`"${e}" requires two numbers or two strings`)}}function xi(e,t,n,r){if(!Object.prototype.hasOwnProperty.call(Br,e))throw new A(`unknown function: ${e}`);let i=Br[e];if(t.length<i.minArgs||t.length>i.maxArgs)throw new A(`${e}: wrong number of arguments (${t.length})`);if(Or(e)){if(r.invokeStateful===void 0)throw new A(`${e}: stateful evaluation context is required`);return r.invokeStateful({name:e,path:n,args:t})}return i.apply(t,r.hooks)}function Si(e,t,n){return P(e,{scope:t,hooks:n?.hooks??pi,maxSteps:n?.maxSteps??4096,...n?.invokeStateful===void 0?{}:{invokeStateful:n.invokeStateful},steps:0},`root`)}function Ci(){return{calls:new Map,acceptedEdgeAt:null,disarmRoseNext:!1}}function wi(e){return{calls:new Map([...e.calls].map(([e,t])=>[e,{...t}])),acceptedEdgeAt:e.acceptedEdgeAt,disarmRoseNext:e.disarmRoseNext}}function Ti(e,t,n){let r=t.calls.get(e.path);switch(e.name){case`rose`:{let i=r?.kind===`rose`?r:{kind:`rose`};t.calls.set(e.path,i);let a=n.currentOutput===null||typeof n.currentOutput==`number`&&Number.isFinite(n.currentOutput)?n.currentOutput:null;return Fr(e.args[0],e.args[1],e.args[2],i,t,{currentOutput:a,startedAtMs:n.startedAtMs,nowMs:n.nowMs})}case`count`:{let i=r?.kind===`count`?r:{kind:`count`,highWater:null,primed:!1};return t.calls.set(e.path,i),Lr(e.args[0],i,n.currentOutput)}}}var Ei=`now`;function Di(e){if(e===null)return null;if(typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`)return Number.isFinite(e)?e:void 0}function Oi(e){let t=Object.keys(e.bindings);if(t.length>32)return`too many bindings (${t.length} > 32)`;for(let e of t){if(!Jr.test(e))return`invalid binding name '${e}'`;if(Yr.has(e))return`binding name '${e}' is reserved`;if(Vr.has(e))return`binding name '${e}' shadows a builtin function`}let n=fi(e.expr);if(!n.ok)return n.error;let r=new Set(t);for(let e of n.parsed.identifiers)if(e!==`now`&&!r.has(e))return`expression references unbound identifier '${e}'`;return null}function ki(e,t,n,r){let i=fi(e);if(!i.ok)return{ok:!1,error:i.error};let a=mi({...t,now:n}),o={...r?.hooks,now:n};try{return{ok:!0,value:Si(i.parsed.ast,a,{...r,hooks:o})}}catch(e){return{ok:!1,error:e instanceof A?e.message:String(e)}}}var Ai=`composer`,ji=`customize:`,Mi=`composed-`,Ni=16,Pi=32,Fi=2e4,Ii=u({addonId:c().min(1),stableId:c().min(1)}),Li=u({source:Ii,cap:c().min(1),fieldPath:c().min(1)}),Ri=Li.extend({kind:p(`from`)}),zi=u({kind:p(`literal`),value:d([c(),i(),S(),re()])}),Bi=f(`kind`,[Ri,zi]),Vi=u({kind:p(`expression`),expr:c().min(1).max(Hr),bindings:v(c().regex(Jr),Bi)}).superRefine((e,t)=>{let n=Oi(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Hi=u({kind:p(`code`),code:c().min(1).max(Fi)}),Ui=f(`kind`,[Ri,Vi,Hi]),Wi=u({kind:p(`forward`),source:Ii,cap:c().min(1),method:c().min(1)}),Gi=f(`kind`,[Wi,Hi]),Ki=/^[a-z0-9][a-z0-9-]{0,47}$/,qi=16,Ji=`items`,Yi=u({label:c().min(1).max(80),fields:v(c().min(1),Ui)}),Xi=u({kind:p(`fields`),cap:c().min(1),enabled:S().optional(),fields:v(c().min(1),Ui).refine(e=>Object.keys(e).length<=32,{message:`at most 32 fields per capability`}),items:v(c().regex(Ki),Yi).refine(e=>Object.keys(e).length<=16,{message:`at most 16 items`}).optional(),commands:v(c().min(1),Gi).optional()}),Zi=u({kind:p(`passthrough`),cap:c().min(1),enabled:S().optional(),source:Ii}),Qi=f(`kind`,[Xi,Zi]);function $i(e){return e.enabled!==!1}var ea=u({kind:p(`new`),type:b(D),role:b(O).optional()}),ta=u({kind:p(`existing`),device:Ii}),na=f(`kind`,[ea,ta]),ra=u({target:na,features:x(Qi).min(1).max(16)}).superRefine((e,t)=>{let n=new Set;e.features.forEach((e,r)=>{n.has(e.cap)&&t.addIssue({code:`custom`,message:`capability \`${e.cap}\` is composed twice — one feature per capability`,path:[`features`,r,`cap`]}),n.add(e.cap)})});function F(e){return`${e.addonId}/${e.stableId}`}function ia(e,t){return`${F(e)}#${t}`}function aa(e){return`${ia(e.source,e.cap)}.${e.fieldPath}`}function oa(e){return`${Mi}${e}`}function sa(e){return{addonId:Ai,stableId:oa(e)}}function ca(e){switch(e.kind){case`from`:return[{source:e.source,cap:e.cap,fieldPath:e.fieldPath}];case`expression`:return Object.values(e.bindings).flatMap(e=>e.kind===`from`?[{source:e.source,cap:e.cap,fieldPath:e.fieldPath}]:[]);case`code`:return[]}}function la(e,t,n){return`${e}[${t}].${n}`}function ua(e,t=Ji){return[...Object.entries(e.fields).map(([e,t])=>({fieldPath:e,source:t})),...Object.entries(e.items??{}).flatMap(([e,n])=>Object.entries(n.fields).map(([n,r])=>({fieldPath:la(t,e,n),source:r})))]}function da(e){return ua(e).map(e=>e.source)}var fa=function(e){return e.Addon=`addon`,e.Core=`core`,e.Device=`device`,e.Provider=`provider`,e.System=`system`,e}({}),pa=[`track`,`face`,`identity`,`plate`,`vehicle`,`scene`,`motion`,`object`,`audio`,`mosaic`],ma=new Set(pa),ha=/^\d+$/;function ga(e){return ma.has(e)}function _a(e){let t=e.split(`:`);if(t.length!==3&&t.length!==4)return null;let[n,r,i,a]=t;return n===void 0||!ga(n)||r===void 0||r.length===0||i===void 0||i.length===0?null:a===void 0?{ownerType:n,ownerId:r,fileKind:i}:ha.test(a)?{ownerType:n,ownerId:r,fileKind:i,timestampMs:Number(a)}:null}function va(e){let t=`${e.ownerType}:${e.ownerId}:${e.fileKind}`;return e.timestampMs===void 0?t:`${t}:${e.timestampMs}`}var ya=[`motion`,`object`,`audio`],ba=b(ya),xa=[...ya,`track`],Sa=b(xa),Ca=new Set(ya);function wa(e){return Ca.has(e)}function Ta(e,t){return{id:e,getRoutes:()=>t,invoke:async e=>{let n=Ea(t,e.method,e.path);if(!n)return{status:404,headers:{},redirectUrl:null,body:{error:`No route matches ${e.method} ${e.path}`}};let r={status:200,headers:{},redirectUrl:null},i=Oa(r),a={params:{...e.params,...n.params},query:e.query,body:e.body,headers:e.headers,...e.user?{user:e.user}:{},...e.scopedToken===void 0?{}:{scopedToken:e.scopedToken}};return await n.route.handler(a,i),r}}}function Ea(e,t,n){let r=t.toUpperCase();for(let t of e){if(t.method!==r)continue;let e=Da(t.path,n);if(e!==null)return{route:t,params:e}}return null}function Da(e,t){let n=e.split(`/`).filter(Boolean),r=t.split(`/`).filter(Boolean);if(n.length!==r.length)return null;let i={};for(let e=0;e<n.length;e++){let t=n[e],a=r[e];if(t.startsWith(`:`))i[t.slice(1)]=a;else if(t!==a)return null}return i}function Oa(e){let t={status(n){return e.status=n,t},code(n){return e.status=n,t},send(t){e.body=t},redirect(t){e.redirectUrl=t,e.status===200&&(e.status=302)},header(n,r){return e.headers[n.toLowerCase()]=r,t},type(n){return e.contentType=n,t}};return t}var ka=u({codec:b([`h264`,`h265`,`copy`]),profile:b([`baseline`,`main`,`high`]).optional(),level:c().optional(),width:i().int().positive().optional(),height:i().int().positive().optional(),fps:i().positive().optional(),bitrateKbps:i().int().positive().optional(),gopFrames:i().int().positive().optional(),bf:i().int().min(0).optional(),preset:b([`ultrafast`,`superfast`,`veryfast`,`faster`,`fast`,`medium`]).optional(),tune:b([`zerolatency`,`film`,`animation`]).optional(),singleSlicePerFrame:S().optional()}),Aa=d([p(`passthrough`),u({codec:b([`opus`,`aac`,`pcmu`,`pcma`,`copy`]),bitrateKbps:i().int().positive().optional(),sampleRateHz:i().int().positive().optional(),channels:d([p(1),p(2)]).optional()})]),ja=u({video:ka,audio:Aa,inputArgs:x(c()).optional(),outputArgs:x(c()).optional()});function Ma(e){let t=e.codec?.toLowerCase().replace(/[.\s-]/g,``),n={codec:t===`h265`||t===`hevc`?`h265`:`h264`,...e.resolution?.width===void 0?{}:{width:e.resolution.width},...e.resolution?.height===void 0?{}:{height:e.resolution.height},...e.fps===void 0?{}:{fps:e.fps}};if(!(n.width===void 0&&n.height===void 0&&n.fps===void 0))return{video:n,audio:`passthrough`}}function Na(e,t,n){let r=e>=n;return r===t>=n?r?e-t:t-e:r?-1:1}function Pa(e){let t=e.toLowerCase().replace(/[.\s-]/g,``);return t===`hevc`||t===`hvc1`||t===`hev1`?`h265`:t===`avc`||t===`avc1`?`h264`:t}function Fa(e,t){if(t.length===0)return!0;if(e===void 0)return!1;let n=Pa(e);return t.some(e=>Pa(e)===n)}function Ia(e,t){for(let n=0;n<t.length;n+=1)if(e.startsWith(t[n]))return n;return t.length}function La(e,t){let n=e.filter(e=>t.allowTranscode||Fa(e.codec,t.acceptCodecs));if(n.length===0)return null;let r=t.targetHeight,i=n.map(e=>({candidate:e,transcodes:!Fa(e.codec,t.acceptCodecs),provider:Ia(e.camStreamId,t.preferredProviders),height:e.height??0}));i.sort((e,n)=>e.transcodes===n.transcodes?e.provider===n.provider?r===void 0?t.resolutionPreference===`highest`?n.height-e.height:e.height-n.height:Na(e.height,n.height,r):e.provider-n.provider:e.transcodes?1:-1);let a=i[0];return a===void 0?null:{candidate:a.candidate,transcodes:a.transcodes}}var Ra={video:{codec:`h264`,profile:`baseline`,level:`3.1`,width:1280,height:720,fps:25,bitrateKbps:2500,gopFrames:25,bf:0,preset:`veryfast`,tune:`zerolatency`},audio:`passthrough`},za={...Ra,video:{...Ra.video,bitrateKbps:3e3,gopFrames:30,preset:`ultrafast`},audio:`passthrough`},Ba={...Ra,audio:{codec:`opus`},video:{...Ra.video,singleSlicePerFrame:!0}},Va={kind:`cbr`,vbvSeconds:1},Ha={kind:`cap`,vbvSeconds:2},Ua=360,Wa=400,Ga=24,Ka={kind:`encode`,codec:`opus`,bitrateKbps:24,channels:1,application:`lowdelay`,globalHeader:!0,filter:`aresample=async=1000:first_pts=0`},qa=96,Ja=4;function Ya(e){let t=e.now??(()=>Date.now()),n=null,r=-1/0;return{read(){return t()-r<e.ttlMs?n:void 0},write(e){n=e,r=t()}}}function Xa(e){return!e||e===`none`||e===`copy`}async function Za(e){let t=e.override;if(t!=null&&t!==``)return Xa(t)?null:t;let n=e.cache?.read();if(n!==void 0)return n;let r;try{r=await e.readDecoderBackend()}catch(t){let n=await e.readKernelPreferred().catch(()=>[]);return e.onFallback({reason:`decoder-unreadable`,kernelPreferred:n,error:t instanceof Error?t.message:String(t)}),e.cache?.write(null),null}if(r===``){let t=await e.readKernelPreferred().catch(()=>[]);return e.onFallback({reason:`decoder-unprobed`,kernelPreferred:t}),e.cache?.write(null),null}let i=Xa(r)?null:r;return e.cache?.write(i),i}function Qa(e){return String(Math.round(e*1e3)/1e3)}function $a(e,t){return!Number.isFinite(t)||t<=0?e:e/t}function eo(e){let t=e.speed>0?e.speed:1;return t===1?`[0:v]fps=${Qa(e.fps)},scale=${e.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`:`[0:v]fps=${Qa(e.fps/t)},setpts=PTS/${t},fps=${Qa(e.fps)},scale=${e.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`}function to(e){return[`-y`,`-v`,`error`,`-f`,`mp4`,`-i`,e.input??`pipe:0`,`-filter_complex`,eo(e),`-loop`,`0`,`-f`,`gif`,`pipe:1`]}function no(e){return{transport:e.publishLocally===!0?`push`:`dial`}}var ro=`\0unset`;function io(e){return{codec:e.codec,profile:e.profile??ro,level:e.level??ro,width:e.width??-1,height:e.height??-1,fps:e.fps??-1,bitrateKbps:e.bitrateKbps??-1,gopFrames:e.gopFrames??-1,bf:e.bf??-1,preset:e.preset??ro,tune:e.tune??ro,singleSlicePerFrame:e.singleSlicePerFrame===void 0?ro:String(e.singleSlicePerFrame)}}function ao(e){return e===`passthrough`?{codec:`passthrough`}:{codec:e.codec,bitrateKbps:e.bitrateKbps??-1,sampleRateHz:e.sampleRateHz??-1,channels:e.channels??-1}}function oo(e,t=no(e)){return{deviceId:e.deviceId,source:e.source.kind===`profile`?`profile:${e.source.profile}`:`cam-stream:${e.source.camStreamId}`,transport:t.transport,fragmentMs:t.fragmentMs??-1,video:io(e.encode.video),audio:ao(e.encode.audio),rateControl:e.rateControl??`relaxed`,bitstreamFilter:e.bitstreamFilter??ro,pixelFormat:e.pixelFormat??ro,decodeHwAccel:e.decodeHwAccel??ro}}function so(e,t=no(e)){return`egress:${fr(oo(e,t))}`}function co(e){let t=null;return()=>{if(t!==null)return t;let n=e();return t=n,n.catch(()=>{t===n&&(t=null)}),n}}var lo=b([`singleton`,`device`,`widget`]),uo=u({capName:c(),kind:lo,deviceId:i().optional(),reachable:S(),latencyMs:i(),error:c().optional()}),fo=u({addonId:c(),caps:x(uo).readonly(),widgets:x(uo).readonly()}),po=u({nodeId:c(),addons:x(fo).readonly()}),mo=u({ok:S(),degraded:S(),checkedAt:c(),nodes:x(po).readonly(),summary:u({total:i(),reachable:i(),unreachable:i()})}),ho=`hub-only`;function go(e){return{placement:e.execution?.placement??`hub-only`,group:e.execution?.group}}function _o(e){let t=go(e).placement;return t===`any-node`||t===`agent-only`}function vo(e){return go(e).placement===`agent-only`}function yo(e){return go(e).group}function bo(e,t){return e.execution?.group??t}function xo(e){return go(e).placement}function So(e){return e.execution?.isolate===!0}var Co=b([`running`,`done`,`failed`,`cancelled`]),wo=b([`adopted`,`already-adopted`,`failed`,`cancelled`]),To=u({childNativeId:c(),outcome:wo,parentDeviceId:i().int().nonnegative().nullable(),accessoryCount:i().int().nonnegative(),error:c().nullable()}),Eo=u({jobId:c(),addonId:c(),integrationId:c(),state:Co,total:i().int().nonnegative(),processed:i().int().nonnegative(),adopted:i().int().nonnegative(),alreadyAdopted:i().int().nonnegative(),failed:i().int().nonnegative(),accessoriesCreated:i().int().nonnegative(),currentChildNativeId:c().nullable(),results:x(To).readonly(),startedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),Do={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14},Oo=b([`stream-broker`,`object-detection`,`privacy-mask`,`device-audio`,`broker-audio`,`audio-analysis`,`event-saving`,`recording`,`notifications`]),ko=[`stream-broker`,`object-detection`,`privacy-mask`,`device-audio`,`broker-audio`,`audio-analysis`,`event-saving`,`recording`,`notifications`],Ao=f(`kind`,[u({kind:p(`device-disabled`)}),u({kind:p(`wrapper-binding`),capName:c()}),u({kind:p(`recording-config`)}),u({kind:p(`notification-mute`)}),u({kind:p(`camera-audio`),capName:c()}),u({kind:p(`camera-mask`),capName:c()}),u({kind:p(`broker-audio-mute`)})]),jo=b([`no-provider`,`source-unreachable`,`device-disabled`]),Mo=b([`no-privacy-zones`]),No=u({id:Oo,label:c(),costWhenOff:c(),available:S(),unavailableReason:jo.optional(),warning:Mo.optional(),enabled:S(),authority:Ao}),Po=u({deviceId:i().int(),switches:x(No).readonly(),fetchedAt:i()}),Fo=`detection-pipeline`,Io=`audio-analysis`,Lo=`privacy-mask`,Ro=`pipeline-analytics`,zo=[`motion-detection`,Fo,Io,Ro,`scene-monitor`],Bo={"stream-broker":{id:`stream-broker`,label:`Camera`,costWhenOff:`Off: the whole camera stops. No live view, no recording, no detection and no notifications — its streams are released and nothing dials it again until you turn it back on.`,authority:{kind:`device-disabled`},countsAsSwitchedOff:!0},"object-detection":{id:`object-detection`,label:`Object detection & tracking`,costWhenOff:`Off: nothing is detected or tracked on this camera, so it produces no events — and with no events there are no object notifications and no event-triggered recording. Live view and continuous recording are unaffected.`,authority:{kind:`wrapper-binding`,capName:Fo},countsAsSwitchedOff:!0},"privacy-mask":{id:`privacy-mask`,label:`Privacy mask`,costWhenOff:`On: the zones you drew on this camera are blacked out by the camera itself — live view, playback, exports and detection all see the black boxes, and nothing behind them was ever recorded. Off: the camera captures the whole frame, and your zones are kept for when you turn it back on.`,authority:{kind:`camera-mask`,capName:Lo},countsAsSwitchedOff:!1},"device-audio":{id:`device-audio`,label:`Camera microphone`,costWhenOff:`Off: the camera captures no sound at all. Live view and recordings become silent video, and audio detection and classification have nothing left to analyse — turning them back on will not recover it. The picture, motion and object detection are unaffected, and two-way talk still works. Applies at the camera, so every consumer sees the same silence.`,authority:{kind:`camera-audio`,capName:Lo},countsAsSwitchedOff:!0},"broker-audio":{id:`broker-audio`,label:`Audio distribution`,costWhenOff:`Off: this server distributes no sound for this camera — live view is silent and everything recorded while it is off is silent FOREVER, even after you turn it back on. Audio detection and classification also have nothing to analyse. The camera keeps capturing sound, so nothing about the camera changes and turning this back on is instant, with no interruption to the picture.`,authority:{kind:`broker-audio-mute`},countsAsSwitchedOff:!0},"audio-analysis":{id:`audio-analysis`,label:`Audio detection & classification`,costWhenOff:`Off: no audio is decoded or classified for this camera. Tracks carry no audio labels and no audio-triggered rule can fire. Audio recorded alongside video is unaffected.`,authority:{kind:`wrapper-binding`,capName:Io},countsAsSwitchedOff:!0},"event-saving":{id:`event-saving`,label:`Event saving`,costWhenOff:`Off: nothing about this camera is written to its history — no tracks, no events and no event snapshots or clips. Detection keeps running and live boxes still appear, so the camera looks busy while its timeline stays empty, and anything that fires ON an event (notification rules, event-triggered recording) has nothing to fire on. Continuous recording is unaffected, and history already written is kept.`,authority:{kind:`wrapper-binding`,capName:Ro},countsAsSwitchedOff:!0},recording:{id:`recording`,label:`Recording`,costWhenOff:`Off: nothing new is written to disk. Footage already recorded stays, but retention keeps deleting it — so this camera’s history shrinks and is not replaced. Your recording schedule is kept and resumes when you turn it back on.`,authority:{kind:`recording-config`},countsAsSwitchedOff:!0},notifications:{id:`notifications`,label:`Notifications`,costWhenOff:`Off: this camera never notifies anyone, on any rule, with no expiry. Detection, events and recording carry on exactly as before — you simply stop being told about them.`,authority:{kind:`notification-mute`},countsAsSwitchedOff:!0}};function Vo(e,t){switch(e.authority.kind){case`device-disabled`:return{available:!0,enabled:!t.deviceDisabled};case`wrapper-binding`:{let n=e.authority.capName;return t.bindableCapNames===null||t.activeWrapperCapNames===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:t.bindableCapNames.includes(n)?{available:!0,enabled:t.activeWrapperCapNames.includes(n)}:{available:!1,enabled:!0,unavailableReason:`no-provider`}}case`recording-config`:return t.recordingEnabled===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:t.recordingEnabled};case`notification-mute`:return t.notificationsMuted===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:!t.notificationsMuted};case`camera-audio`:{let e=t.deviceAudio;return e===null?{available:!1,enabled:!0,unavailableReason:t.deviceDisabled?`device-disabled`:`source-unreachable`}:e.supported?e.enabled===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:e.enabled}:{available:!1,enabled:!0,unavailableReason:`no-provider`}}case`camera-mask`:{let e=t.privacyMask;return e===null?{available:!1,enabled:!1,unavailableReason:t.deviceDisabled?`device-disabled`:`source-unreachable`}:e.supported?e.configuredRegions===null||e.enabled===null?{available:!1,enabled:!1,unavailableReason:`source-unreachable`}:e.configuredRegions===0?{available:!0,enabled:e.enabled,warning:`no-privacy-zones`}:{available:!0,enabled:e.enabled}:{available:!1,enabled:!1,unavailableReason:`no-provider`}}case`broker-audio-mute`:{let e=t.brokerAudio;return e===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:!e.muted}}}}function Ho(e){return ko.map(t=>{let n=Bo[t],r=Vo(n,e);return{id:n.id,label:n.label,costWhenOff:n.costWhenOff,available:r.available,...r.unavailableReason===void 0?{}:{unavailableReason:r.unavailableReason},...r.warning===void 0?{}:{warning:r.warning},enabled:r.enabled,authority:n.authority}})}function Uo(e){return e.filter(e=>Bo[e.id].countsAsSwitchedOff&&e.available&&!e.enabled).map(e=>e.id)}function Wo(e){let t=[],n=[];for(let r of ko){let i=Bo[r];if(!i.countsAsSwitchedOff)continue;let a=Vo(i,e);a.unavailableReason===`source-unreachable`?n.push(r):a.available&&!a.enabled&&t.push(r)}return{switchedOff:t,unreadable:n}}var Go=`__camstack_redacted__`;function Ko(e){return e.type===`password`?!0:`secret`in e&&e.secret===!0}function qo(e){let t=new Set;for(let n of Xo(e))for(let e of Zo(n))Qo(e,t);return t}function Jo(e){for(let t of Xo(e))if(Zo(t).length>0)return!0;return!1}function Yo(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Xo(e){if(!Yo(e))return[];let t=e.sections;return Array.isArray(t)?t:[]}function Zo(e){if(!Yo(e))return[];let t=e.fields;return Array.isArray(t)?t:[]}function Qo(e,t){if(!Yo(e))return;let n=e.type,r=e.key;if((n===`password`||e.secret===!0)&&typeof r==`string`&&r.length>0&&t.add(r),n===`group`){for(let n of Zo(e))Qo(n,t);return}if(n===`sub-tabs`){let n=e.tabs;if(!Array.isArray(n))return;for(let e of n)for(let n of Zo(e))Qo(n,t)}}var $o=3e4,es=500,ts=6e4,ns=b([`confirmed`,`suppressed`,`exhausted-fallback`]),rs=u({id:c(),at:i().int(),deviceId:i().int(),sourceTrackId:c(),className:c(),verdict:ns,reason:c().nullable(),attempts:i().int(),deferredForMs:i().int(),decidedOnCoastedFrame:S(),birthEvidenceAvailable:S(),decidedByBirthEvidence:S(),bestScore:i().nullable(),appliedMinConfidence:i().nullable(),firstSeen:i().int().nullable(),motionOnsetAt:i().int().nullable(),birthLatencyMs:i().int().nullable(),birthIndexInBurst:i().int().nullable()}),is=u({deviceId:i().int().optional(),since:i().int().optional(),verdict:ns.optional(),limit:i().int().min(1).max(5e3).optional()}),as=5e3,os=200,ss=u({id:c(),note:c(),deviceId:i().int(),sourceTrackId:c(),archivedAt:i().int(),trackStartedAt:i().int().nullable(),trackClass:c().nullable(),trackLabel:c().nullable()}),cs=u({deviceId:i().int().optional(),limit:i().int().min(1).max(1e3).optional()}),ls=2e4,us=5e3,ds=500,fs=b([`same-subject`,`different-subjects`]),ps=b([`before`,`after`]),ms=b([`mixed`,`not-a-subject`]),hs=u({id:c(),deviceId:i().int(),leftTrackId:c(),rightTrackId:c(),leftSide:ps.nullable(),rightSide:ps.nullable(),relation:fs,presence:p(`continuous`).nullable(),leftStartedAt:i().int().nullable(),rightStartedAt:i().int().nullable(),createdAt:i().int(),updatedAt:i().int(),author:c().nullable()}),gs=u({id:c(),deviceId:i().int(),sourceTrackId:c(),purity:ms,switchAtMs:i().int().nullable(),startedAt:i().int().nullable(),createdAt:i().int(),updatedAt:i().int(),author:c().nullable()}),_s=u({deviceId:i().int(),trackId:c().min(1),otherTrackId:c().min(1),relation:fs,presence:p(`continuous`).optional(),trackSide:ps.optional(),otherSide:ps.optional()}),vs=u({deviceId:i().int(),trackId:c().min(1),otherTrackId:c().min(1)}),ys=u({cleared:S()}),bs=u({deviceId:i().int(),trackId:c().min(1),purity:b([`pure`,`mixed`,`not-a-subject`]),switchAtMs:i().int().optional()}),xs=u({purity:gs.nullable()}),Ss=u({deviceId:i().int(),trackId:c().optional(),since:i().int().optional(),until:i().int().optional(),limit:i().int().min(1).max(5e3).optional()}),Cs=u({relations:x(hs).readonly(),purities:x(gs).readonly(),truncated:S()}),ws=b([`unknown-track`,`cross-device`,`self-relation`,`contradiction`,`switch-outside-track`,`switch-needs-mixed`]),Ts={high:`High`,mid:`Mid`,low:`Low`};function Es(e){return Ts[e]??e.charAt(0).toUpperCase()+e.slice(1)}function Ds(e){return(e.width??0)*(e.height??0)}function Os(e){if(e.length===0)return[];let t=e.map((e,t)=>({s:e,i:t,px:Ds(e.metadata??{})})).toSorted((e,t)=>t.px-e.px),n=Array.from({length:e.length});for(let e=0;e<t.length;e++){let{s:r,i}=t[e],a;a=e===0?`high`:e===t.length-1?`low`:`mid`,n[i]={...r,quality:a}}return n}function ks(e){let t=e.height??0,n=e.width??0;return t>=1080||n>=1920?`high`:t>=480||n>=640?`mid`:`low`}function As(e){let t=e.protocols.find(e=>e.type===`rtsp`&&e.url)??e.protocols.find(e=>e.url),n=t?.type,r=n===`rtsp`?`rtsp`:n===`http`||n===`flv`?`http-mjpeg`:`custom`;return{id:e.id,label:e.label??e.id,protocol:r,url:t?.url,profileHint:e.quality}}function I(e){return typeof e==`string`}function js(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ms(e){return I(e)&&e.trim()?{url:e}:js(e)&&I(e.url)&&e.url.trim()?{url:e.url,label:I(e.label)?e.label:void 0}:null}function Ns(e){let t=I(e.snapshot_url)?e.snapshot_url:void 0;if(Array.isArray(e.streams)){let n=[];for(let t of e.streams){let e=Ms(t);e&&n.push(e)}return{streams:n,snapshot_url:t}}let n=[],r=I(e.main_stream_url)?e.main_stream_url:void 0;r&&n.push({url:r,label:I(e.main_stream_name)?e.main_stream_name:void 0});let i=I(e.sub_stream_url)?e.sub_stream_url:void 0;i&&n.push({url:i,label:I(e.sub_stream_name)?e.sub_stream_name:void 0});let a=I(e.third_stream_url)?e.third_stream_url:void 0;return a&&n.push({url:a,label:I(e.third_stream_name)?e.third_stream_name:void 0}),{streams:n,snapshot_url:t}}function Ps(e){if(e.length===0)return{};let t=Os(e),n={},r=t.find(e=>e.quality===`high`),i=t.find(e=>e.quality===`mid`),a=t.find(e=>e.quality===`low`);r&&(n.high=r.id),i&&(n.mid=i.id),a&&(n.low=a.id);let o=r??i??a??t[0];return o&&(n.high||=o.id,n.mid||=o.id,n.low||=o.id),n}var Fs={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},Is={debug:0,info:1,warn:2,error:3};function Ls(e,t){return Is[e]<=Is[t]}var Rs=b([`recording`,`events`]),zs=b([`prune`,`manual-delete`,`rescan`,`retention-run`,`relocate`,`orphan-audit`]),Bs=b([`retention`,`quota`,`manual`,`operator`,`maintenance`,`orphaned-device`]),Vs=u({id:c(),at:i(),domain:Rs,op:zs,reason:Bs,deviceId:i().nullable(),nodeId:c(),itemsAffected:i(),bytesReclaimed:i(),detail:c().nullable(),actor:c()}),Hs=u({deviceId:i().optional(),limit:i().int().min(1).max(1e3).optional()}),Us=500,Ws=200,Gs=u({id:c(),name:c(),category:c().optional(),description:c().optional(),icon:c().optional()}),Ks=[`person`,`vehicle`,`animal`,`package`],qs=[`person`,`vehicle`,`animal`];function Js(e){return qs.some(t=>t===e)}var Ys=u({mapping:v(c(),b(Ks)),preserveOriginal:S()}),Xs={preMs:5e3,postMs:1e4},Zs=i().int().min(0).max(6),Qs=/^([01]\d|2[0-3]):[0-5]\d$/,$s=b([`off`,`events`,`continuous`,`on-device-decision`]),ec=b(qs),tc=e=>new Set(e).size===e.length,nc=16,rc=-30,ic=u({motion:S().optional(),audioThresholdDbfs:i().optional(),objectClasses:x(ec).min(1).refine(tc,{message:`objectClasses must not repeat a class`}).optional(),sensorDeviceIds:x(i().int().positive()).min(1).max(16).refine(tc,{message:`sensorDeviceIds must not repeat a device`}).optional()}),ac=b([`continuous`,`events`]),oc=ic,sc=b([`on`,`muted`]),cc=u({days:x(Zs),start:c().regex(Qs),end:c().regex(Qs),mode:ac,audio:sc.optional(),triggers:oc.optional(),preBufferSec:i().min(0).optional(),postBufferSec:i().min(0).optional()}),lc={postBufferSec:30};function uc(e){let t=[],n=e.bands.map((e,n)=>{if(e.preBufferSec===void 0)return e;t.push(n);let{preBufferSec:r,...i}=e;return i});return t.length===0?{config:e,strippedBands:t}:{config:{...e,bands:n},strippedBands:t}}var dc=lc.postBufferSec*1e3,fc=u({maxAgeDays:i().min(0).optional(),maxSizeGb:i().min(0).optional()}),pc=u({enabled:S(),mode:$s.optional(),profiles:x(C).optional(),segmentSeconds:i().int().positive().optional(),bands:x(cc).default([]),deviceDecision:S().optional(),retention:fc.optional()}).strict().refine(e=>e.deviceDecision!==!0||e.bands.length===0,{message:`deviceDecision is a whole-config mode and carries no schedule: it cannot be combined with bands`,path:[`bands`]});function mc(e){return e.enabled?e.deviceDecision===!0?`on-device-decision`:e.bands.length===0?`off`:e.bands.some(e=>e.mode===`continuous`)?`continuous`:`events`:`off`}var hc=[`high`,`low`];function gc(e,t){if(t!==void 0&&t.length>0){let n=e.filter(e=>t.includes(e));return n.length>0?n:[...e]}let n=e.filter(e=>hc.includes(e));return n.length>0?n:[...e]}var _c=[`motion`,`audioThresholdDbfs`,`objectClasses`,`sensorDeviceIds`];function vc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function yc(e){return vc(e)&&vc(e.triggers)&&e.triggers.deviceSignal===!0}function bc(e){let t=e.triggers;return vc(t)?_c.some(e=>t[e]!==void 0):!1}function xc(e){let t=e.triggers;if(!vc(t))return e;let{deviceSignal:n,...r}=t;return{...e,triggers:r}}function Sc(e){let t={value:e,migrated:!1,strippedOnly:!1};if(!vc(e)||!Array.isArray(e.bands)||!e.bands.some(yc))return t;let n=[];for(let t of e.bands){if(!yc(t)||!vc(t)){n.push(t);continue}bc(t)&&n.push(xc(t))}if(n.length>0)return{value:{...e,bands:n},migrated:!1,strippedOnly:!0};let{mode:r,...i}=e;return{value:{...i,bands:[],deviceDecision:!0},migrated:!0,strippedOnly:!1}}var Cc=b([`queued`,`running`,`done`,`failed`,`cancelled`]),wc=u({jobId:c(),state:Cc,fromLocationId:c(),toLocationId:c(),deviceId:i().nullable(),entities:x(c()),filesMoved:i().int(),bytesMoved:i().int(),filesTotal:i().int().nullable(),rowsReconciled:i().int().nonnegative().optional(),rowsForgotten:i().int().nonnegative().optional(),startedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),Tc=b([`recordings`,`recordingsLow`]),Ec=u({fromLocationId:c(),toLocationId:c(),entities:x(b([`segments`])).optional(),footageClass:Tc.optional(),deviceId:i().int().optional(),profiles:x(c()).optional(),throttleMbps:i().min(1).max(1e3).optional(),sinceMs:i().int().optional()}),Dc=u({leaseId:c().min(1)}),Oc=Ec.extend({leaseId:c().min(1)}),kc=b([`move`,`seal`,`gallery`]),Ac=u({toLocationId:c(),fromLocationId:c().optional(),throttleMbps:i().min(1).max(1e3).optional(),mode:kc.optional()}),jc=u({present:S(),rows:i().int().nonnegative().nullable()}),Mc=u({media:jc,retrainFrames:jc,anyPresent:S(),total:i().int().nonnegative().nullable()}).nullable(),Nc=Ac.extend({leaseId:c().min(1)}),Pc=b([`recordings`,`recordingsLow`,`eventMedia`,`backups`,`galleryMedia`]),Fc=u({recordings:c().min(1).optional(),recordingsLow:c().min(1).optional(),eventMedia:c().min(1).optional(),backups:c().min(1).optional(),galleryMedia:c().min(1).optional()}).refine(e=>Object.keys(e).length>0,{message:`select at least one storage class`}),Ic=u({recordings:c().min(1).optional(),recordingsLow:c().min(1).optional(),eventMedia:c().min(1).optional(),backups:c().min(1).optional(),galleryMedia:c().min(1).optional()}).optional(),Lc=b([`blocking`,`nonBlocking`]),Rc=u({destinations:Fc,sources:Ic,throttleMbps:i().min(1).max(1e3).optional(),mode:Lc.optional()}),zc=b([`planning`,`sealing`,`pausing`,`moving`,`draining`,`verifying`,`repointing`,`refreshing`,`resuming`,`done`,`failed`,`cancelled`]),Bc=b([`pipeline`,`recorder`,`analytics`]),Vc=u({filesMoved:i().int().nonnegative(),filesTotal:i().int().nonnegative().nullable(),bytesMoved:i().int().nonnegative(),rowsReconciled:i().int().nonnegative().optional(),startedAt:i(),observedAt:i()}),Hc=u({storageClass:Pc,fromLocationId:c(),toLocationId:c(),freezeSource:S().optional(),moverJobId:c().nullable(),state:Cc.nullable(),error:c().nullable(),progress:Vc.nullable()}),Uc=u({jobId:c(),phase:zc,mode:Lc,destinations:Fc,sources:Ic,throttleMbps:i(),moves:x(Hc),pauseLeaseId:c().nullable(),pausedParticipants:x(Bc),repointed:S(),cancelRequested:S(),startedAt:i(),updatedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),Wc=b([`sharesDeviceWithSource`,`deviceIdentityUnknown`,`unstampedEventMediaRows`,`blockingOnly`,`noMover`]),Gc=u({code:Wc,storageClass:Pc,message:c()}),Kc=u({destinations:Fc,sources:Ic,mode:Lc,moves:x(u({storageClass:Pc,fromLocationId:c(),toLocationId:c(),freezeSource:S().optional()})),findings:x(Gc)}),qc=b([`footage`,`media`]),Jc=u({lane:qc,job:wc,migrationJobId:c().nullable(),observedAt:i()}),Yc=u({storageClass:Pc,fromLocationId:c(),toLocationId:c(),items:i().int().nonnegative().nullable(),bytes:i().int().nonnegative().nullable()}),Xc=u({classes:x(Pc).min(1),throttleMbps:i().min(1).max(1e3).optional()}),Zc=u({fromLocationId:c().min(1),footageClass:Tc.optional()}),Qc=u({segments:i().int().nonnegative(),bytes:i().int().nonnegative()}).nullable(),$c=u({locationId:c().min(1),apply:S().optional(),deviceId:i().int().positive().optional(),profiles:x(c().min(1)).optional()}),el=b([`location-unknown`,`source-writable`,`no-ledger`,`archive-unreadable`,`anchor-absent`,`anchor-unreadable`,`anchor-moved`]),tl=b([`live-tail`,`listing-error`,`path-mismatch`,`durable-refused`]),nl=u({"live-tail":i().int().nonnegative(),"listing-error":i().int().nonnegative(),"path-mismatch":i().int().nonnegative(),"durable-refused":i().int().nonnegative()}),rl=u({deviceId:i().int(),hoursWalked:i().int().nonnegative(),hoursMissing:i().int().nonnegative(),ghostSegments:i().int().nonnegative(),ghostBytes:i().int().nonnegative(),forgottenSegments:i().int().nonnegative(),orphanFiles:i().int().nonnegative()}),il=u({locationId:c(),applied:S(),refused:el.nullable(),archiveSegments:i().int().nonnegative().nullable(),archiveBytes:i().int().nonnegative().nullable(),hoursClaimed:i().int().nonnegative(),hoursWalked:i().int().nonnegative(),hoursMissing:i().int().nonnegative(),listings:i().int().nonnegative(),segmentsClaimed:i().int().nonnegative(),ghostSegments:i().int().nonnegative(),ghostBytes:i().int().nonnegative(),ghostHoursWhole:i().int().nonnegative(),forgottenSegments:i().int().nonnegative(),forgottenBytes:i().int().nonnegative(),orphanFiles:i().int().nonnegative(),orphanSample:x(c()).readonly(),hoursSkipped:i().int().nonnegative(),skippedByReason:nl,bounded:S(),byDevice:x(rl).readonly()}),al=u({rows:i().int().nonnegative()}).nullable(),ol=u({toLocationId:c().min(1),fromLocationId:c().optional(),mode:kc.optional()}),sl=b([`orphans`,`debug-media`,`ghost-ledger`,`done`,`failed`,`cancelled`]),cl=u({includeDebugMedia:S().optional()}),ll=u({jobId:c(),phase:sl,includeDebugMedia:S(),orphansReclaimed:i().int().nonnegative(),orphanBytesReclaimed:i().int().nonnegative(),debugMediaReclaimed:i().int().nonnegative(),debugMediaBytesReclaimed:i().int().nonnegative(),ghostsForgotten:i().int().nonnegative(),ghostBytesForgotten:i().int().nonnegative(),detail:c().nullable(),cancelRequested:S(),startedAt:i(),updatedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),ul=u({jobId:c().optional()}),dl=[`face`,`plate`],fl=[`face`,`plate`,`clip`,`custom`],pl=[`active`,`readonly`,`drain`,`disabled`],ml=b(pl),hl=b([`normal`,`never`,`drain`]),gl=`readOnly`;function _l(e){return e===`active`}function vl(e){return e!==`disabled`}function yl(e){switch(e){case`active`:return`normal`;case`drain`:return`drain`;case`readonly`:case`disabled`:return`never`}}function bl(e){return e.mode===void 0&&(e.config.readOnly===!0||e.enabled===!1)?`readonly`:null}function xl(e){return(Sl(e.mode)?e.mode:void 0)??bl(e)??`active`}function Sl(e){return pl.some(t=>t===e)}function Cl(e){return _l(xl(e))}function wl(e){return vl(xl(e))}function Tl(e){return yl(xl(e))}function El(e){if(!(`readOnly`in e))return e;let t={...e};return delete t[gl],t}function Dl(e,t){return{...e,mode:t,enabled:_l(t),config:El(e.config)}}var Ol=c().regex(/^[a-z][a-zA-Z0-9-]*$/),L=u({id:c().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),type:c(),displayName:c().min(1),providerId:c().min(1),config:v(c(),o()),nodeId:c().optional(),isSystem:S().default(!1),enabled:S().optional(),mode:ml.optional(),capacity:u({totalBytes:i(),availableBytes:i()}).nullable().optional(),owned:u({bytes:i().int().nonnegative(),measuredAtMs:i().int().nonnegative()}).optional(),createdAt:i(),updatedAt:i()}),kl=u({isDefault:S().optional()});function Al(e){return Cl({...e,config:e.config??{}})}var jl=1024**3;function Ml(e){return Math.floor(e*jl)}var Nl=u({locationId:c(),startedAtMs:i(),startBytes:i(),bytesRemaining:i(),drained:S(),estimatedEmptyAtMs:i().nullable()}),R=d([Ol,c().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/)]),Pl=b([`local-path`,`cap-mediated`]),Fl=`local-path`,Il=u({id:c().regex(/^[a-z][a-zA-Z0-9-]*$/,{message:`id must start with a lowercase letter and contain only letters, digits, or hyphens`}),displayName:c().min(1,{message:`displayName must not be empty`}),description:c().optional(),cardinality:b([`single`,`multi`]),access:Pl.optional(),defaultsTo:c().optional(),defaultRoot:b([`data`,`media`,`backup`]).optional()}),Ll=u({inputFps:i(),outputFps:i(),avgDecodeTimeMs:i(),droppedFrames:i(),lagMs:i().optional(),effectiveFps:i().optional(),adaptiveFps:i().optional()}),Rl=u({codec:c(),maxFps:i().default(0),outputFormat:b([`jpeg`,`rgb`,`bgr`,`yuv420`,`gray`]).default(`jpeg`),scale:i().default(1),width:i().optional(),height:i().optional(),deviceId:i().int().nonnegative().optional(),tag:c().optional(),frameSink:b([`callback`,`shm`]).default(`callback`),debug:S().optional()}),zl={offsetHours:1,startMonth:3,startWeekIndex:5,startWeekday:`Sunday`,startHour:2,endMonth:10,endWeekIndex:5,endWeekday:`Sunday`,endHour:3},Bl={offsetHours:1,startMonth:3,startWeekIndex:2,startWeekday:`Sunday`,startHour:2,endMonth:11,endWeekIndex:1,endWeekday:`Sunday`,endHour:2},Vl=[{id:`UTC`,label:`UTC (UTC+0)`,region:`Universal`,stdOffsetMinutes:0,dst:null},{id:`Europe/London`,label:`Europe/London (UTC+0 / BST)`,region:`Europe`,stdOffsetMinutes:0,dst:zl},{id:`Europe/Rome`,label:`Europe/Rome (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Paris`,label:`Europe/Paris (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Berlin`,label:`Europe/Berlin (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Madrid`,label:`Europe/Madrid (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Amsterdam`,label:`Europe/Amsterdam (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Istanbul`,label:`Europe/Istanbul (UTC+3)`,region:`Europe`,stdOffsetMinutes:180,dst:null},{id:`America/New_York`,label:`America/New York (UTC−5 / EDT)`,region:`Americas`,stdOffsetMinutes:-300,dst:Bl},{id:`America/Chicago`,label:`America/Chicago (UTC−6 / CDT)`,region:`Americas`,stdOffsetMinutes:-360,dst:Bl},{id:`America/Denver`,label:`America/Denver (UTC−7 / MDT)`,region:`Americas`,stdOffsetMinutes:-420,dst:Bl},{id:`America/Los_Angeles`,label:`America/Los Angeles (UTC−8 / PDT)`,region:`Americas`,stdOffsetMinutes:-480,dst:Bl},{id:`America/Sao_Paulo`,label:`America/Sao Paulo (UTC−3)`,region:`Americas`,stdOffsetMinutes:-180,dst:null},{id:`Asia/Dubai`,label:`Asia/Dubai (UTC+4)`,region:`Asia`,stdOffsetMinutes:240,dst:null},{id:`Asia/Kolkata`,label:`Asia/Kolkata (UTC+5:30)`,region:`Asia`,stdOffsetMinutes:330,dst:null},{id:`Asia/Singapore`,label:`Asia/Singapore (UTC+8)`,region:`Asia`,stdOffsetMinutes:480,dst:null},{id:`Asia/Shanghai`,label:`Asia/Shanghai (UTC+8)`,region:`Asia`,stdOffsetMinutes:480,dst:null},{id:`Asia/Tokyo`,label:`Asia/Tokyo (UTC+9)`,region:`Asia`,stdOffsetMinutes:540,dst:null},{id:`Australia/Sydney`,label:`Australia/Sydney (UTC+10 / AEDT)`,region:`Oceania`,stdOffsetMinutes:600,dst:{offsetHours:1,startMonth:10,startWeekIndex:1,startWeekday:`Sunday`,startHour:2,endMonth:4,endWeekIndex:1,endWeekday:`Sunday`,endHour:3}}];function Hl(e){return Vl.find(t=>t.id===e)}var Ul=b([`info`,`warn`,`error`]),Wl=u({name:c().min(3).regex(/^[a-z0-9-]+(\.[a-z0-9-]+)+$/,`a channel name is dotted lower-kebab, e.g. area.thing`),description:c().min(1),defaultLevel:Ul,perDevice:S()}),Gl=u({channel:c().min(1),armedUntilMs:i(),deviceIds:x(i().int()).readonly().nullable()}),Kl=class{descriptor;on=!1;devices=null;level;closesAtMs=0;constructor(e){this.descriptor=e,this.level=e.defaultLevel}get armedUntilMs(){return this.on?this.closesAtMs:0}wants(e){return this.on?this.devices===null||this.devices.has(e):!1}log(e,t,n){if(!this.on)return;let r={...n.tags,logChannel:this.descriptor.name},i={...n,tags:r};this.level===`error`?e.error(t,i):this.level===`warn`?e.warn(t,i):e.info(t,i)}arm(e){let t=e.deviceIds;this.devices=t===null||t.length===0?null:new Set(t),this.closesAtMs=e.armedUntilMs,this.on=!0}disarm(){this.on=!1,this.devices=null,this.closesAtMs=0}},ql=class{gates=new Map;declare(e){let t=Wl.parse(e);if(this.gates.get(t.name)!==void 0)throw Error(`log channel "${t.name}" is already declared in this process — two declarations of one name is a programming error, not a merge`);let n=new Kl(t);return this.gates.set(t.name,n),n}list(){return[...this.gates.values()].map(e=>e.descriptor).sort((e,t)=>e.name.localeCompare(t.name))}gate(e){return this.gates.get(e)}apply(e,t){let n=new Map,r=[];for(let i of e)if(!(i.armedUntilMs<=t)){if(!this.gates.has(i.channel)){r.push(i.channel);continue}n.set(i.channel,i)}for(let[e,t]of this.gates){let r=n.get(e);r===void 0?t.disarm():t.arm(r)}return r}tick(e){let t=[];for(let[n,r]of this.gates)r.on&&r.armedUntilMs<=e&&(r.disarm(),t.push(n));return t}armed(){let e=[];for(let[t,n]of this.gates)n.on&&e.push({channel:t,armedUntilMs:n.armedUntilMs,deviceIds:null});return e}},Jl=null;function Yl(){return Jl??=new ql,Jl}function Xl(e){return Yl().declare(e)}function Zl(){Jl=null}var Ql=5e3;function $l(e,t={}){let n=Yl(),r=t.now??Date.now,i=t.tickMs??5e3,a=setInterval(()=>{let t=n.tick(r());for(let n of t)e.info(`log channel window closed`,{tags:{logChannel:n},meta:{channel:n}})},i);return a.unref?.(),{list:()=>n.list(),apply:t=>{let i=n.apply(t.windows,r()),a=n.armed();return e.info(`log channels applied`,{meta:{armed:a.map(e=>e.channel),unknown:i,declared:n.list().length}}),{armed:a.length,unknown:i}},stop:()=>{clearInterval(a)}}}var eu=16,tu=1024,nu=`other`;function ru(e,t,n){return n===void 0?`${e}${t}`:`${e}${t}${n}`}var iu=class{maxKeys;maxReasons;counters=new Map;refused=0;constructor(e=tu,t=16){this.maxKeys=e,this.maxReasons=t}get keysRefused(){return this.refused}get size(){return this.counters.size}note(e,t){if(!Number.isInteger(e.deviceId)||e.deviceId<=0)return;let n=ru(e.deviceId,e.family,e.variant),r=this.counters.get(n);if(r===void 0){if(this.counters.size>=this.maxKeys){this.refused+=1;return}r={deviceId:e.deviceId,family:e.family,variant:e.variant,sinceMs:t,attempts:0,succeeded:0,reasons:new Map},this.counters.set(n,r)}if(r.attempts+=1,e.reason===void 0){r.succeeded+=1;return}let i=r.reasons.has(e.reason)||r.reasons.size<this.maxReasons?e.reason:nu;r.reasons.set(i,(r.reasons.get(i)??0)+1)}snapshot(e){let t=[];for(let n of this.counters.values())t.push({deviceId:n.deviceId,family:n.family,...n.variant===void 0?{}:{variant:n.variant},sinceMs:n.sinceMs,atMs:e,attempts:n.attempts,succeeded:n.succeeded,reasons:[...n.reasons.entries()].map(([e,t])=>({reason:e,count:t})).toSorted((e,t)=>t.count-e.count)});return t}clear(){this.counters.clear()}};function au(e){return e.attempts<=0?null:(e.attempts-e.succeeded)/e.attempts}var ou=`__unattributed__`,su=`__root__`;function cu(e){return e.addonId===null?e.classification===`root`?{key:su,kind:`root`}:{key:ou,kind:`unattributed`}:{key:e.addonId,kind:`addon`}}function lu(e){return Math.round(e*10)/10}function uu(e,t){let n=new Map;for(let t of e){let{key:e,kind:r}=cu(t),i=n.get(e)??{kind:r,main:0,gc:0,lifetime:0,memory:0,count:0,splitKnown:!0},a=t.cpuMainPercent!==null&&t.cpuGcPercent!==null;n.set(e,{kind:i.kind,main:i.main+(t.cpuMainPercent??0),gc:i.gc+(t.cpuGcPercent??0),lifetime:i.lifetime+t.cpuPercent,memory:i.memory+t.memoryRssBytes,count:i.count+1,splitKnown:i.splitKnown&&a})}return[...n.entries()].map(([e,n])=>{let r=n.splitKnown?lu(n.main):null,i=n.splitKnown?lu(n.gc):null,a=lu(n.lifetime);return{key:e,kind:n.kind,point:{atMs:t,samples:1,cpuMainPercent:r,cpuMainPercentMin:r,cpuGcPercent:i,cpuGcPercentMin:i,cpuLifetimePercent:a,cpuLifetimePercentMin:a,memoryRssBytes:n.memory,memoryRssBytesMin:n.memory,processCount:n.count,processCountMin:n.count}}})}function du(e,t){return e===null||t===null?null:e<t?e:t}function fu(e,t){return e===null||t===null?null:e>t?e:t}function pu(e,t,n){return{atMs:n,samples:e.samples+t.samples,cpuMainPercent:fu(e.cpuMainPercent,t.cpuMainPercent),cpuMainPercentMin:du(e.cpuMainPercentMin,t.cpuMainPercentMin),cpuGcPercent:fu(e.cpuGcPercent,t.cpuGcPercent),cpuGcPercentMin:du(e.cpuGcPercentMin,t.cpuGcPercentMin),cpuLifetimePercent:Math.max(e.cpuLifetimePercent,t.cpuLifetimePercent),cpuLifetimePercentMin:Math.min(e.cpuLifetimePercentMin,t.cpuLifetimePercentMin),memoryRssBytes:Math.max(e.memoryRssBytes,t.memoryRssBytes),memoryRssBytesMin:Math.min(e.memoryRssBytesMin,t.memoryRssBytesMin),processCount:Math.max(e.processCount,t.processCount),processCountMin:Math.min(e.processCountMin,t.processCountMin)}}function mu(e,t,n){if(n<=0||t<=0||e<=0)return Math.max(t,1);let r=e/n;return r<=t?t:Math.ceil(r/t)*t}function hu(e,t,n){if(t<=0||e.length===0)return e;let r=new Map;for(let i of e){let e=n+Math.floor((i.atMs-n)/t)*t,a=r.get(e);r.set(e,a===void 0?{...i,atMs:e}:pu(a,i,e))}return[...r.values()].toSorted((e,t)=>e.atMs-t.atMs)}function gu(e,t,n,r={}){if(e.length===0)return null;let i=`${n}/`,a=e=>({brokerId:e.brokerId,profileId:e.brokerId.startsWith(i)?e.brokerId.slice(i.length):e.brokerId,url:e.url,mutedUrl:e.mutedUrl,enabled:e.enabled,...e.codec===void 0?{}:{codec:e.codec},...e.resolution===void 0?{}:{resolution:e.resolution}});if(t!==`auto`){let n=e.find(e=>e.enabled&&e.url.length>0&&(e.profile===t||e.brokerId===`${i}${t}`));if(n)return a(n)}let o=e.filter(e=>e.enabled&&e.url.length>0);if(o.length===0)return null;let s=r.targetResolution;if(s){let e=o.filter(e=>e.resolution!==void 0);if(e.length>0){let t=_u(e,s);if(t)return a(t)}}return a(o[0])}function _u(e,t){let n=t.width*t.height;return[...e.flatMap(e=>e.resolution===void 0?[]:[{entry:e,pixels:e.resolution.width*e.resolution.height}])].sort((e,t)=>Na(e.pixels,t.pixels,n))[0]?.entry}var vu=1,yu=96,bu={upperHs:[0,32],upperV:[32,40],upperGrad:[40,48],lowerHs:[48,80],lowerV:[80,88],lowerGrad:[88,96]},xu=!1,Su=[`motion`,`objects`,`discarded`,`stationary`],Cu=[`motion`,`objects`,`stationary`],wu={borderWidth:2,dashed:!0,dashPattern:[6,4],opacity:1,borderRadius:2};function Tu(e){return!Number.isFinite(e)||e<=0?`0 s`:e<6e4?`${String(Math.round(e/1e3))} s`:e<36e5?`${String(Math.round(e/6e4))} min`:`${String(Math.round(e/36e5))} h`}var Eu=[`onnx`,`coreml`,`openvino`,`tflite`,`pt`],Du={yolo26:`YOLO26`,"yolo26-seg":`YOLO26-seg`,yolov9:`YOLOv9`};function Ou(e){return Du[e]??e.toUpperCase()}var ku={"yolo26-seg":`detection + masks, slightly heavier`},Au=/\s*@\s*\d+\s*(?:[x×]\s*\d+)?/gi;function ju(e,t){let n=Ou(e),r=t.replace(RegExp(`^${n}\\s+`,`i`),``).replace(Au,``).trim();return r.length>0?r:t}function Mu(e,t){let n=[];return t===`test`&&n.push(`Test`),n.push(e===`int8`?`Int8`:`Standard`),n.join(` · `)}function Nu(e){return Eu.filter(t=>e.formats[t]!==void 0)}function Pu(e){let t=Eu.map(t=>e.formats[t]?.sizeMB).filter(e=>typeof e==`number`);return t.length>0?Math.min(...t):0}var Fu=[`t`,`n`,`s`,`m`,`c`,`l`,`x`],Iu=[`fp32`,`int8`];function Lu(e){let t=new Map;for(let n of e){if(n.legacy===!0||n.group===void 0)continue;let{family:e,tier:r}=n.group,i=t.get(e)??new Map,a=i.get(r)??[];a.push(n),i.set(r,a),t.set(e,i)}let n=[];for(let[e,r]of t){let t=[];for(let[n,i]of r){let r=i.map(e=>{let t=e.group?.precision??`fp32`,n=e.group?.optimization??`standard`;return{modelId:e.id,precision:t,optimization:n,resolution:e.group?.resolution,label:Mu(t,n),formats:Nu(e),sizeMB:Pu(e)}}).toSorted((e,t)=>e.resolution===t.resolution?e.optimization===t.optimization?Iu.indexOf(e.precision)-Iu.indexOf(t.precision):e.optimization===`test`?1:-1:(t.resolution??1/0)-(e.resolution??1/0)),a=r.find(e=>e.precision===`fp32`&&e.optimization===`standard`)??r[0];if(a===void 0)continue;let o=i.find(e=>e.id===a.modelId);t.push({tier:n,label:o?ju(e,o.name):n.toUpperCase(),baseModelId:a.modelId,options:r})}t.sort((e,t)=>{let n=Fu.indexOf(e.tier),r=Fu.indexOf(t.tier);return n!==-1&&r!==-1?n-r:n===-1?r===-1?e.tier.localeCompare(t.tier):1:-1});let i=ku[e];n.push({family:e,label:Ou(e),...i===void 0?{}:{hint:i},tiers:t})}return n.sort((e,t)=>e.family.localeCompare(t.family)),n}function Ru(e,t){let n=t.precision??`fp32`,r=t.optimization??`standard`,i=e.filter(e=>e.group!==void 0&&e.group.family===t.family&&e.group.tier===t.tier&&(e.group.precision??`fp32`)===n&&(e.group.optimization??`standard`)===r);return t.resolution===void 0?i.toSorted((e,t)=>(t.group?.resolution??1/0)-(e.group?.resolution??1/0))[0]?.id??null:i.find(e=>e.group?.resolution===t.resolution)?.id??null}function zu(e,t){let n=e.find(e=>e.id===t);return n?.group===void 0?null:{family:n.group.family,tier:n.group.tier,precision:n.group.precision??`fp32`,optimization:n.group.optimization??`standard`,resolution:n.group.resolution}}var Bu=/^object-clip(-[a-z0-9][a-z0-9-]*)?$/,Vu=u({textModelId:c().min(1),embeddingDim:i().int().positive(),vectorIndex:c().regex(Bu),tokenizerFile:c().min(1),contextLength:i().int().positive(),padId:i().int().nonnegative(),searchMinScore:i().min(0).max(1)}),Hu=[`loose`,`balanced`,`strict`],Uu=b(Hu),Wu={loose:1,balanced:1.25,strict:1.5};function Gu(e,t){if(t.minScore!==void 0)return t.minScore;let n=Wu[t.strictness??`loose`];return Math.min(1,Math.round(e.searchMinScore*n*1e3)/1e3)}var Ku=[`animal-classifier`,`vehicle-classifier`,`package-detection`],qu=[`plate-detection`,`face-detection`],Ju=[`segmentation`],Yu=[...Ku,...qu,...Ju];function Xu(e){return Yu.some(t=>t===e)}function Zu(e){return Ku.some(t=>t===e)}var Qu={"animal-classifier":[`bird`,`cat`,`cow`,`deer`,`dog`,`horse`,`sheep`,`squirrel`],"vehicle-classifier":[`Ambulance`,`Bicycle`,`Bus`,`Car`,`Motorcycle`,`Taxi`,`Truck`,`Van`],"package-detection":[`package`]},$u={"animal-classifier":`animal`,"vehicle-classifier":`vehicle`,"package-detection":`package`},ed={"animal-classifier":{},"vehicle-classifier":{school_bus:`Bus`,garbage_truck:`Truck`},"package-detection":{}},td={"plate-detection":{rootLabels:[`license_plate`],parentMacro:`vehicle`,childClass:`plate`,servedChildSteps:[`plate-ocr`],use:`as-output`},"face-detection":{rootLabels:[`face`],parentMacro:`person`,childClass:`face`,servedChildSteps:[`face-embedding`],use:`refine`,minRootInputPx:640}},nd={"animal-classifier":!0,"vehicle-classifier":!0,"package-detection":!0,"plate-detection":!1,"face-detection":!1,segmentation:!0},rd=`useRootModel`,id=`labelLink`,ad=`detector-link:`;function od(e){return`${ad}${e}`}function sd(e){if(e===void 0||!e.startsWith(`detector-link:`))return;let t=e.slice(14);return Zu(t)?t:void 0}function cd(e,t){let n=ed[e][t];if(n!==void 0)return n;let r=t.toLowerCase();return Qu[e].find(e=>e.toLowerCase()===r)}function ld(e,t){let n=[];if(t!==void 0)for(let r of Ku){let i={};for(let n of e){if(t.mapping[n]!==$u[r])continue;let e=cd(r,n);e!==void 0&&(i[n]=e)}let a=new Set(Object.values(i));if(a.size===0)continue;let o=Qu[r].filter(e=>!a.has(e));n.push({kind:`label`,stepId:r,labelToEffect:i,uncovered:o})}let r=new Set(e);for(let e of qu){let t=td[e],i=t.rootLabels.filter(e=>r.has(e));i.length!==0&&n.push({kind:`crop`,stepId:e,rootLabels:i,parentMacro:t.parentMacro,childClass:t.childClass})}return n}var ud=[`yolo-seg`];function dd(e){return e===void 0||!ud.includes(e)?[]:Ju.map(e=>({kind:`mask`,stepId:e}))}function fd(e,t){let n=e?.suppliesSteps??ld(e!==void 0&&e.labels.length>0?e.labels.map(e=>e.id):t.labels,e?.classMap??t.classMap),r=dd(e?.postprocessor).filter(e=>!n.some(t=>t.stepId===e.stepId)),i=r.length>0?[...n,...r]:n,a=e===void 0?void 0:Math.min(e.inputSize.width,e.inputSize.height);return a===void 0?i:i.map(e=>e.kind===`crop`?{...e,rootInputPx:a}:e)}function pd(e,t){return e?.find(e=>e.stepId===t)}function md(e,t){let n=t?.[rd];if(typeof n==`boolean`)return n;let r=t?.[id];return r===`skip-when-filled`?!0:r===`run`?!1:nd[e]}function hd(e){if(e.kind!==`crop`)return;let t=td[e.stepId].minRootInputPx;if(t!==void 0)return e.rootInputPx!==void 0&&e.rootInputPx>=t?void 0:`root-input-too-small`}function gd(e,t,n){let r=pd(n,e),i=md(e,t),a=r===void 0?`root-does-not-declare`:hd(r);return{stepId:e,supply:r,intent:i,effective:i&&a===void 0,inactive:i&&a!==void 0,...i&&a!==void 0?{inactiveReason:a}:{}}}function _d(e,t){let n=t?.enabledClasses;return!Array.isArray(n)||n.length===0?!0:n.some(t=>t===e)}function vd(e){return td[e].servedChildSteps}var yd=.9;function bd(e,t){let n=e.w*e.h;if(!(n>0))return-1;let r=-1,i=1/0;return t.forEach((t,a)=>{if(Math.max(0,Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y))/n<.9)return;let o=t.w*t.h;o<i&&(r=a,i=o)}),r}var xd={"animal-classifier":`animals`,"vehicle-classifier":`vehicles`,"package-detection":`packages`,"plate-detection":`plates`,"face-detection":`faces`,segmentation:`masks`};function Sd(e){let t=xd[e.stepId];if(e.kind!==`label`)return t;let n=Qu[e.stepId].length;return n<=1?t:`${t} ${String(n-e.uncovered.length)}/${String(n)}`}function Cd(e){return(e??[]).map(Sd).join(` · `)}var wd=[`onnx`,`coreml`,`openvino`,`tflite`,`pt`,`gguf`],Td=u({url:c(),sizeMB:i(),isDirectory:S().optional(),files:x(c()).readonly().optional(),runtimes:x(b([`python`])).readonly().optional()}),Ed=u({url:c(),filename:c(),sizeMB:i()}),Dd=u({onnx:Td.optional(),coreml:Td.optional(),openvino:Td.optional(),tflite:Td.optional(),pt:Td.optional(),gguf:Td.optional()}),Od=u({family:c(),tier:c(),precision:b([`fp32`,`int8`]).optional(),optimization:b([`standard`,`test`]).optional(),resolution:i().int().positive().optional()}),kd=[`camstack`,`frigate`,`scrypted`,`custom`],Ad=b(kd);function jd(e){if(e.provider!==void 0)return e.provider;let t=`${e.id} ${e.description??``}`;return/scrypted/i.test(t)?`scrypted`:/frigate/i.test(t)?`frigate`:`custom`}var Md=[`camstack-hf`,`third-party`,`built-in`],Nd=n(e=>typeof e==`string`?{weights:e}:e,u({weights:c().min(1),code:c().min(1).optional(),data:u({name:c().min(1),terms:c().min(1),url:c().url().optional()}).optional(),upstream:u({name:c().min(1),url:c().url()}).optional(),url:c().url().optional(),attribution:c().min(1).optional(),modifications:c().min(1).optional(),hosting:b(Md).optional(),nonCommercial:S().optional()})),Pd=f(`kind`,[u({kind:p(`label`),stepId:b(Ku),labelToEffect:v(c(),c()),uncovered:x(c()).readonly()}),u({kind:p(`crop`),stepId:b(qu),rootLabels:x(c()).readonly(),parentMacro:b([`vehicle`,`person`]),childClass:b([`plate`,`face`]),rootInputPx:i().int().positive().optional()}),u({kind:p(`mask`),stepId:b(Ju)})]),Fd=u({id:c(),name:c(),description:c(),formats:Dd,inputSize:u({width:i(),height:i()}),inputChannels:i().int().positive().optional(),labels:x(Gs).readonly(),inputLayout:b([`nchw`,`nhwc`]).optional(),inputNormalization:b([`zero-one`,`imagenet`,`none`,`scrfd`]).optional(),outputProbabilities:S().optional(),preprocessMode:b([`letterbox`,`resize`]).optional(),postprocessor:g().optional(),defaultConfidence:i().min(0).max(1).optional(),defaultClassFloors:v(c(),i().min(0).max(1)).optional(),gpuInferencePrecision:b([`f32`,`f16`]).optional(),suppliedLabelFloors:v(c(),i().min(0).max(1)).optional(),faceAlignment:S().optional(),extraFiles:x(Ed).readonly().optional(),legacy:S().optional(),metrics:u({map50:i().optional(),p95LatencyMs:v(c(),i()).optional()}).optional(),license:Nd.optional(),group:Od.optional(),provider:Ad.optional(),classMap:Ys.optional(),suppliesSteps:x(Pd).readonly().optional(),clip:Vu.optional()}),Id=f(`format`,[u({format:p(`openvino`),precisions:x(b([`fp16`,`int8`])).min(1).readonly()}),u({format:p(`coreml`)})]),Ld=u({id:c().regex(/^[a-zA-Z0-9._-]+$/),name:c(),labels:x(Gs).readonly(),inputSize:u({width:i(),height:i()}),inputLayout:b([`nchw`,`nhwc`]).optional(),inputNormalization:b([`zero-one`,`imagenet`,`none`,`scrfd`]).optional(),preprocessMode:b([`letterbox`,`resize`]).optional(),outputFormat:b([`yolo`,`ssd`,`embedding`,`classification`,`ocr`,`segmentation`]),faceAlignment:S().optional(),classMap:Ys.optional()}),Rd=u({format:b(wd),precision:b([`fp16`,`int8`]).optional(),sizeMB:i(),validated:S(),files:x(c()).readonly()}),zd=u({entry:Fd,artifacts:x(Rd).readonly()});function Bd(e){switch(e.toUpperCase()){case`GET`:case`HEAD`:case`OPTIONS`:return`view`;case`POST`:case`PUT`:case`PATCH`:return`create`;default:return`delete`}}function Vd(e,t){return e.some(e=>e.type===`category`&&e.target===`device`&&e.access.includes(t))}function Hd(e,t,n){return e.some(e=>e.type===`addon`&&e.target===t&&e.access.includes(n))}function Ud(e){let t=e.kind;if(t===void 0)return{kind:`session`};if(t!==`sso-bridge`)return{kind:`not-a-credential`,reason:`bridge token kind=${String(t)}`};let n=e.provider;return n===`oauth-access`?{kind:`integration`,provider:`oauth-access`}:{kind:`not-a-credential`,reason:`bridge token provider=${String(n)}`}}function Wd(e){let{principal:t}=e;if(t.kind===`not-a-credential`)return{allowed:!1,reason:t.reason};if(t.kind===`session`)return{allowed:!0};let n=Bd(e.method);return Hd(e.scopes,e.addonId,n)?{allowed:!0}:{allowed:!1,reason:`integration token holds no addon:${e.addonId}[${n}] grant`}}var Gd=u({kind:p(`field`).optional(),sourceKey:c(),cap:c(),fieldPath:c()}),Kd=u({kind:p(`literal`),value:d([c(),i(),S(),re()])}),qd=u({kind:p(`global`),sourceStableId:c(),cap:c(),fieldPath:c()}),Jd=d([Gd,Kd,qd]),Yd=u({expr:c().min(1).max(Hr),bindings:v(c().regex(Jr),Jd)}).superRefine((e,t)=>{let n=Oi(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Xd=3,Zd=32,Qd=b([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`contains`,`in`]),$d=u({kind:p(`condition`),deviceId:i().int().nonnegative(),cap:c().min(1),fieldPath:c().min(1),operator:Qd,value:d([c(),i(),S(),x(d([c(),i()]))])}),ef=u({kind:p(`expression`),expr:c().min(1).max(Hr),bindings:v(c().regex(Jr),Jd)}).superRefine((e,t)=>{let n=Oi(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),tf=pe(()=>f(`kind`,[u({kind:p(`all`),children:x(tf)}),u({kind:p(`any`),children:x(tf)}),u({kind:p(`not`),child:tf}),$d,ef])),nf=f(`kind`,[u({kind:p(`device-state`),deviceId:i().int().nonnegative(),cap:c().min(1),fieldPath:c().min(1),becomes:d([c(),i(),S()]).optional(),edge:S().optional(),forMs:i().int().min(0).max(864e5).optional(),debounceMs:i().int().min(0).max(6e5).optional()}),u({kind:p(`device-event`),category:c().min(1),deviceId:i().int().nonnegative().optional()}),u({kind:p(`schedule`),cron:c().min(1).max(120)}),u({kind:p(`manual`)})]),rf=f(`kind`,[u({kind:p(`wait`),seconds:i().min(0).max(300)}),u({kind:p(`cap`),deviceId:d([i().int(),x(i().int()).min(1),u({$var:c().min(1)})]),cap:c().min(1),method:c().min(1),args:v(c(),o()).optional()}),u({kind:p(`code`),code:c().min(1).max(2e4)})]),af=u({triggers:x(nf),conditions:tf.optional(),actions:x(rf)});function of(e){if(e.kind===`condition`||e.kind===`expression`)return 1;if(e.kind===`not`)return 1+of(e.child);let t=e.children;if(t.length===0)return 1;let n=0;for(let e of t){let t=of(e);t>n&&(n=t)}return 1+n}function sf(e){if(e.kind===`condition`||e.kind===`expression`)return 1;if(e.kind===`not`)return sf(e.child);let t=0;for(let n of e.children)t+=sf(n);return t}function cf(e){return e.kind===`condition`||e.kind===`expression`?!1:e.kind===`not`?cf(e.child):e.children.length===0?!0:e.children.some(cf)}function lf(e){if(e.triggers.length===0)return`an automation needs at least one trigger — without one nothing can start a run`;if(e.actions.length===0)return`an automation needs at least one action — a rule that does nothing is not a rule`;let t=e.conditions;if(t!==void 0){if(cf(t))return`a condition group is empty — group existing rows instead of leaving a container to fill`;let e=of(t);if(e>3)return`conditions nest ${e} levels deep — the limit is 3. "not (any of …)" is the same as "all of (not …)", which is one level shallower`;let n=sf(t);if(n>32)return`conditions use ${n} leaves — the limit is 32`}return null}var uf=15e3;function z(e){return JSON.stringify(e)}function df(e,t){switch(e.kind){case`all`:return`allOf([\n${e.children.map(e=>`${t} () => ${df(e,`${t} `)}`).join(`,
|
|
3
|
+
`||e===`\r`||e===`\f`||e===`\v`}function ti(e){if(e.length>2048)throw new k(`expression too long (${e.length} > ${Hr} chars)`,0);let t=[],n=0,r=e.length;for(;n<r;){let i=e[n];if(ei(i)){n+=1;continue}if(Zr(i)){let i=n;for(;n<r&&Zr(e[n]);)n+=1;if(n<r&&e[n]===`.`){if(n+1>=r||!Zr(e[n+1]))throw new k(`malformed number: decimal point needs a digit`,n);for(n+=1;n<r&&Zr(e[n]);)n+=1}let a=e.slice(i,n),o=Number(a);if(!Number.isFinite(o))throw new k(`malformed number: '${a}'`,i);t.push({type:`number`,value:o,pos:i});continue}if(i===`'`||i===`"`){let a=i,o=n;n+=1;let s=``,c=!1;for(;n<r;){let t=e[n];if(t===`\\`){let t=n+1<r?e[n+1]:``;if(t===`\\`||t===`'`||t===`"`){s+=t,n+=2;continue}throw new k(`invalid string escape: '\\${t}'`,n)}if(t===a){c=!0,n+=1;break}s+=t,n+=1}if(!c)throw new k(`unterminated string literal`,o);t.push({type:`string`,value:s,pos:o});continue}if(Qr(i)){let i=n;for(;n<r&&$r(e[n]);)n+=1;let a=e.slice(i,n);Xr.has(a)?t.push({type:`keyword`,keyword:ni(a),pos:i}):t.push({type:`identifier`,name:a,pos:i});continue}let a=n+1<r?e.slice(n,n+2):``;if(a===`<=`||a===`>=`||a===`==`||a===`!=`||a===`&&`||a===`||`){t.push({type:`punct`,punct:a,pos:n}),n+=2;continue}if(ri(i)){t.push({type:`punct`,punct:i,pos:n}),n+=1;continue}throw new k(`unexpected character '${i}'`,n)}return t.push({type:`eof`,pos:r}),t}function ni(e){return e===`true`?`true`:e===`false`?`false`:`null`}function ri(e){return e===`(`||e===`)`||e===`,`||e===`?`||e===`:`||e===`+`||e===`-`||e===`*`||e===`/`||e===`%`||e===`!`||e===`<`||e===`>`}var ii={"||":1,"&&":2,"==":3,"!=":3,"<":4,"<=":4,">":4,">=":4,"+":5,"-":5,"*":6,"/":6,"%":6};function ai(e){return e===`&&`||e===`||`}function oi(e){return e===`+`||e===`-`||e===`*`||e===`/`||e===`%`||e===`==`||e===`!=`||e===`<`||e===`<=`||e===`>`||e===`>=`}var si=class{tokens;pos=0;nodeCount=0;identifiers=new Set;callees=new Set;constructor(e){this.tokens=e}parse(){let e=this.parseTernary(),t=this.peek();if(t.type!==`eof`)throw new k(`unexpected trailing input`,t.pos);return{ast:e,identifiers:this.identifiers,callees:this.callees,nodeCount:this.nodeCount}}peek(){return this.tokens[this.pos]}next(){return this.tokens[this.pos++]}expectPunct(e){let t=this.peek();if(t.type!==`punct`||t.punct!==e)throw new k(`expected '${e}'`,t.pos);this.pos+=1}matchPunct(e){let t=this.peek();return t.type===`punct`&&t.punct===e?(this.pos+=1,!0):!1}countNode(){if(this.nodeCount+=1,this.nodeCount>256)throw new k(`expression too complex`,this.peek().pos)}parseTernary(){let e=this.parseBinary(1);if(this.matchPunct(`?`)){let t=this.parseTernary();this.expectPunct(`:`);let n=this.parseTernary();return this.countNode(),{kind:`conditional`,test:e,consequent:t,alternate:n}}return e}parseBinary(e){let t=this.parseUnary();for(;;){let n=this.peek();if(n.type!==`punct`)break;let r=ii[n.punct];if(r===void 0||r<e)break;let i=n.punct;this.pos+=1;let a=this.parseBinary(r+1);if(this.countNode(),ai(i))t={kind:`logical`,op:i,left:t,right:a};else if(oi(i))t={kind:`binary`,op:i,left:t,right:a};else throw new k(`unexpected operator '${i}'`,n.pos)}return t}parseUnary(){let e=this.peek();if(e.type===`punct`&&(e.punct===`!`||e.punct===`-`)){let t=e.punct;this.pos+=1;let n=this.parseUnary();return this.countNode(),{kind:`unary`,op:t,operand:n}}return this.parsePrimary()}parsePrimary(){let e=this.next();switch(e.type){case`number`:return this.countNode(),{kind:`literal`,value:e.value};case`string`:return this.countNode(),{kind:`literal`,value:e.value};case`keyword`:return this.countNode(),{kind:`literal`,value:e.keyword===`null`?null:e.keyword===`true`};case`identifier`:{let t=this.peek();return t.type===`punct`&&t.punct===`(`?this.parseCall(e.name,e.pos):(this.identifiers.add(e.name),this.countNode(),{kind:`identifier`,name:e.name})}case`punct`:if(e.punct===`(`){let e=this.parseTernary();return this.expectPunct(`)`),e}throw new k(`unexpected token '${e.punct}'`,e.pos);case`eof`:throw new k(`unexpected end of expression`,e.pos)}}parseCall(e,t){if(!Vr.has(e))throw new k(`unknown function '${e}'`,t);this.expectPunct(`(`);let n=[];if(!this.matchPunct(`)`))for(;;){if(n.push(this.parseTernary()),n.length>16)throw new k(`too many arguments to '${e}'`,t);if(!this.matchPunct(`,`)){this.expectPunct(`)`);break}}return this.callees.add(e),this.countNode(),{kind:`call`,callee:e,args:n}}};function ci(e){return new si(ti(e)).parse()}var li=new Map;function ui(e){let t=li.get(e);if(t!==void 0)return li.delete(e),li.set(e,t),t;let n;try{n={ok:!0,parsed:ci(e)}}catch(e){n={ok:!1,error:e instanceof k?e.message:String(e)}}if(li.set(e,n),li.size>256){let e=li.keys().next().value;e!==void 0&&li.delete(e)}return n}function di(e){let t=ui(e);if(t.ok)return t.parsed;throw new k(t.error)}function fi(e){return ui(e)}var pi=Object.freeze({});function mi(e){let t=Object.create(null);for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function hi(e){return typeof e==`number`&&Number.isFinite(e)}function gi(e){return!!e}function _i(e,t){if(!Number.isFinite(e))throw new A(`${t} produced a non-finite result`);return e}function vi(e){if(e.steps+=1,e.steps>e.maxSteps)throw new A(`expression evaluation step budget exceeded`)}function N(e,t){return`${e}/${t}`}function P(e,t,n){switch(vi(t),e.kind){case`literal`:return e.value;case`identifier`:if(!(e.name in t.scope))throw new A(`unknown identifier: ${e.name}`);return t.scope[e.name];case`unary`:return yi(e.op,P(e.operand,t,N(n,`operand`)));case`binary`:return bi(e.op,P(e.left,t,N(n,`left`)),P(e.right,t,N(n,`right`)));case`logical`:{let r=P(e.left,t,N(n,`left`));return e.op===`&&`?gi(r)?P(e.right,t,N(n,`right`)):r:gi(r)?r:P(e.right,t,N(n,`right`))}case`conditional`:return gi(P(e.test,t,N(n,`test`)))?P(e.consequent,t,N(n,`consequent`)):P(e.alternate,t,N(n,`alternate`));case`call`:{let r=e.args.map((e,r)=>P(e,t,N(n,`arg:${r}`)));return xi(e.callee,r,n,t)}}}function yi(e,t){if(e===`!`)return!gi(t);if(!hi(t))throw new A(`unary "-" requires a finite number`);return _i(-t,`unary "-"`)}function bi(e,t,n){switch(e){case`==`:return t===n;case`!=`:return t!==n;case`+`:if(typeof t==`string`&&typeof n==`string`)return t+n;if(hi(t)&&hi(n))return _i(t+n,`"+"`);throw new A(`"+" requires two numbers or two strings`);case`-`:case`*`:case`/`:case`%`:if(!hi(t)||!hi(n))throw new A(`"${e}" requires two finite numbers`);return _i(e===`-`?t-n:e===`*`?t*n:e===`/`?t/n:t%n,`"${e}"`);case`<`:case`<=`:case`>`:case`>=`:if(hi(t)&&hi(n)||typeof t==`string`&&typeof n==`string`)return e===`<`?t<n:e===`<=`?t<=n:e===`>`?t>n:t>=n;throw new A(`"${e}" requires two numbers or two strings`)}}function xi(e,t,n,r){if(!Object.prototype.hasOwnProperty.call(Br,e))throw new A(`unknown function: ${e}`);let i=Br[e];if(t.length<i.minArgs||t.length>i.maxArgs)throw new A(`${e}: wrong number of arguments (${t.length})`);if(Or(e)){if(r.invokeStateful===void 0)throw new A(`${e}: stateful evaluation context is required`);return r.invokeStateful({name:e,path:n,args:t})}return i.apply(t,r.hooks)}function Si(e,t,n){return P(e,{scope:t,hooks:n?.hooks??pi,maxSteps:n?.maxSteps??4096,...n?.invokeStateful===void 0?{}:{invokeStateful:n.invokeStateful},steps:0},`root`)}function Ci(){return{calls:new Map,acceptedEdgeAt:null,disarmRoseNext:!1}}function wi(e){return{calls:new Map([...e.calls].map(([e,t])=>[e,{...t}])),acceptedEdgeAt:e.acceptedEdgeAt,disarmRoseNext:e.disarmRoseNext}}function Ti(e,t,n){let r=t.calls.get(e.path);switch(e.name){case`rose`:{let i=r?.kind===`rose`?r:{kind:`rose`};t.calls.set(e.path,i);let a=n.currentOutput===null||typeof n.currentOutput==`number`&&Number.isFinite(n.currentOutput)?n.currentOutput:null;return Fr(e.args[0],e.args[1],e.args[2],i,t,{currentOutput:a,startedAtMs:n.startedAtMs,nowMs:n.nowMs})}case`count`:{let i=r?.kind===`count`?r:{kind:`count`,highWater:null,primed:!1};return t.calls.set(e.path,i),Lr(e.args[0],i,n.currentOutput)}}}var Ei=`now`;function Di(e){if(e===null)return null;if(typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`)return Number.isFinite(e)?e:void 0}function Oi(e){let t=Object.keys(e.bindings);if(t.length>32)return`too many bindings (${t.length} > 32)`;for(let e of t){if(!Jr.test(e))return`invalid binding name '${e}'`;if(Yr.has(e))return`binding name '${e}' is reserved`;if(Vr.has(e))return`binding name '${e}' shadows a builtin function`}let n=fi(e.expr);if(!n.ok)return n.error;let r=new Set(t);for(let e of n.parsed.identifiers)if(e!==`now`&&!r.has(e))return`expression references unbound identifier '${e}'`;return null}function ki(e,t,n,r){let i=fi(e);if(!i.ok)return{ok:!1,error:i.error};let a=mi({...t,now:n}),o={...r?.hooks,now:n};try{return{ok:!0,value:Si(i.parsed.ast,a,{...r,hooks:o})}}catch(e){return{ok:!1,error:e instanceof A?e.message:String(e)}}}var Ai=`composer`,ji=`customize:`,Mi=`composed-`,Ni=16,Pi=32,Fi=2e4,Ii=u({addonId:c().min(1),stableId:c().min(1)}),Li=u({source:Ii,cap:c().min(1),fieldPath:c().min(1)}),Ri=Li.extend({kind:p(`from`)}),zi=u({kind:p(`literal`),value:d([c(),i(),S(),re()])}),Bi=f(`kind`,[Ri,zi]),Vi=u({kind:p(`expression`),expr:c().min(1).max(Hr),bindings:v(c().regex(Jr),Bi)}).superRefine((e,t)=>{let n=Oi(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Hi=u({kind:p(`code`),code:c().min(1).max(Fi)}),Ui=f(`kind`,[Ri,Vi,Hi]),Wi=u({kind:p(`forward`),source:Ii,cap:c().min(1),method:c().min(1)}),Gi=f(`kind`,[Wi,Hi]),Ki=/^[a-z0-9][a-z0-9-]{0,47}$/,qi=16,Ji=`items`,Yi=u({label:c().min(1).max(80),fields:v(c().min(1),Ui)}),Xi=u({kind:p(`fields`),cap:c().min(1),enabled:S().optional(),fields:v(c().min(1),Ui).refine(e=>Object.keys(e).length<=32,{message:`at most 32 fields per capability`}),items:v(c().regex(Ki),Yi).refine(e=>Object.keys(e).length<=16,{message:`at most 16 items`}).optional(),commands:v(c().min(1),Gi).optional()}),Zi=u({kind:p(`passthrough`),cap:c().min(1),enabled:S().optional(),source:Ii}),Qi=f(`kind`,[Xi,Zi]);function $i(e){return e.enabled!==!1}var ea=u({kind:p(`new`),type:b(D),role:b(O).optional()}),ta=u({kind:p(`existing`),device:Ii}),na=f(`kind`,[ea,ta]),ra=u({target:na,features:x(Qi).min(1).max(16)}).superRefine((e,t)=>{let n=new Set;e.features.forEach((e,r)=>{n.has(e.cap)&&t.addIssue({code:`custom`,message:`capability \`${e.cap}\` is composed twice — one feature per capability`,path:[`features`,r,`cap`]}),n.add(e.cap)})});function F(e){return`${e.addonId}/${e.stableId}`}function ia(e,t){return`${F(e)}#${t}`}function aa(e){return`${ia(e.source,e.cap)}.${e.fieldPath}`}function oa(e){return`${Mi}${e}`}function sa(e){return{addonId:Ai,stableId:oa(e)}}function ca(e){switch(e.kind){case`from`:return[{source:e.source,cap:e.cap,fieldPath:e.fieldPath}];case`expression`:return Object.values(e.bindings).flatMap(e=>e.kind===`from`?[{source:e.source,cap:e.cap,fieldPath:e.fieldPath}]:[]);case`code`:return[]}}function la(e,t,n){return`${e}[${t}].${n}`}function ua(e,t=Ji){return[...Object.entries(e.fields).map(([e,t])=>({fieldPath:e,source:t})),...Object.entries(e.items??{}).flatMap(([e,n])=>Object.entries(n.fields).map(([n,r])=>({fieldPath:la(t,e,n),source:r})))]}function da(e){return ua(e).map(e=>e.source)}var fa=function(e){return e.Addon=`addon`,e.Core=`core`,e.Device=`device`,e.Provider=`provider`,e.System=`system`,e}({}),pa=[`track`,`face`,`identity`,`plate`,`vehicle`,`scene`,`motion`,`object`,`audio`,`mosaic`],ma=new Set(pa),ha=/^\d+$/;function ga(e){return ma.has(e)}function _a(e){let t=e.split(`:`);if(t.length!==3&&t.length!==4)return null;let[n,r,i,a]=t;return n===void 0||!ga(n)||r===void 0||r.length===0||i===void 0||i.length===0?null:a===void 0?{ownerType:n,ownerId:r,fileKind:i}:ha.test(a)?{ownerType:n,ownerId:r,fileKind:i,timestampMs:Number(a)}:null}function va(e){let t=`${e.ownerType}:${e.ownerId}:${e.fileKind}`;return e.timestampMs===void 0?t:`${t}:${e.timestampMs}`}var ya=[`motion`,`object`,`audio`],ba=b(ya),xa=[...ya,`track`],Sa=b(xa),Ca=new Set(ya);function wa(e){return Ca.has(e)}function Ta(e,t){return{id:e,getRoutes:()=>t,invoke:async e=>{let n=Ea(t,e.method,e.path);if(!n)return{status:404,headers:{},redirectUrl:null,body:{error:`No route matches ${e.method} ${e.path}`}};let r={status:200,headers:{},redirectUrl:null},i=Oa(r),a={params:{...e.params,...n.params},query:e.query,body:e.body,headers:e.headers,...e.user?{user:e.user}:{},...e.scopedToken===void 0?{}:{scopedToken:e.scopedToken}};return await n.route.handler(a,i),r}}}function Ea(e,t,n){let r=t.toUpperCase();for(let t of e){if(t.method!==r)continue;let e=Da(t.path,n);if(e!==null)return{route:t,params:e}}return null}function Da(e,t){let n=e.split(`/`).filter(Boolean),r=t.split(`/`).filter(Boolean);if(n.length!==r.length)return null;let i={};for(let e=0;e<n.length;e++){let t=n[e],a=r[e];if(t.startsWith(`:`))i[t.slice(1)]=a;else if(t!==a)return null}return i}function Oa(e){let t={status(n){return e.status=n,t},code(n){return e.status=n,t},send(t){e.body=t},redirect(t){e.redirectUrl=t,e.status===200&&(e.status=302)},header(n,r){return e.headers[n.toLowerCase()]=r,t},type(n){return e.contentType=n,t}};return t}var ka=u({codec:b([`h264`,`h265`,`copy`]),profile:b([`baseline`,`main`,`high`]).optional(),level:c().optional(),width:i().int().positive().optional(),height:i().int().positive().optional(),fps:i().positive().optional(),bitrateKbps:i().int().positive().optional(),gopFrames:i().int().positive().optional(),bf:i().int().min(0).optional(),preset:b([`ultrafast`,`superfast`,`veryfast`,`faster`,`fast`,`medium`]).optional(),tune:b([`zerolatency`,`film`,`animation`]).optional(),singleSlicePerFrame:S().optional()}),Aa=d([p(`passthrough`),u({codec:b([`opus`,`aac`,`pcmu`,`pcma`,`copy`]),bitrateKbps:i().int().positive().optional(),sampleRateHz:i().int().positive().optional(),channels:d([p(1),p(2)]).optional()})]),ja=u({video:ka,audio:Aa,inputArgs:x(c()).optional(),outputArgs:x(c()).optional()});function Ma(e){let t=e.codec?.toLowerCase().replace(/[.\s-]/g,``),n={codec:t===`h265`||t===`hevc`?`h265`:`h264`,...e.resolution?.width===void 0?{}:{width:e.resolution.width},...e.resolution?.height===void 0?{}:{height:e.resolution.height},...e.fps===void 0?{}:{fps:e.fps}};if(!(n.width===void 0&&n.height===void 0&&n.fps===void 0))return{video:n,audio:`passthrough`}}function Na(e,t,n){let r=e>=n;return r===t>=n?r?e-t:t-e:r?-1:1}function Pa(e){let t=e.toLowerCase().replace(/[.\s-]/g,``);return t===`hevc`||t===`hvc1`||t===`hev1`?`h265`:t===`avc`||t===`avc1`?`h264`:t}function Fa(e,t){if(t.length===0)return!0;if(e===void 0)return!1;let n=Pa(e);return t.some(e=>Pa(e)===n)}function Ia(e,t){for(let n=0;n<t.length;n+=1)if(e.startsWith(t[n]))return n;return t.length}function La(e,t){let n=e.filter(e=>t.allowTranscode||Fa(e.codec,t.acceptCodecs));if(n.length===0)return null;let r=t.targetHeight,i=n.map(e=>({candidate:e,transcodes:!Fa(e.codec,t.acceptCodecs),provider:Ia(e.camStreamId,t.preferredProviders),height:e.height??0}));i.sort((e,n)=>e.transcodes===n.transcodes?e.provider===n.provider?r===void 0?t.resolutionPreference===`highest`?n.height-e.height:e.height-n.height:Na(e.height,n.height,r):e.provider-n.provider:e.transcodes?1:-1);let a=i[0];return a===void 0?null:{candidate:a.candidate,transcodes:a.transcodes}}var Ra={video:{codec:`h264`,profile:`baseline`,level:`3.1`,width:1280,height:720,fps:25,bitrateKbps:2500,gopFrames:25,bf:0,preset:`veryfast`,tune:`zerolatency`},audio:`passthrough`},za={...Ra,video:{...Ra.video,bitrateKbps:3e3,gopFrames:30,preset:`ultrafast`},audio:`passthrough`},Ba={...Ra,audio:{codec:`opus`},video:{...Ra.video,singleSlicePerFrame:!0}},Va={kind:`cbr`,vbvSeconds:1},Ha={kind:`cap`,vbvSeconds:2},Ua=360,Wa=400,Ga=24,Ka={kind:`encode`,codec:`opus`,bitrateKbps:24,channels:1,application:`lowdelay`,globalHeader:!0,filter:`aresample=async=1000:first_pts=0`},qa=96,Ja=4;function Ya(e){let t=e.now??(()=>Date.now()),n=null,r=-1/0;return{read(){return t()-r<e.ttlMs?n:void 0},write(e){n=e,r=t()}}}function Xa(e){return!e||e===`none`||e===`copy`}async function Za(e){let t=e.override;if(t!=null&&t!==``)return Xa(t)?null:t;let n=e.cache?.read();if(n!==void 0)return n;let r;try{r=await e.readDecoderBackend()}catch(t){let n=await e.readKernelPreferred().catch(()=>[]);return e.onFallback({reason:`decoder-unreadable`,kernelPreferred:n,error:t instanceof Error?t.message:String(t)}),e.cache?.write(null),null}if(r===``){let t=await e.readKernelPreferred().catch(()=>[]);return e.onFallback({reason:`decoder-unprobed`,kernelPreferred:t}),e.cache?.write(null),null}let i=Xa(r)?null:r;return e.cache?.write(i),i}function Qa(e){return String(Math.round(e*1e3)/1e3)}function $a(e,t){return!Number.isFinite(t)||t<=0?e:e/t}function eo(e){let t=e.speed>0?e.speed:1;return t===1?`[0:v]fps=${Qa(e.fps)},scale=${e.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`:`[0:v]fps=${Qa(e.fps/t)},setpts=PTS/${t},fps=${Qa(e.fps)},scale=${e.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`}function to(e){return[`-y`,`-v`,`error`,`-f`,`mp4`,`-i`,e.input??`pipe:0`,`-filter_complex`,eo(e),`-loop`,`0`,`-f`,`gif`,`pipe:1`]}function no(e){return{transport:e.publishLocally===!0?`push`:`dial`}}var ro=`\0unset`;function io(e){return{codec:e.codec,profile:e.profile??ro,level:e.level??ro,width:e.width??-1,height:e.height??-1,fps:e.fps??-1,bitrateKbps:e.bitrateKbps??-1,gopFrames:e.gopFrames??-1,bf:e.bf??-1,preset:e.preset??ro,tune:e.tune??ro,singleSlicePerFrame:e.singleSlicePerFrame===void 0?ro:String(e.singleSlicePerFrame)}}function ao(e){return e===`passthrough`?{codec:`passthrough`}:{codec:e.codec,bitrateKbps:e.bitrateKbps??-1,sampleRateHz:e.sampleRateHz??-1,channels:e.channels??-1}}function oo(e,t=no(e)){return{deviceId:e.deviceId,source:e.source.kind===`profile`?`profile:${e.source.profile}`:`cam-stream:${e.source.camStreamId}`,transport:t.transport,fragmentMs:t.fragmentMs??-1,video:io(e.encode.video),audio:ao(e.encode.audio),rateControl:e.rateControl??`relaxed`,bitstreamFilter:e.bitstreamFilter??ro,pixelFormat:e.pixelFormat??ro,decodeHwAccel:e.decodeHwAccel??ro}}function so(e,t=no(e)){return`egress:${fr(oo(e,t))}`}function co(e){let t=null;return()=>{if(t!==null)return t;let n=e();return t=n,n.catch(()=>{t===n&&(t=null)}),n}}var lo=b([`singleton`,`device`,`widget`]),uo=u({capName:c(),kind:lo,deviceId:i().optional(),reachable:S(),latencyMs:i(),error:c().optional()}),fo=u({addonId:c(),caps:x(uo).readonly(),widgets:x(uo).readonly()}),po=u({nodeId:c(),addons:x(fo).readonly()}),mo=u({ok:S(),degraded:S(),checkedAt:c(),nodes:x(po).readonly(),summary:u({total:i(),reachable:i(),unreachable:i()})}),ho=`hub-only`;function go(e){return{placement:e.execution?.placement??`hub-only`,group:e.execution?.group}}function _o(e){let t=go(e).placement;return t===`any-node`||t===`agent-only`}function vo(e){return go(e).placement===`agent-only`}function yo(e){return go(e).group}function bo(e,t){return e.execution?.group??t}function xo(e){return go(e).placement}function So(e){return e.execution?.isolate===!0}var Co=b([`running`,`done`,`failed`,`cancelled`]),wo=b([`adopted`,`already-adopted`,`failed`,`cancelled`]),To=u({childNativeId:c(),outcome:wo,parentDeviceId:i().int().nonnegative().nullable(),accessoryCount:i().int().nonnegative(),error:c().nullable()}),Eo=u({jobId:c(),addonId:c(),integrationId:c(),state:Co,total:i().int().nonnegative(),processed:i().int().nonnegative(),adopted:i().int().nonnegative(),alreadyAdopted:i().int().nonnegative(),failed:i().int().nonnegative(),accessoriesCreated:i().int().nonnegative(),currentChildNativeId:c().nullable(),results:x(To).readonly(),startedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),Do={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14},Oo=b([`stream-broker`,`object-detection`,`privacy-mask`,`device-audio`,`broker-audio`,`audio-analysis`,`event-saving`,`recording`,`notifications`]),ko=[`stream-broker`,`object-detection`,`privacy-mask`,`device-audio`,`broker-audio`,`audio-analysis`,`event-saving`,`recording`,`notifications`],Ao=f(`kind`,[u({kind:p(`device-disabled`)}),u({kind:p(`wrapper-binding`),capName:c()}),u({kind:p(`recording-config`)}),u({kind:p(`notification-mute`)}),u({kind:p(`camera-audio`),capName:c()}),u({kind:p(`camera-mask`),capName:c()}),u({kind:p(`broker-audio-mute`)})]),jo=b([`no-provider`,`source-unreachable`,`device-disabled`]),Mo=b([`no-privacy-zones`]),No=u({id:Oo,label:c(),costWhenOff:c(),available:S(),unavailableReason:jo.optional(),warning:Mo.optional(),enabled:S(),authority:Ao}),Po=u({deviceId:i().int(),switches:x(No).readonly(),fetchedAt:i()}),Fo=`detection-pipeline`,Io=`audio-analysis`,Lo=`privacy-mask`,Ro=`pipeline-analytics`,zo=[`motion-detection`,Fo,Io,Ro,`scene-monitor`],Bo={"stream-broker":{id:`stream-broker`,label:`Camera`,costWhenOff:`Off: the whole camera stops. No live view, no recording, no detection and no notifications — its streams are released and nothing dials it again until you turn it back on.`,authority:{kind:`device-disabled`},countsAsSwitchedOff:!0},"object-detection":{id:`object-detection`,label:`Object detection & tracking`,costWhenOff:`Off: nothing is detected or tracked on this camera, so it produces no events — and with no events there are no object notifications and no event-triggered recording. Live view and continuous recording are unaffected.`,authority:{kind:`wrapper-binding`,capName:Fo},countsAsSwitchedOff:!0},"privacy-mask":{id:`privacy-mask`,label:`Privacy mask`,costWhenOff:`On: the zones you drew on this camera are blacked out by the camera itself — live view, playback, exports and detection all see the black boxes, and nothing behind them was ever recorded. Off: the camera captures the whole frame, and your zones are kept for when you turn it back on.`,authority:{kind:`camera-mask`,capName:Lo},countsAsSwitchedOff:!1},"device-audio":{id:`device-audio`,label:`Camera microphone`,costWhenOff:`Off: the camera captures no sound at all. Live view and recordings become silent video, and audio detection and classification have nothing left to analyse — turning them back on will not recover it. The picture, motion and object detection are unaffected, and two-way talk still works. Applies at the camera, so every consumer sees the same silence.`,authority:{kind:`camera-audio`,capName:Lo},countsAsSwitchedOff:!0},"broker-audio":{id:`broker-audio`,label:`Audio distribution`,costWhenOff:`Off: this server distributes no sound for this camera — live view is silent and everything recorded while it is off is silent FOREVER, even after you turn it back on. Audio detection and classification also have nothing to analyse. The camera keeps capturing sound, so nothing about the camera changes and turning this back on is instant, with no interruption to the picture.`,authority:{kind:`broker-audio-mute`},countsAsSwitchedOff:!0},"audio-analysis":{id:`audio-analysis`,label:`Audio detection & classification`,costWhenOff:`Off: no audio is decoded or classified for this camera. Tracks carry no audio labels and no audio-triggered rule can fire. Audio recorded alongside video is unaffected.`,authority:{kind:`wrapper-binding`,capName:Io},countsAsSwitchedOff:!0},"event-saving":{id:`event-saving`,label:`Event saving`,costWhenOff:`Off: nothing about this camera is written to its history — no tracks, no events and no event snapshots or clips. Detection keeps running and live boxes still appear, so the camera looks busy while its timeline stays empty, and anything that fires ON an event (notification rules, event-triggered recording) has nothing to fire on. Continuous recording is unaffected, and history already written is kept.`,authority:{kind:`wrapper-binding`,capName:Ro},countsAsSwitchedOff:!0},recording:{id:`recording`,label:`Recording`,costWhenOff:`Off: nothing new is written to disk. Footage already recorded stays, but retention keeps deleting it — so this camera’s history shrinks and is not replaced. Your recording schedule is kept and resumes when you turn it back on.`,authority:{kind:`recording-config`},countsAsSwitchedOff:!0},notifications:{id:`notifications`,label:`Notifications`,costWhenOff:`Off: this camera never notifies anyone, on any rule, with no expiry. Detection, events and recording carry on exactly as before — you simply stop being told about them.`,authority:{kind:`notification-mute`},countsAsSwitchedOff:!0}};function Vo(e,t){switch(e.authority.kind){case`device-disabled`:return{available:!0,enabled:!t.deviceDisabled};case`wrapper-binding`:{let n=e.authority.capName;return t.bindableCapNames===null||t.activeWrapperCapNames===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:t.bindableCapNames.includes(n)?{available:!0,enabled:t.activeWrapperCapNames.includes(n)}:{available:!1,enabled:!0,unavailableReason:`no-provider`}}case`recording-config`:return t.recordingEnabled===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:t.recordingEnabled};case`notification-mute`:return t.notificationsMuted===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:!t.notificationsMuted};case`camera-audio`:{let e=t.deviceAudio;return e===null?{available:!1,enabled:!0,unavailableReason:t.deviceDisabled?`device-disabled`:`source-unreachable`}:e.supported?e.enabled===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:e.enabled}:{available:!1,enabled:!0,unavailableReason:`no-provider`}}case`camera-mask`:{let e=t.privacyMask;return e===null?{available:!1,enabled:!1,unavailableReason:t.deviceDisabled?`device-disabled`:`source-unreachable`}:e.supported?e.configuredRegions===null||e.enabled===null?{available:!1,enabled:!1,unavailableReason:`source-unreachable`}:e.configuredRegions===0?{available:!0,enabled:e.enabled,warning:`no-privacy-zones`}:{available:!0,enabled:e.enabled}:{available:!1,enabled:!1,unavailableReason:`no-provider`}}case`broker-audio-mute`:{let e=t.brokerAudio;return e===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:!e.muted}}}}function Ho(e){return ko.map(t=>{let n=Bo[t],r=Vo(n,e);return{id:n.id,label:n.label,costWhenOff:n.costWhenOff,available:r.available,...r.unavailableReason===void 0?{}:{unavailableReason:r.unavailableReason},...r.warning===void 0?{}:{warning:r.warning},enabled:r.enabled,authority:n.authority}})}function Uo(e){return e.filter(e=>Bo[e.id].countsAsSwitchedOff&&e.available&&!e.enabled).map(e=>e.id)}function Wo(e){let t=[],n=[];for(let r of ko){let i=Bo[r];if(!i.countsAsSwitchedOff)continue;let a=Vo(i,e);a.unavailableReason===`source-unreachable`?n.push(r):a.available&&!a.enabled&&t.push(r)}return{switchedOff:t,unreadable:n}}var Go=`__camstack_redacted__`;function Ko(e){return e.type===`password`?!0:`secret`in e&&e.secret===!0}function qo(e){let t=new Set;for(let n of Xo(e))for(let e of Zo(n))Qo(e,t);return t}function Jo(e){for(let t of Xo(e))if(Zo(t).length>0)return!0;return!1}function Yo(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Xo(e){if(!Yo(e))return[];let t=e.sections;return Array.isArray(t)?t:[]}function Zo(e){if(!Yo(e))return[];let t=e.fields;return Array.isArray(t)?t:[]}function Qo(e,t){if(!Yo(e))return;let n=e.type,r=e.key;if((n===`password`||e.secret===!0)&&typeof r==`string`&&r.length>0&&t.add(r),n===`group`){for(let n of Zo(e))Qo(n,t);return}if(n===`sub-tabs`){let n=e.tabs;if(!Array.isArray(n))return;for(let e of n)for(let n of Zo(e))Qo(n,t)}}var $o=3e4,es=500,ts=6e4,ns=b([`confirmed`,`suppressed`,`exhausted-fallback`]),rs=u({id:c(),at:i().int(),deviceId:i().int(),sourceTrackId:c(),className:c(),verdict:ns,reason:c().nullable(),attempts:i().int(),deferredForMs:i().int(),decidedOnCoastedFrame:S(),birthEvidenceAvailable:S(),decidedByBirthEvidence:S(),bestScore:i().nullable(),appliedMinConfidence:i().nullable(),firstSeen:i().int().nullable(),motionOnsetAt:i().int().nullable(),birthLatencyMs:i().int().nullable(),birthIndexInBurst:i().int().nullable()}),is=u({deviceId:i().int().optional(),since:i().int().optional(),verdict:ns.optional(),limit:i().int().min(1).max(5e3).optional()}),as=5e3,os=200,ss=u({id:c(),note:c(),deviceId:i().int(),sourceTrackId:c(),archivedAt:i().int(),trackStartedAt:i().int().nullable(),trackClass:c().nullable(),trackLabel:c().nullable()}),cs=u({deviceId:i().int().optional(),limit:i().int().min(1).max(1e3).optional()}),ls=2e4,us=5e3,ds=500,fs=b([`same-subject`,`different-subjects`]),ps=b([`before`,`after`]),ms=b([`mixed`,`not-a-subject`]),hs=u({id:c(),deviceId:i().int(),leftTrackId:c(),rightTrackId:c(),leftSide:ps.nullable(),rightSide:ps.nullable(),relation:fs,presence:p(`continuous`).nullable(),leftStartedAt:i().int().nullable(),rightStartedAt:i().int().nullable(),createdAt:i().int(),updatedAt:i().int(),author:c().nullable()}),gs=u({id:c(),deviceId:i().int(),sourceTrackId:c(),purity:ms,switchAtMs:i().int().nullable(),startedAt:i().int().nullable(),createdAt:i().int(),updatedAt:i().int(),author:c().nullable()}),_s=u({deviceId:i().int(),trackId:c().min(1),otherTrackId:c().min(1),relation:fs,presence:p(`continuous`).optional(),trackSide:ps.optional(),otherSide:ps.optional()}),vs=u({deviceId:i().int(),trackId:c().min(1),otherTrackId:c().min(1)}),ys=u({cleared:S()}),bs=u({deviceId:i().int(),trackId:c().min(1),purity:b([`pure`,`mixed`,`not-a-subject`]),switchAtMs:i().int().optional()}),xs=u({purity:gs.nullable()}),Ss=u({deviceId:i().int(),trackId:c().optional(),since:i().int().optional(),until:i().int().optional(),limit:i().int().min(1).max(5e3).optional()}),Cs=u({relations:x(hs).readonly(),purities:x(gs).readonly(),truncated:S()}),ws=b([`unknown-track`,`cross-device`,`self-relation`,`contradiction`,`switch-outside-track`,`switch-needs-mixed`]),Ts={high:`High`,mid:`Mid`,low:`Low`};function Es(e){return Ts[e]??e.charAt(0).toUpperCase()+e.slice(1)}function Ds(e){return(e.width??0)*(e.height??0)}function Os(e){if(e.length===0)return[];let t=e.map((e,t)=>({s:e,i:t,px:Ds(e.metadata??{})})).toSorted((e,t)=>t.px-e.px),n=Array.from({length:e.length});for(let e=0;e<t.length;e++){let{s:r,i}=t[e],a;a=e===0?`high`:e===t.length-1?`low`:`mid`,n[i]={...r,quality:a}}return n}function ks(e){let t=e.height??0,n=e.width??0;return t>=1080||n>=1920?`high`:t>=480||n>=640?`mid`:`low`}function As(e){let t=e.protocols.find(e=>e.type===`rtsp`&&e.url)??e.protocols.find(e=>e.url),n=t?.type,r=n===`rtsp`?`rtsp`:n===`http`||n===`flv`?`http-mjpeg`:`custom`;return{id:e.id,label:e.label??e.id,protocol:r,url:t?.url,profileHint:e.quality}}function I(e){return typeof e==`string`}function js(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ms(e){return I(e)&&e.trim()?{url:e}:js(e)&&I(e.url)&&e.url.trim()?{url:e.url,label:I(e.label)?e.label:void 0}:null}function Ns(e){let t=I(e.snapshot_url)?e.snapshot_url:void 0;if(Array.isArray(e.streams)){let n=[];for(let t of e.streams){let e=Ms(t);e&&n.push(e)}return{streams:n,snapshot_url:t}}let n=[],r=I(e.main_stream_url)?e.main_stream_url:void 0;r&&n.push({url:r,label:I(e.main_stream_name)?e.main_stream_name:void 0});let i=I(e.sub_stream_url)?e.sub_stream_url:void 0;i&&n.push({url:i,label:I(e.sub_stream_name)?e.sub_stream_name:void 0});let a=I(e.third_stream_url)?e.third_stream_url:void 0;return a&&n.push({url:a,label:I(e.third_stream_name)?e.third_stream_name:void 0}),{streams:n,snapshot_url:t}}function Ps(e){if(e.length===0)return{};let t=Os(e),n={},r=t.find(e=>e.quality===`high`),i=t.find(e=>e.quality===`mid`),a=t.find(e=>e.quality===`low`);r&&(n.high=r.id),i&&(n.mid=i.id),a&&(n.low=a.id);let o=r??i??a??t[0];return o&&(n.high||=o.id,n.mid||=o.id,n.low||=o.id),n}var Fs={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},Is={debug:0,info:1,warn:2,error:3};function Ls(e,t){return Is[e]<=Is[t]}var Rs=b([`recording`,`events`]),zs=b([`prune`,`manual-delete`,`rescan`,`retention-run`,`relocate`,`orphan-audit`]),Bs=b([`retention`,`quota`,`manual`,`operator`,`maintenance`,`orphaned-device`]),Vs=u({id:c(),at:i(),domain:Rs,op:zs,reason:Bs,deviceId:i().nullable(),nodeId:c(),itemsAffected:i(),bytesReclaimed:i(),detail:c().nullable(),actor:c()}),Hs=u({deviceId:i().optional(),limit:i().int().min(1).max(1e3).optional()}),Us=500,Ws=200,Gs=u({id:c(),name:c(),category:c().optional(),description:c().optional(),icon:c().optional()}),Ks=[`person`,`vehicle`,`animal`,`package`],qs=[`person`,`vehicle`,`animal`];function Js(e){return qs.some(t=>t===e)}var Ys=u({mapping:v(c(),b(Ks)),preserveOriginal:S()}),Xs={preMs:5e3,postMs:1e4},Zs=i().int().min(0).max(6),Qs=/^([01]\d|2[0-3]):[0-5]\d$/,$s=b([`off`,`events`,`continuous`,`on-device-decision`]),ec=b(qs),tc=e=>new Set(e).size===e.length,nc=16,rc=-30,ic=u({motion:S().optional(),audioThresholdDbfs:i().optional(),objectClasses:x(ec).min(1).refine(tc,{message:`objectClasses must not repeat a class`}).optional(),sensorDeviceIds:x(i().int().positive()).min(1).max(16).refine(tc,{message:`sensorDeviceIds must not repeat a device`}).optional()}),ac=b([`continuous`,`events`]),oc=ic,sc=b([`on`,`muted`]),cc=u({days:x(Zs),start:c().regex(Qs),end:c().regex(Qs),mode:ac,audio:sc.optional(),triggers:oc.optional(),preBufferSec:i().min(0).optional(),postBufferSec:i().min(0).optional()}),lc={postBufferSec:30};function uc(e){let t=[],n=e.bands.map((e,n)=>{if(e.preBufferSec===void 0)return e;t.push(n);let{preBufferSec:r,...i}=e;return i});return t.length===0?{config:e,strippedBands:t}:{config:{...e,bands:n},strippedBands:t}}var dc=lc.postBufferSec*1e3,fc=u({maxAgeDays:i().min(0).optional(),maxSizeGb:i().min(0).optional()}),pc=u({enabled:S(),mode:$s.optional(),profiles:x(C).optional(),segmentSeconds:i().int().positive().optional(),bands:x(cc).default([]),deviceDecision:S().optional(),retention:fc.optional()}).strict().refine(e=>e.deviceDecision!==!0||e.bands.length===0,{message:`deviceDecision is a whole-config mode and carries no schedule: it cannot be combined with bands`,path:[`bands`]});function mc(e){return e.enabled?e.deviceDecision===!0?`on-device-decision`:e.bands.length===0?`off`:e.bands.some(e=>e.mode===`continuous`)?`continuous`:`events`:`off`}var hc=[`high`,`low`];function gc(e,t){if(t!==void 0&&t.length>0){let n=e.filter(e=>t.includes(e));return n.length>0?n:[...e]}let n=e.filter(e=>hc.includes(e));return n.length>0?n:[...e]}var _c=[`motion`,`audioThresholdDbfs`,`objectClasses`,`sensorDeviceIds`];function vc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function yc(e){return vc(e)&&vc(e.triggers)&&e.triggers.deviceSignal===!0}function bc(e){let t=e.triggers;return vc(t)?_c.some(e=>t[e]!==void 0):!1}function xc(e){let t=e.triggers;if(!vc(t))return e;let{deviceSignal:n,...r}=t;return{...e,triggers:r}}function Sc(e){let t={value:e,migrated:!1,strippedOnly:!1};if(!vc(e)||!Array.isArray(e.bands)||!e.bands.some(yc))return t;let n=[];for(let t of e.bands){if(!yc(t)||!vc(t)){n.push(t);continue}bc(t)&&n.push(xc(t))}if(n.length>0)return{value:{...e,bands:n},migrated:!1,strippedOnly:!0};let{mode:r,...i}=e;return{value:{...i,bands:[],deviceDecision:!0},migrated:!0,strippedOnly:!1}}var Cc=b([`queued`,`running`,`done`,`failed`,`cancelled`]),wc=u({jobId:c(),state:Cc,fromLocationId:c(),toLocationId:c(),deviceId:i().nullable(),entities:x(c()),filesMoved:i().int(),bytesMoved:i().int(),filesTotal:i().int().nullable(),rowsReconciled:i().int().nonnegative().optional(),rowsForgotten:i().int().nonnegative().optional(),startedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),Tc=b([`recordings`,`recordingsLow`]),Ec=u({fromLocationId:c(),toLocationId:c(),entities:x(b([`segments`])).optional(),footageClass:Tc.optional(),deviceId:i().int().optional(),profiles:x(c()).optional(),throttleMbps:i().min(1).max(1e3).optional(),sinceMs:i().int().optional()}),Dc=u({leaseId:c().min(1)}),Oc=Ec.extend({leaseId:c().min(1)}),kc=b([`move`,`seal`,`gallery`]),Ac=u({toLocationId:c(),fromLocationId:c().optional(),throttleMbps:i().min(1).max(1e3).optional(),mode:kc.optional()}),jc=u({present:S(),rows:i().int().nonnegative().nullable()}),Mc=u({media:jc,retrainFrames:jc,anyPresent:S(),total:i().int().nonnegative().nullable()}).nullable(),Nc=Ac.extend({leaseId:c().min(1)}),Pc=b([`recordings`,`recordingsLow`,`eventMedia`,`backups`,`galleryMedia`]),Fc=u({recordings:c().min(1).optional(),recordingsLow:c().min(1).optional(),eventMedia:c().min(1).optional(),backups:c().min(1).optional(),galleryMedia:c().min(1).optional()}).refine(e=>Object.keys(e).length>0,{message:`select at least one storage class`}),Ic=u({recordings:c().min(1).optional(),recordingsLow:c().min(1).optional(),eventMedia:c().min(1).optional(),backups:c().min(1).optional(),galleryMedia:c().min(1).optional()}).optional(),Lc=b([`blocking`,`nonBlocking`]),Rc=u({destinations:Fc,sources:Ic,throttleMbps:i().min(1).max(1e3).optional(),mode:Lc.optional()}),zc=b([`planning`,`sealing`,`pausing`,`moving`,`draining`,`verifying`,`repointing`,`refreshing`,`resuming`,`done`,`failed`,`cancelled`]),Bc=b([`pipeline`,`recorder`,`analytics`]),Vc=u({filesMoved:i().int().nonnegative(),filesTotal:i().int().nonnegative().nullable(),bytesMoved:i().int().nonnegative(),rowsReconciled:i().int().nonnegative().optional(),startedAt:i(),observedAt:i()}),Hc=u({storageClass:Pc,fromLocationId:c(),toLocationId:c(),freezeSource:S().optional(),moverJobId:c().nullable(),state:Cc.nullable(),error:c().nullable(),progress:Vc.nullable()}),Uc=u({jobId:c(),phase:zc,mode:Lc,destinations:Fc,sources:Ic,throttleMbps:i(),moves:x(Hc),pauseLeaseId:c().nullable(),pausedParticipants:x(Bc),repointed:S(),cancelRequested:S(),startedAt:i(),updatedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),Wc=b([`sharesDeviceWithSource`,`deviceIdentityUnknown`,`unstampedEventMediaRows`,`blockingOnly`,`noMover`]),Gc=u({code:Wc,storageClass:Pc,message:c()}),Kc=u({destinations:Fc,sources:Ic,mode:Lc,moves:x(u({storageClass:Pc,fromLocationId:c(),toLocationId:c(),freezeSource:S().optional()})),findings:x(Gc)}),qc=b([`footage`,`media`]),Jc=u({lane:qc,job:wc,migrationJobId:c().nullable(),observedAt:i()}),Yc=u({storageClass:Pc,fromLocationId:c(),toLocationId:c(),items:i().int().nonnegative().nullable(),bytes:i().int().nonnegative().nullable()}),Xc=u({classes:x(Pc).min(1),throttleMbps:i().min(1).max(1e3).optional()}),Zc=u({fromLocationId:c().min(1),footageClass:Tc.optional()}),Qc=u({segments:i().int().nonnegative(),bytes:i().int().nonnegative()}).nullable(),$c=u({locationId:c().min(1),apply:S().optional(),deviceId:i().int().positive().optional(),profiles:x(c().min(1)).optional()}),el=b([`location-unknown`,`source-writable`,`no-ledger`,`archive-unreadable`,`anchor-absent`,`anchor-unreadable`,`anchor-moved`]),tl=b([`live-tail`,`listing-error`,`path-mismatch`,`durable-refused`]),nl=u({"live-tail":i().int().nonnegative(),"listing-error":i().int().nonnegative(),"path-mismatch":i().int().nonnegative(),"durable-refused":i().int().nonnegative()}),rl=u({deviceId:i().int(),hoursWalked:i().int().nonnegative(),hoursMissing:i().int().nonnegative(),ghostSegments:i().int().nonnegative(),ghostBytes:i().int().nonnegative(),forgottenSegments:i().int().nonnegative(),orphanFiles:i().int().nonnegative()}),il=u({locationId:c(),applied:S(),refused:el.nullable(),archiveSegments:i().int().nonnegative().nullable(),archiveBytes:i().int().nonnegative().nullable(),hoursClaimed:i().int().nonnegative(),hoursWalked:i().int().nonnegative(),hoursMissing:i().int().nonnegative(),listings:i().int().nonnegative(),segmentsClaimed:i().int().nonnegative(),ghostSegments:i().int().nonnegative(),ghostBytes:i().int().nonnegative(),ghostHoursWhole:i().int().nonnegative(),forgottenSegments:i().int().nonnegative(),forgottenBytes:i().int().nonnegative(),orphanFiles:i().int().nonnegative(),orphanSample:x(c()).readonly(),hoursSkipped:i().int().nonnegative(),skippedByReason:nl,bounded:S(),byDevice:x(rl).readonly()}),al=u({rows:i().int().nonnegative()}).nullable(),ol=u({toLocationId:c().min(1),fromLocationId:c().optional(),mode:kc.optional()}),sl=b([`orphans`,`debug-media`,`ghost-ledger`,`done`,`failed`,`cancelled`]),cl=u({includeDebugMedia:S().optional()}),ll=u({jobId:c(),phase:sl,includeDebugMedia:S(),orphansReclaimed:i().int().nonnegative(),orphanBytesReclaimed:i().int().nonnegative(),debugMediaReclaimed:i().int().nonnegative(),debugMediaBytesReclaimed:i().int().nonnegative(),ghostsForgotten:i().int().nonnegative(),ghostBytesForgotten:i().int().nonnegative(),detail:c().nullable(),cancelRequested:S(),startedAt:i(),updatedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),ul=u({jobId:c().optional()}),dl=[`face`,`plate`],fl=[`face`,`plate`,`clip`,`custom`],pl=[`active`,`readonly`,`drain`,`disabled`],ml=b(pl),hl=b([`normal`,`never`,`drain`]),gl=`readOnly`;function _l(e){return e===`active`}function vl(e){return e!==`disabled`}function yl(e){switch(e){case`active`:return`normal`;case`drain`:return`drain`;case`readonly`:case`disabled`:return`never`}}function bl(e){return e.mode===void 0&&(e.config.readOnly===!0||e.enabled===!1)?`readonly`:null}function xl(e){return(Sl(e.mode)?e.mode:void 0)??bl(e)??`active`}function Sl(e){return pl.some(t=>t===e)}function Cl(e){return _l(xl(e))}function wl(e){return vl(xl(e))}function Tl(e){return yl(xl(e))}function El(e){if(!(`readOnly`in e))return e;let t={...e};return delete t[gl],t}function Dl(e,t){return{...e,mode:t,enabled:_l(t),config:El(e.config)}}var Ol=c().regex(/^[a-z][a-zA-Z0-9-]*$/),L=u({id:c().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),type:c(),displayName:c().min(1),providerId:c().min(1),config:v(c(),o()),nodeId:c().optional(),isSystem:S().default(!1),enabled:S().optional(),mode:ml.optional(),capacity:u({totalBytes:i(),availableBytes:i()}).nullable().optional(),owned:u({bytes:i().int().nonnegative(),measuredAtMs:i().int().nonnegative()}).optional(),createdAt:i(),updatedAt:i()}),kl=u({isDefault:S().optional()});function Al(e){return Cl({...e,config:e.config??{}})}var jl=1024**3;function Ml(e){return Math.floor(e*jl)}var Nl=u({locationId:c(),startedAtMs:i(),startBytes:i(),bytesRemaining:i(),drained:S(),estimatedEmptyAtMs:i().nullable()}),R=d([Ol,c().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/)]),Pl=b([`local-path`,`cap-mediated`]),Fl=`local-path`,Il=u({id:c().regex(/^[a-z][a-zA-Z0-9-]*$/,{message:`id must start with a lowercase letter and contain only letters, digits, or hyphens`}),displayName:c().min(1,{message:`displayName must not be empty`}),description:c().optional(),cardinality:b([`single`,`multi`]),access:Pl.optional(),defaultsTo:c().optional(),defaultRoot:b([`data`,`media`,`backup`]).optional()}),Ll=u({inputFps:i(),outputFps:i(),avgDecodeTimeMs:i(),droppedFrames:i(),lagMs:i().optional(),effectiveFps:i().optional(),adaptiveFps:i().optional()}),Rl=u({codec:c(),maxFps:i().default(0),outputFormat:b([`jpeg`,`rgb`,`bgr`,`yuv420`,`gray`]).default(`jpeg`),scale:i().default(1),width:i().optional(),height:i().optional(),deviceId:i().int().nonnegative().optional(),tag:c().optional(),frameSink:b([`callback`,`shm`]).default(`callback`),debug:S().optional()}),zl={offsetHours:1,startMonth:3,startWeekIndex:5,startWeekday:`Sunday`,startHour:2,endMonth:10,endWeekIndex:5,endWeekday:`Sunday`,endHour:3},Bl={offsetHours:1,startMonth:3,startWeekIndex:2,startWeekday:`Sunday`,startHour:2,endMonth:11,endWeekIndex:1,endWeekday:`Sunday`,endHour:2},Vl=[{id:`UTC`,label:`UTC (UTC+0)`,region:`Universal`,stdOffsetMinutes:0,dst:null},{id:`Europe/London`,label:`Europe/London (UTC+0 / BST)`,region:`Europe`,stdOffsetMinutes:0,dst:zl},{id:`Europe/Rome`,label:`Europe/Rome (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Paris`,label:`Europe/Paris (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Berlin`,label:`Europe/Berlin (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Madrid`,label:`Europe/Madrid (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Amsterdam`,label:`Europe/Amsterdam (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:zl},{id:`Europe/Istanbul`,label:`Europe/Istanbul (UTC+3)`,region:`Europe`,stdOffsetMinutes:180,dst:null},{id:`America/New_York`,label:`America/New York (UTC−5 / EDT)`,region:`Americas`,stdOffsetMinutes:-300,dst:Bl},{id:`America/Chicago`,label:`America/Chicago (UTC−6 / CDT)`,region:`Americas`,stdOffsetMinutes:-360,dst:Bl},{id:`America/Denver`,label:`America/Denver (UTC−7 / MDT)`,region:`Americas`,stdOffsetMinutes:-420,dst:Bl},{id:`America/Los_Angeles`,label:`America/Los Angeles (UTC−8 / PDT)`,region:`Americas`,stdOffsetMinutes:-480,dst:Bl},{id:`America/Sao_Paulo`,label:`America/Sao Paulo (UTC−3)`,region:`Americas`,stdOffsetMinutes:-180,dst:null},{id:`Asia/Dubai`,label:`Asia/Dubai (UTC+4)`,region:`Asia`,stdOffsetMinutes:240,dst:null},{id:`Asia/Kolkata`,label:`Asia/Kolkata (UTC+5:30)`,region:`Asia`,stdOffsetMinutes:330,dst:null},{id:`Asia/Singapore`,label:`Asia/Singapore (UTC+8)`,region:`Asia`,stdOffsetMinutes:480,dst:null},{id:`Asia/Shanghai`,label:`Asia/Shanghai (UTC+8)`,region:`Asia`,stdOffsetMinutes:480,dst:null},{id:`Asia/Tokyo`,label:`Asia/Tokyo (UTC+9)`,region:`Asia`,stdOffsetMinutes:540,dst:null},{id:`Australia/Sydney`,label:`Australia/Sydney (UTC+10 / AEDT)`,region:`Oceania`,stdOffsetMinutes:600,dst:{offsetHours:1,startMonth:10,startWeekIndex:1,startWeekday:`Sunday`,startHour:2,endMonth:4,endWeekIndex:1,endWeekday:`Sunday`,endHour:3}}];function Hl(e){return Vl.find(t=>t.id===e)}var Ul=b([`info`,`warn`,`error`]),Wl=u({name:c().min(3).regex(/^[a-z0-9-]+(\.[a-z0-9-]+)+$/,`a channel name is dotted lower-kebab, e.g. area.thing`),description:c().min(1),defaultLevel:Ul,perDevice:S()}),Gl=u({channel:c().min(1),armedUntilMs:i(),deviceIds:x(i().int()).readonly().nullable()}),Kl=class{descriptor;on=!1;devices=null;level;closesAtMs=0;constructor(e){this.descriptor=e,this.level=e.defaultLevel}get armedUntilMs(){return this.on?this.closesAtMs:0}wants(e){return this.on?this.devices===null||this.devices.has(e):!1}log(e,t,n){if(!this.on)return;let r={...n.tags,logChannel:this.descriptor.name},i={...n,tags:r};this.level===`error`?e.error(t,i):this.level===`warn`?e.warn(t,i):e.info(t,i)}arm(e){let t=e.deviceIds;this.devices=t===null||t.length===0?null:new Set(t),this.closesAtMs=e.armedUntilMs,this.on=!0}disarm(){this.on=!1,this.devices=null,this.closesAtMs=0}},ql=class{gates=new Map;declare(e){let t=Wl.parse(e);if(this.gates.get(t.name)!==void 0)throw Error(`log channel "${t.name}" is already declared in this process — two declarations of one name is a programming error, not a merge`);let n=new Kl(t);return this.gates.set(t.name,n),n}list(){return[...this.gates.values()].map(e=>e.descriptor).sort((e,t)=>e.name.localeCompare(t.name))}gate(e){return this.gates.get(e)}apply(e,t){let n=new Map,r=[];for(let i of e)if(!(i.armedUntilMs<=t)){if(!this.gates.has(i.channel)){r.push(i.channel);continue}n.set(i.channel,i)}for(let[e,t]of this.gates){let r=n.get(e);r===void 0?t.disarm():t.arm(r)}return r}tick(e){let t=[];for(let[n,r]of this.gates)r.on&&r.armedUntilMs<=e&&(r.disarm(),t.push(n));return t}armed(){let e=[];for(let[t,n]of this.gates)n.on&&e.push({channel:t,armedUntilMs:n.armedUntilMs,deviceIds:null});return e}},Jl=null;function Yl(){return Jl??=new ql,Jl}function Xl(e){return Yl().declare(e)}function Zl(){Jl=null}var Ql=5e3;function $l(e,t={}){let n=Yl(),r=t.now??Date.now,i=t.tickMs??5e3,a=setInterval(()=>{let t=n.tick(r());for(let n of t)e.info(`log channel window closed`,{tags:{logChannel:n},meta:{channel:n}})},i);return a.unref?.(),{list:()=>n.list(),apply:t=>{let i=n.apply(t.windows,r()),a=n.armed();return e.info(`log channels applied`,{meta:{armed:a.map(e=>e.channel),unknown:i,declared:n.list().length}}),{armed:a.length,unknown:i}},stop:()=>{clearInterval(a)}}}var eu=16,tu=1024,nu=`other`;function ru(e,t,n){return n===void 0?`${e}${t}`:`${e}${t}${n}`}var iu=class{maxKeys;maxReasons;counters=new Map;refused=0;constructor(e=tu,t=16){this.maxKeys=e,this.maxReasons=t}get keysRefused(){return this.refused}get size(){return this.counters.size}note(e,t){if(!Number.isInteger(e.deviceId)||e.deviceId<=0)return;let n=ru(e.deviceId,e.family,e.variant),r=this.counters.get(n);if(r===void 0){if(this.counters.size>=this.maxKeys){this.refused+=1;return}r={deviceId:e.deviceId,family:e.family,variant:e.variant,sinceMs:t,attempts:0,succeeded:0,reasons:new Map},this.counters.set(n,r)}if(r.attempts+=1,e.reason===void 0){r.succeeded+=1;return}let i=r.reasons.has(e.reason)||r.reasons.size<this.maxReasons?e.reason:nu;r.reasons.set(i,(r.reasons.get(i)??0)+1)}snapshot(e){let t=[];for(let n of this.counters.values())t.push({deviceId:n.deviceId,family:n.family,...n.variant===void 0?{}:{variant:n.variant},sinceMs:n.sinceMs,atMs:e,attempts:n.attempts,succeeded:n.succeeded,reasons:[...n.reasons.entries()].map(([e,t])=>({reason:e,count:t})).toSorted((e,t)=>t.count-e.count)});return t}clear(){this.counters.clear()}};function au(e){return e.attempts<=0?null:(e.attempts-e.succeeded)/e.attempts}var ou=`__unattributed__`,su=`__root__`;function cu(e){return e.addonId===null?e.classification===`root`?{key:su,kind:`root`}:{key:ou,kind:`unattributed`}:{key:e.addonId,kind:`addon`}}function lu(e){return Math.round(e*10)/10}function uu(e,t){let n=new Map;for(let t of e){let{key:e,kind:r}=cu(t),i=n.get(e)??{kind:r,main:0,gc:0,lifetime:0,memory:0,count:0,splitKnown:!0},a=t.cpuMainPercent!==null&&t.cpuGcPercent!==null;n.set(e,{kind:i.kind,main:i.main+(t.cpuMainPercent??0),gc:i.gc+(t.cpuGcPercent??0),lifetime:i.lifetime+t.cpuPercent,memory:i.memory+t.memoryRssBytes,count:i.count+1,splitKnown:i.splitKnown&&a})}return[...n.entries()].map(([e,n])=>{let r=n.splitKnown?lu(n.main):null,i=n.splitKnown?lu(n.gc):null,a=lu(n.lifetime);return{key:e,kind:n.kind,point:{atMs:t,samples:1,cpuMainPercent:r,cpuMainPercentMin:r,cpuGcPercent:i,cpuGcPercentMin:i,cpuLifetimePercent:a,cpuLifetimePercentMin:a,memoryRssBytes:n.memory,memoryRssBytesMin:n.memory,processCount:n.count,processCountMin:n.count}}})}function du(e,t){return e===null||t===null?null:e<t?e:t}function fu(e,t){return e===null||t===null?null:e>t?e:t}function pu(e,t,n){return{atMs:n,samples:e.samples+t.samples,cpuMainPercent:fu(e.cpuMainPercent,t.cpuMainPercent),cpuMainPercentMin:du(e.cpuMainPercentMin,t.cpuMainPercentMin),cpuGcPercent:fu(e.cpuGcPercent,t.cpuGcPercent),cpuGcPercentMin:du(e.cpuGcPercentMin,t.cpuGcPercentMin),cpuLifetimePercent:Math.max(e.cpuLifetimePercent,t.cpuLifetimePercent),cpuLifetimePercentMin:Math.min(e.cpuLifetimePercentMin,t.cpuLifetimePercentMin),memoryRssBytes:Math.max(e.memoryRssBytes,t.memoryRssBytes),memoryRssBytesMin:Math.min(e.memoryRssBytesMin,t.memoryRssBytesMin),processCount:Math.max(e.processCount,t.processCount),processCountMin:Math.min(e.processCountMin,t.processCountMin)}}function mu(e,t,n){if(n<=0||t<=0||e<=0)return Math.max(t,1);let r=e/n;return r<=t?t:Math.ceil(r/t)*t}function hu(e,t,n){if(t<=0||e.length===0)return e;let r=new Map;for(let i of e){let e=n+Math.floor((i.atMs-n)/t)*t,a=r.get(e);r.set(e,a===void 0?{...i,atMs:e}:pu(a,i,e))}return[...r.values()].toSorted((e,t)=>e.atMs-t.atMs)}function gu(e,t,n,r={}){if(e.length===0)return null;let i=`${n}/`,a=e=>({brokerId:e.brokerId,profileId:e.brokerId.startsWith(i)?e.brokerId.slice(i.length):e.brokerId,url:e.url,mutedUrl:e.mutedUrl,enabled:e.enabled,...e.codec===void 0?{}:{codec:e.codec},...e.resolution===void 0?{}:{resolution:e.resolution}});if(t!==`auto`){let n=e.find(e=>e.enabled&&e.url.length>0&&(e.profile===t||e.brokerId===`${i}${t}`));if(n)return a(n)}let o=e.filter(e=>e.enabled&&e.url.length>0);if(o.length===0)return null;let s=r.targetResolution;if(s){let e=o.filter(e=>e.resolution!==void 0);if(e.length>0){let t=_u(e,s);if(t)return a(t)}}return a(o[0])}function _u(e,t){let n=t.width*t.height;return[...e.flatMap(e=>e.resolution===void 0?[]:[{entry:e,pixels:e.resolution.width*e.resolution.height}])].sort((e,t)=>Na(e.pixels,t.pixels,n))[0]?.entry}var vu=1,yu=96,bu={upperHs:[0,32],upperV:[32,40],upperGrad:[40,48],lowerHs:[48,80],lowerV:[80,88],lowerGrad:[88,96]},xu=!1,Su=[`motion`,`objects`,`discarded`,`stationary`],Cu=[`motion`,`objects`,`stationary`],wu={borderWidth:2,dashed:!0,dashPattern:[6,4],opacity:1,borderRadius:2};function Tu(e){return!Number.isFinite(e)||e<=0?`0 s`:e<6e4?`${String(Math.round(e/1e3))} s`:e<36e5?`${String(Math.round(e/6e4))} min`:`${String(Math.round(e/36e5))} h`}var Eu=[`onnx`,`coreml`,`openvino`,`tflite`,`pt`],Du={yolo26:`YOLO26`,"yolo26-seg":`YOLO26-seg`,yolov9:`YOLOv9`};function Ou(e){return Du[e]??e.toUpperCase()}var ku={"yolo26-seg":`detection + masks, slightly heavier`},Au=/\s*@\s*\d+\s*(?:[x×]\s*\d+)?/gi;function ju(e,t){let n=Ou(e),r=t.replace(RegExp(`^${n}\\s+`,`i`),``).replace(Au,``).trim();return r.length>0?r:t}function Mu(e,t){let n=[];return t===`test`&&n.push(`Test`),n.push(e===`int8`?`Int8`:`Standard`),n.join(` · `)}function Nu(e){return Eu.filter(t=>e.formats[t]!==void 0)}function Pu(e){let t=Eu.map(t=>e.formats[t]?.sizeMB).filter(e=>typeof e==`number`);return t.length>0?Math.min(...t):0}var Fu=[`t`,`n`,`s`,`m`,`c`,`l`,`x`],Iu=[`fp32`,`int8`];function Lu(e){let t=new Map;for(let n of e){if(n.legacy===!0||n.group===void 0)continue;let{family:e,tier:r}=n.group,i=t.get(e)??new Map,a=i.get(r)??[];a.push(n),i.set(r,a),t.set(e,i)}let n=[];for(let[e,r]of t){let t=[];for(let[n,i]of r){let r=i.map(e=>{let t=e.group?.precision??`fp32`,n=e.group?.optimization??`standard`;return{modelId:e.id,precision:t,optimization:n,resolution:e.group?.resolution,label:Mu(t,n),formats:Nu(e),sizeMB:Pu(e)}}).toSorted((e,t)=>e.resolution===t.resolution?e.optimization===t.optimization?Iu.indexOf(e.precision)-Iu.indexOf(t.precision):e.optimization===`test`?1:-1:(t.resolution??1/0)-(e.resolution??1/0)),a=r.find(e=>e.precision===`fp32`&&e.optimization===`standard`)??r[0];if(a===void 0)continue;let o=i.find(e=>e.id===a.modelId);t.push({tier:n,label:o?ju(e,o.name):n.toUpperCase(),baseModelId:a.modelId,options:r})}t.sort((e,t)=>{let n=Fu.indexOf(e.tier),r=Fu.indexOf(t.tier);return n!==-1&&r!==-1?n-r:n===-1?r===-1?e.tier.localeCompare(t.tier):1:-1});let i=ku[e];n.push({family:e,label:Ou(e),...i===void 0?{}:{hint:i},tiers:t})}return n.sort((e,t)=>e.family.localeCompare(t.family)),n}function Ru(e,t){let n=t.precision??`fp32`,r=t.optimization??`standard`,i=e.filter(e=>e.group!==void 0&&e.group.family===t.family&&e.group.tier===t.tier&&(e.group.precision??`fp32`)===n&&(e.group.optimization??`standard`)===r);return t.resolution===void 0?i.toSorted((e,t)=>(t.group?.resolution??1/0)-(e.group?.resolution??1/0))[0]?.id??null:i.find(e=>e.group?.resolution===t.resolution)?.id??null}function zu(e,t){let n=e.find(e=>e.id===t);return n?.group===void 0?null:{family:n.group.family,tier:n.group.tier,precision:n.group.precision??`fp32`,optimization:n.group.optimization??`standard`,resolution:n.group.resolution}}var Bu=/^object-clip(-[a-z0-9][a-z0-9-]*)?$/,Vu=u({textModelId:c().min(1),embeddingDim:i().int().positive(),vectorIndex:c().regex(Bu),tokenizerFile:c().min(1),contextLength:i().int().positive(),padId:i().int().nonnegative(),searchMinScore:i().min(0).max(1)}),Hu=[`loose`,`balanced`,`strict`],Uu=b(Hu),Wu={loose:1,balanced:1.25,strict:1.5};function Gu(e,t){if(t.minScore!==void 0)return t.minScore;let n=Wu[t.strictness??`loose`];return Math.min(1,Math.round(e.searchMinScore*n*1e3)/1e3)}var Ku=[`animal-classifier`,`vehicle-classifier`,`package-detection`],qu=[`plate-detection`,`face-detection`],Ju=[`segmentation`],Yu=[...Ku,...qu,...Ju];function Xu(e){return Yu.some(t=>t===e)}function Zu(e){return Ku.some(t=>t===e)}var Qu={"animal-classifier":[`bird`,`cat`,`cow`,`deer`,`dog`,`horse`,`sheep`,`squirrel`],"vehicle-classifier":[`Ambulance`,`Bicycle`,`Bus`,`Car`,`Motorcycle`,`Taxi`,`Truck`,`Van`],"package-detection":[`package`]},$u={"animal-classifier":`animal`,"vehicle-classifier":`vehicle`,"package-detection":`package`},ed={"animal-classifier":{},"vehicle-classifier":{school_bus:`Bus`,garbage_truck:`Truck`},"package-detection":{}},td={"plate-detection":{rootLabels:[`license_plate`],parentMacro:`vehicle`,childClass:`plate`,servedChildSteps:[`plate-ocr`],use:`as-output`},"face-detection":{rootLabels:[`face`],parentMacro:`person`,childClass:`face`,servedChildSteps:[`face-embedding`],use:`refine`,minRootInputPx:640}},nd={"animal-classifier":!0,"vehicle-classifier":!0,"package-detection":!0,"plate-detection":!1,"face-detection":!1,segmentation:!0},rd=`useRootModel`,id=`labelLink`,ad=`detector-link:`;function od(e){return`${ad}${e}`}function sd(e){if(e===void 0||!e.startsWith(`detector-link:`))return;let t=e.slice(14);return Zu(t)?t:void 0}function cd(e,t){let n=ed[e][t];if(n!==void 0)return n;let r=t.toLowerCase();return Qu[e].find(e=>e.toLowerCase()===r)}function ld(e,t){let n=[];if(t!==void 0)for(let r of Ku){let i={};for(let n of e){if(t.mapping[n]!==$u[r])continue;let e=cd(r,n);e!==void 0&&(i[n]=e)}let a=new Set(Object.values(i));if(a.size===0)continue;let o=Qu[r].filter(e=>!a.has(e));n.push({kind:`label`,stepId:r,labelToEffect:i,uncovered:o})}let r=new Set(e);for(let e of qu){let t=td[e],i=t.rootLabels.filter(e=>r.has(e));i.length!==0&&n.push({kind:`crop`,stepId:e,rootLabels:i,parentMacro:t.parentMacro,childClass:t.childClass})}return n}var ud=[`yolo-seg`];function dd(e){return e===void 0||!ud.includes(e)?[]:Ju.map(e=>({kind:`mask`,stepId:e}))}function fd(e,t){let n=e?.suppliesSteps??ld(e!==void 0&&e.labels.length>0?e.labels.map(e=>e.id):t.labels,e?.classMap??t.classMap),r=dd(e?.postprocessor).filter(e=>!n.some(t=>t.stepId===e.stepId)),i=r.length>0?[...n,...r]:n,a=e===void 0?void 0:Math.min(e.inputSize.width,e.inputSize.height);return a===void 0?i:i.map(e=>e.kind===`crop`?{...e,rootInputPx:a}:e)}function pd(e,t){return e?.find(e=>e.stepId===t)}function md(e,t){let n=t?.[rd];if(typeof n==`boolean`)return n;let r=t?.[id];return r===`skip-when-filled`?!0:r===`run`?!1:nd[e]}function hd(e){if(e.kind!==`crop`)return;let t=td[e.stepId].minRootInputPx;if(t!==void 0)return e.rootInputPx!==void 0&&e.rootInputPx>=t?void 0:`root-input-too-small`}function gd(e,t,n){let r=pd(n,e),i=md(e,t),a=r===void 0?`root-does-not-declare`:hd(r);return{stepId:e,supply:r,intent:i,effective:i&&a===void 0,inactive:i&&a!==void 0,...i&&a!==void 0?{inactiveReason:a}:{}}}function _d(e,t){let n=t?.enabledClasses;return!Array.isArray(n)||n.length===0?!0:n.some(t=>t===e)}function vd(e){return td[e].servedChildSteps}var yd=.9;function bd(e,t){let n=e.w*e.h;if(!(n>0))return-1;let r=-1,i=1/0;return t.forEach((t,a)=>{if(Math.max(0,Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y))/n<.9)return;let o=t.w*t.h;o<i&&(r=a,i=o)}),r}var xd={"animal-classifier":`animals`,"vehicle-classifier":`vehicles`,"package-detection":`packages`,"plate-detection":`plates`,"face-detection":`faces`,segmentation:`masks`};function Sd(e){let t=xd[e.stepId];if(e.kind!==`label`)return t;let n=Qu[e.stepId].length;return n<=1?t:`${t} ${String(n-e.uncovered.length)}/${String(n)}`}function Cd(e){return(e??[]).map(Sd).join(` · `)}var wd=[`onnx`,`coreml`,`openvino`,`tflite`,`pt`,`gguf`],Td=u({url:c(),sizeMB:i(),isDirectory:S().optional(),files:x(c()).readonly().optional(),runtimes:x(b([`python`])).readonly().optional(),revision:c().min(1).optional()}),Ed=u({url:c(),filename:c(),sizeMB:i()}),Dd=u({onnx:Td.optional(),coreml:Td.optional(),openvino:Td.optional(),tflite:Td.optional(),pt:Td.optional(),gguf:Td.optional()}),Od=u({family:c(),tier:c(),precision:b([`fp32`,`int8`]).optional(),optimization:b([`standard`,`test`]).optional(),resolution:i().int().positive().optional()}),kd=[`camstack`,`frigate`,`scrypted`,`custom`],Ad=b(kd);function jd(e){if(e.provider!==void 0)return e.provider;let t=`${e.id} ${e.description??``}`;return/scrypted/i.test(t)?`scrypted`:/frigate/i.test(t)?`frigate`:`custom`}var Md=[`camstack-hf`,`third-party`,`built-in`],Nd=n(e=>typeof e==`string`?{weights:e}:e,u({weights:c().min(1),code:c().min(1).optional(),data:u({name:c().min(1),terms:c().min(1),url:c().url().optional()}).optional(),upstream:u({name:c().min(1),url:c().url()}).optional(),url:c().url().optional(),attribution:c().min(1).optional(),modifications:c().min(1).optional(),hosting:b(Md).optional(),nonCommercial:S().optional()})),Pd=f(`kind`,[u({kind:p(`label`),stepId:b(Ku),labelToEffect:v(c(),c()),uncovered:x(c()).readonly()}),u({kind:p(`crop`),stepId:b(qu),rootLabels:x(c()).readonly(),parentMacro:b([`vehicle`,`person`]),childClass:b([`plate`,`face`]),rootInputPx:i().int().positive().optional()}),u({kind:p(`mask`),stepId:b(Ju)})]),Fd=u({id:c(),name:c(),description:c(),formats:Dd,inputSize:u({width:i(),height:i()}),inputChannels:i().int().positive().optional(),labels:x(Gs).readonly(),inputLayout:b([`nchw`,`nhwc`]).optional(),inputNormalization:b([`zero-one`,`imagenet`,`none`,`scrfd`]).optional(),outputProbabilities:S().optional(),preprocessMode:b([`letterbox`,`resize`]).optional(),postprocessor:g().optional(),defaultConfidence:i().min(0).max(1).optional(),defaultClassFloors:v(c(),i().min(0).max(1)).optional(),gpuInferencePrecision:b([`f32`,`f16`]).optional(),suppliedLabelFloors:v(c(),i().min(0).max(1)).optional(),faceAlignment:S().optional(),extraFiles:x(Ed).readonly().optional(),legacy:S().optional(),metrics:u({map50:i().optional(),p95LatencyMs:v(c(),i()).optional()}).optional(),license:Nd.optional(),group:Od.optional(),provider:Ad.optional(),classMap:Ys.optional(),suppliesSteps:x(Pd).readonly().optional(),clip:Vu.optional()}),Id=f(`format`,[u({format:p(`openvino`),precisions:x(b([`fp16`,`int8`])).min(1).readonly()}),u({format:p(`coreml`)})]),Ld=u({id:c().regex(/^[a-zA-Z0-9._-]+$/),name:c(),labels:x(Gs).readonly(),inputSize:u({width:i(),height:i()}),inputLayout:b([`nchw`,`nhwc`]).optional(),inputNormalization:b([`zero-one`,`imagenet`,`none`,`scrfd`]).optional(),preprocessMode:b([`letterbox`,`resize`]).optional(),outputFormat:b([`yolo`,`ssd`,`embedding`,`classification`,`ocr`,`segmentation`]),faceAlignment:S().optional(),classMap:Ys.optional()}),Rd=u({format:b(wd),precision:b([`fp16`,`int8`]).optional(),sizeMB:i(),validated:S(),files:x(c()).readonly()}),zd=u({entry:Fd,artifacts:x(Rd).readonly()});function Bd(e){switch(e.toUpperCase()){case`GET`:case`HEAD`:case`OPTIONS`:return`view`;case`POST`:case`PUT`:case`PATCH`:return`create`;default:return`delete`}}function Vd(e,t){return e.some(e=>e.type===`category`&&e.target===`device`&&e.access.includes(t))}function Hd(e,t,n){return e.some(e=>e.type===`addon`&&e.target===t&&e.access.includes(n))}function Ud(e){let t=e.kind;if(t===void 0)return{kind:`session`};if(t!==`sso-bridge`)return{kind:`not-a-credential`,reason:`bridge token kind=${String(t)}`};let n=e.provider;return n===`oauth-access`?{kind:`integration`,provider:`oauth-access`}:{kind:`not-a-credential`,reason:`bridge token provider=${String(n)}`}}function Wd(e){let{principal:t}=e;if(t.kind===`not-a-credential`)return{allowed:!1,reason:t.reason};if(t.kind===`session`)return{allowed:!0};let n=Bd(e.method);return Hd(e.scopes,e.addonId,n)?{allowed:!0}:{allowed:!1,reason:`integration token holds no addon:${e.addonId}[${n}] grant`}}var Gd=u({kind:p(`field`).optional(),sourceKey:c(),cap:c(),fieldPath:c()}),Kd=u({kind:p(`literal`),value:d([c(),i(),S(),re()])}),qd=u({kind:p(`global`),sourceStableId:c(),cap:c(),fieldPath:c()}),Jd=d([Gd,Kd,qd]),Yd=u({expr:c().min(1).max(Hr),bindings:v(c().regex(Jr),Jd)}).superRefine((e,t)=>{let n=Oi(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Xd=3,Zd=32,Qd=b([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`contains`,`in`]),$d=u({kind:p(`condition`),deviceId:i().int().nonnegative(),cap:c().min(1),fieldPath:c().min(1),operator:Qd,value:d([c(),i(),S(),x(d([c(),i()]))])}),ef=u({kind:p(`expression`),expr:c().min(1).max(Hr),bindings:v(c().regex(Jr),Jd)}).superRefine((e,t)=>{let n=Oi(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),tf=pe(()=>f(`kind`,[u({kind:p(`all`),children:x(tf)}),u({kind:p(`any`),children:x(tf)}),u({kind:p(`not`),child:tf}),$d,ef])),nf=f(`kind`,[u({kind:p(`device-state`),deviceId:i().int().nonnegative(),cap:c().min(1),fieldPath:c().min(1),becomes:d([c(),i(),S()]).optional(),edge:S().optional(),forMs:i().int().min(0).max(864e5).optional(),debounceMs:i().int().min(0).max(6e5).optional()}),u({kind:p(`device-event`),category:c().min(1),deviceId:i().int().nonnegative().optional()}),u({kind:p(`schedule`),cron:c().min(1).max(120)}),u({kind:p(`manual`)})]),rf=f(`kind`,[u({kind:p(`wait`),seconds:i().min(0).max(300)}),u({kind:p(`cap`),deviceId:d([i().int(),x(i().int()).min(1),u({$var:c().min(1)})]),cap:c().min(1),method:c().min(1),args:v(c(),o()).optional()}),u({kind:p(`code`),code:c().min(1).max(2e4)})]),af=u({triggers:x(nf),conditions:tf.optional(),actions:x(rf)});function of(e){if(e.kind===`condition`||e.kind===`expression`)return 1;if(e.kind===`not`)return 1+of(e.child);let t=e.children;if(t.length===0)return 1;let n=0;for(let e of t){let t=of(e);t>n&&(n=t)}return 1+n}function sf(e){if(e.kind===`condition`||e.kind===`expression`)return 1;if(e.kind===`not`)return sf(e.child);let t=0;for(let n of e.children)t+=sf(n);return t}function cf(e){return e.kind===`condition`||e.kind===`expression`?!1:e.kind===`not`?cf(e.child):e.children.length===0?!0:e.children.some(cf)}function lf(e){if(e.triggers.length===0)return`an automation needs at least one trigger — without one nothing can start a run`;if(e.actions.length===0)return`an automation needs at least one action — a rule that does nothing is not a rule`;let t=e.conditions;if(t!==void 0){if(cf(t))return`a condition group is empty — group existing rows instead of leaving a container to fill`;let e=of(t);if(e>3)return`conditions nest ${e} levels deep — the limit is 3. "not (any of …)" is the same as "all of (not …)", which is one level shallower`;let n=sf(t);if(n>32)return`conditions use ${n} leaves — the limit is 32`}return null}var uf=15e3;function z(e){return JSON.stringify(e)}function df(e,t){switch(e.kind){case`all`:return`allOf([\n${e.children.map(e=>`${t} () => ${df(e,`${t} `)}`).join(`,
|
|
4
4
|
`)}\n${t}])`;case`any`:return`anyOf([\n${e.children.map(e=>`${t} () => ${df(e,`${t} `)}`).join(`,
|
|
5
5
|
`)}\n${t}])`;case`not`:return`notOf(() => ${df(e.child,t)})`;case`condition`:return`leaf(${z(e.deviceId)}, ${z(e.cap)}, ${z(e.fieldPath)}, ${z(e.operator)}, ${z(e.value)})`;case`expression`:return`exprLeaf(${z(e.expr)}, ${z(e.bindings)})`}}function ff(e,t){switch(e.kind){case`schedule`:return` // trigger ${t}: schedule — armed to the next minute boundary and
|
|
6
6
|
// RE-ARMED from the wall clock every tick, so it cannot drift the way a
|