homematic-manager 3.0.0-beta.2 → 3.0.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/README.md +2 -1
  2. package/data/easymode-time-selectors.json +285 -0
  3. package/data/icons/106_hm-lc-sw1-dr.webp +0 -0
  4. package/data/icons/108_hm-rc-dis-h-x-eu.webp +0 -0
  5. package/data/icons/109_hm-lc-sw1-pl-ct.webp +0 -0
  6. package/data/icons/110_hm-es-pmsw1-dr.webp +0 -0
  7. package/data/icons/112_hmip-wrc2.webp +0 -0
  8. package/data/icons/113_hmip-psm-ch.webp +0 -0
  9. package/data/icons/113_hmip-psm-it.webp +0 -0
  10. package/data/icons/113_hmip-psm-pe.webp +0 -0
  11. package/data/icons/113_hmip-psm-uk.webp +0 -0
  12. package/data/icons/113_hmip-psm.webp +0 -0
  13. package/data/icons/114_hm-lc-dim1t-fm-lf_3.webp +0 -0
  14. package/data/icons/116_hm-rc-4-3_brc-h3.webp +0 -0
  15. package/data/icons/118_hmip-swdo.webp +0 -0
  16. package/data/icons/119_hmip-rc8.webp +0 -0
  17. package/data/icons/120_hmip-etrv.webp +0 -0
  18. package/data/icons/121_hmip-wth.webp +0 -0
  19. package/data/icons/123_oligo.smart.ip.hm.webp +0 -0
  20. package/data/icons/125_hmip-smi.webp +0 -0
  21. package/data/icons/130_hmip-srh.webp +0 -0
  22. package/data/icons/131_hmip-wrc6.webp +0 -0
  23. package/data/icons/132_hmip-smo.webp +0 -0
  24. package/data/icons/133_hmip-asir.webp +0 -0
  25. package/data/icons/134_hmip-fsm.webp +0 -0
  26. package/data/icons/135_hmip-fsm16.webp +0 -0
  27. package/data/icons/136_hmip-miob.webp +0 -0
  28. package/data/icons/137_hmip-fal-c6.webp +0 -0
  29. package/data/icons/138_hmip-fal-c10.webp +0 -0
  30. package/data/icons/140_alpha-ip-rgb.webp +0 -0
  31. package/data/icons/141_alpha-ip-rgba.webp +0 -0
  32. package/data/icons/144_hmip-wgc.webp +0 -0
  33. package/data/icons/145_hmip-froll_hmip-fbl.webp +0 -0
  34. package/data/icons/146_hmip-sth.webp +0 -0
  35. package/data/icons/147_hmip-sthd.webp +0 -0
  36. package/data/icons/148_hmip-stho.webp +0 -0
  37. package/data/icons/149_hmip-sam.webp +0 -0
  38. package/data/icons/151_hmip-pcbs-bat.webp +0 -0
  39. package/data/icons/152_hmip-swdo-i.webp +0 -0
  40. package/data/icons/153_hmip-spi.webp +0 -0
  41. package/data/icons/154_hmip-spdr.webp +0 -0
  42. package/data/icons/155_hmip-whs2.webp +0 -0
  43. package/data/icons/156_hmip-mod-oc8.webp +0 -0
  44. package/data/icons/158_hmip-etrv-uk.webp +0 -0
  45. package/data/icons/159_hmip-mod-rc8.webp +0 -0
  46. package/data/icons/160_hmipw-drs4.webp +0 -0
  47. package/data/icons/161_hmipw-drs8.webp +0 -0
  48. package/data/icons/162_hmipw-drap.webp +0 -0
  49. package/data/icons/163_hmipw-drbl4.webp +0 -0
  50. package/data/icons/164_hmipw-dri16.webp +0 -0
  51. package/data/icons/165_hmipw-fio6.webp +0 -0
  52. package/data/icons/166_hmipw-drd3.webp +0 -0
  53. package/data/icons/167_hmipw-dri32.webp +0 -0
  54. package/data/icons/168_hmip-smi55.webp +0 -0
  55. package/data/icons/169_hmip-swo-pr.webp +0 -0
  56. package/data/icons/170_hmip-swo-pl.webp +0 -0
  57. package/data/icons/171_hmip-swo-b.webp +0 -0
  58. package/data/icons/172_hmip-swd.webp +0 -0
  59. package/data/icons/173_hmip-bsl.webp +0 -0
  60. package/data/icons/174_hmip-slo.webp +0 -0
  61. package/data/icons/175_hmip-group-heating.webp +0 -0
  62. package/data/icons/177_hmip-dbb.webp +0 -0
  63. package/data/icons/178_hmip-etrv-b1.webp +0 -0
  64. package/data/icons/179_hmip-swdm-b2.webp +0 -0
  65. package/data/icons/180_hmip-etrv-b.webp +0 -0
  66. package/data/icons/181_hmip-swdm.webp +0 -0
  67. package/data/icons/182_hmip-fci1.webp +0 -0
  68. package/data/icons/183_hmip-mod-tm.webp +0 -0
  69. package/data/icons/184_hmip-pcbs2.webp +0 -0
  70. package/data/icons/185_hmip-FCI6.webp +0 -0
  71. package/data/icons/186_hmip-mp3p.webp +0 -0
  72. package/data/icons/187_hmip-rcb1.webp +0 -0
  73. package/data/icons/188_hmip-etrv-c.webp +0 -0
  74. package/data/icons/190_hmip-sci.webp +0 -0
  75. package/data/icons/191_hmip-mod-ho.webp +0 -0
  76. package/data/icons/192_hmip-asir-o.webp +0 -0
  77. package/data/icons/193_hmip-wt.webp +0 -0
  78. package/data/icons/194_hmip-wrcd.webp +0 -0
  79. package/data/icons/195_hmipw-smi55.webp +0 -0
  80. package/data/icons/196_hmip-ASIR-2.webp +0 -0
  81. package/data/icons/197_hmip-swdo-pl.webp +0 -0
  82. package/data/icons/198_hmip-falmot-c12.webp +0 -0
  83. package/data/icons/199_hmip-mio16-pcb.webp +0 -0
  84. package/data/icons/200_hmip-wth-b.webp +0 -0
  85. package/data/icons/201_hmip-stv.webp +0 -0
  86. package/data/icons/202_hmip-wrcr.webp +0 -0
  87. package/data/icons/203_hmip-fsi16.webp +0 -0
  88. package/data/icons/204_hmip-drdi3.webp +0 -0
  89. package/data/icons/205_hmip-drsi4.webp +0 -0
  90. package/data/icons/206_hmip-drbli4.webp +0 -0
  91. package/data/icons/207_hmip-srdo.webp +0 -0
  92. package/data/icons/208_hmip-dsd-pcb.webp +0 -0
  93. package/data/icons/209_hmip-etrv-b-uk.webp +0 -0
  94. package/data/icons/210_hmip-ste2-pcb.webp +0 -0
  95. package/data/icons/211_hmip-drg-dali.webp +0 -0
  96. package/data/icons/211_hmip-drsi1.webp +0 -0
  97. package/data/icons/212_hmip-sfd.webp +0 -0
  98. package/data/icons/212_hmipw-scthd.webp +0 -0
  99. package/data/icons/213_hmip-smo230.webp +0 -0
  100. package/data/icons/213_hmip-wua.webp +0 -0
  101. package/data/icons/214_hmip-dld.webp +0 -0
  102. package/data/icons/215_hmip-psm-pe-2.webp +0 -0
  103. package/data/icons/215_hmip-scth230.webp +0 -0
  104. package/data/icons/216_hmip-etrv-e.webp +0 -0
  105. package/data/icons/216_hmip-psm-ch-2.webp +0 -0
  106. package/data/icons/217_hmip-usbsm.webp +0 -0
  107. package/data/icons/218_hmip-dls.webp +0 -0
  108. package/data/icons/219_hmip-fwi.webp +0 -0
  109. package/data/icons/220_hmip-wsc.webp +0 -0
  110. package/data/icons/221_hmip-sti.webp +0 -0
  111. package/data/icons/221_hmip-wkp.webp +0 -0
  112. package/data/icons/222_hmipw-wgd.webp +0 -0
  113. package/data/icons/223_hmip-mod-wd-vk.webp +0 -0
  114. package/data/icons/224_hmip-etrv-cl.webp +0 -0
  115. package/data/icons/225_hmip-rgbw.webp +0 -0
  116. package/data/icons/226_hmip-esi.webp +0 -0
  117. package/data/icons/227_hmip-lsc.webp +0 -0
  118. package/data/icons/228_elv-sh-sw1-bat.webp +0 -0
  119. package/data/icons/229_elv-sh-bm-s.webp +0 -0
  120. package/data/icons/230_hmip-etrv-f.webp +0 -0
  121. package/data/icons/231_elv-sh-cth.webp +0 -0
  122. package/data/icons/232_elv-sh-taco.webp +0 -0
  123. package/data/icons/233_hmip-flc.webp +0 -0
  124. package/data/icons/234_hmip-etrv-3.webp +0 -0
  125. package/data/icons/235_hmip-psmco.webp +0 -0
  126. package/data/icons/236_elv-sh-sb8.webp +0 -0
  127. package/data/icons/237_elv-sh-ctv.webp +0 -0
  128. package/data/icons/238_elv-sh-cap.webp +0 -0
  129. package/data/icons/239_hmip-wgs-f.webp +0 -0
  130. package/data/icons/240_hmip-wgtc-f.webp +0 -0
  131. package/data/icons/241_hmip-wgt-f.webp +0 -0
  132. package/data/icons/242_elv-sh-smsi.webp +0 -0
  133. package/data/icons/243_elv-sh-crc.webp +0 -0
  134. package/data/icons/244_elv-sh-krco.webp +0 -0
  135. package/data/icons/245_hmip-falmot-c8.webp +0 -0
  136. package/data/icons/246_elv-sh-wsm.webp +0 -0
  137. package/data/icons/247_hmip-hap-2.webp +0 -0
  138. package/data/icons/248_hmip-dlp.webp +0 -0
  139. package/data/icons/249_elv-sh-psmci.webp +0 -0
  140. package/data/icons/250_elv-sh-sps25.webp +0 -0
  141. package/data/icons/252_elv-sh-pti2.webp +0 -0
  142. package/data/icons/253_hmip-udi-smi55.webp +0 -0
  143. package/data/icons/254_hmip-udi-pb2.webp +0 -0
  144. package/data/icons/256_ELV-SH-SMS2.webp +0 -0
  145. package/data/icons/257_ELV-SH-FSI.webp +0 -0
  146. package/data/icons/258_hmip-m-td15.webp +0 -0
  147. package/data/icons/259_elv-sh-dusi.webp +0 -0
  148. package/data/icons/260_hmip-wss.webp +0 -0
  149. package/data/icons/54a_lc-ddc1-pcb.webp +0 -0
  150. package/data/icons/72_hm-rc-brc-h.webp +0 -0
  151. package/data/icons/73_hm-atent.webp +0 -0
  152. package/data/icons/79_hm-lc-dim1pwm-cv.webp +0 -0
  153. package/data/icons/84_hm-rc-4-3.webp +0 -0
  154. package/data/icons/85_hm-rc-sec4-3.webp +0 -0
  155. package/data/icons/86_hm-rc-key4-3.webp +0 -0
  156. package/data/icons/CCU3-1-50.webp +0 -0
  157. package/data/icons/CCU3.webp +0 -0
  158. package/data/icons/hm-coupling-dim.webp +0 -0
  159. package/data/icons/hm-coupling-group.webp +0 -0
  160. package/data/icons/hm-coupling-onoff.webp +0 -0
  161. package/data/icons/hm-coupling-rgb-dim.webp +0 -0
  162. package/data/icons/hm-coupling-rgb.webp +0 -0
  163. package/data/icons/hm-coupling-rgbw-dim.webp +0 -0
  164. package/data/icons/hm-coupling-rgbw.webp +0 -0
  165. package/data/icons/hm-coupling-white-dim.webp +0 -0
  166. package/data/icons/hm-coupling-white.webp +0 -0
  167. package/data/icons/hm-hue_gateway.webp +0 -0
  168. package/data/icons/hm-lightify_gateway.webp +0 -0
  169. package/data/icons/hm_resc-win-pcb-sc.webp +0 -0
  170. package/data/icons/unknown_device.webp +0 -0
  171. package/data/manifest.json +7 -1
  172. package/data/master-metadata.json +1997 -33
  173. package/data/profiles/ACCESS_RECEIVER.json +26 -13
  174. package/data/profiles/ACOUSTIC_SIGNAL_VIRTUAL_RECEIVER.json +3270 -76
  175. package/data/profiles/ACTOR_SECURITY.json +90 -10
  176. package/data/profiles/ACTOR_WINDOW.json +580 -43
  177. package/data/profiles/ALARMACTUATOR.json +564 -37
  178. package/data/profiles/ALARM_COND_SWITCH_RECEIVER.json +36 -4
  179. package/data/profiles/ALARM_SWITCH_VIRTUAL_RECEIVER.json +735 -33
  180. package/data/profiles/ARMING.json +115 -5
  181. package/data/profiles/BLIND.json +1038 -49
  182. package/data/profiles/BLIND_VIRTUAL_RECEIVER.json +4624 -124
  183. package/data/profiles/CLIMATECONTROL_FLOOR_PUMP_TRANSCEIVER.json +27 -1
  184. package/data/profiles/DIMMER.json +2233 -71
  185. package/data/profiles/DIMMER_VIRTUAL_RECEIVER.json +5773 -102
  186. package/data/profiles/DIMMER_woLongKeyPress.json +117 -4
  187. package/data/profiles/DOOR_RECEIVER.json +138 -10
  188. package/data/profiles/DUAL_WHITE_BRIGHTNESS.json +305 -11
  189. package/data/profiles/DUAL_WHITE_COLOR.json +730 -23
  190. package/data/profiles/HEATING_KEY_RECEIVER.json +127 -10
  191. package/data/profiles/HMW_BLIND.json +555 -20
  192. package/data/profiles/HMW_DIMMER.json +1337 -47
  193. package/data/profiles/HMW_INPUT_OUTPUT.json +375 -20
  194. package/data/profiles/HMW_SWITCH.json +375 -20
  195. package/data/profiles/JALOUSIE.json +1320 -52
  196. package/data/profiles/KEYMATIC.json +120 -12
  197. package/data/profiles/REMOTECONTROL_RECEIVER.json +10 -2
  198. package/data/profiles/RGBW_AUTOMATIC.json +46 -6
  199. package/data/profiles/RGBW_COLOR.json +14 -4
  200. package/data/profiles/SERVO_VIRTUAL_RECEIVER.json +117 -3
  201. package/data/profiles/SHUTTER_VIRTUAL_RECEIVER.json +4263 -128
  202. package/data/profiles/SIGNAL_CHIME.json +195 -14
  203. package/data/profiles/SIGNAL_CHIMEM.json +195 -14
  204. package/data/profiles/SIGNAL_LED.json +195 -14
  205. package/data/profiles/SIGNAL_LEDM.json +195 -14
  206. package/data/profiles/SIMPLE_SWITCH_RECEIVER.json +113 -9
  207. package/data/profiles/STATUS_INDICATOR.json +1073 -45
  208. package/data/profiles/SWITCH.json +1412 -60
  209. package/data/profiles/SWITCH_PANIC.json +315 -13
  210. package/data/profiles/SWITCH_SENSOR.json +243 -11
  211. package/data/profiles/SWITCH_VIRTUAL_RECEIVER.json +3963 -131
  212. package/data/profiles/UNIVERSAL_ACTOR.json +4319 -90
  213. package/data/profiles/UNIVERSAL_LIGHT_RECEIVER_LSC.json +6094 -196
  214. package/data/profiles/UNIVERSAL_LIGHT_RECEIVER_PWM.json +4920 -101
  215. package/data/profiles/UNIVERSAL_LIGHT_RECEIVER_RGB(W).json +2353 -80
  216. package/data/profiles/UNIVERSAL_LIGHT_RECEIVER_RGBW_DALI.json +6116 -176
  217. package/data/profiles/UNIVERSAL_LIGHT_RECEIVER_TW.json +3844 -104
  218. package/data/profiles/VIRTUAL_DIMMER.json +305 -11
  219. package/data/profiles/VIRTUAL_DUAL_WHITE_COLOR.json +730 -23
  220. package/data/profiles/WATER_SWITCH_VIRTUAL_RECEIVER.json +3903 -128
  221. package/data/profiles/WINDOW_DRIVE_RECEIVER.json +220 -8
  222. package/data/profiles/WINMATIC.json +505 -23
  223. package/dist/cli.js +24 -0
  224. package/dist/occulite.d.ts +86 -0
  225. package/dist/occulite.js +140 -0
  226. package/dist/options.d.ts +37 -6
  227. package/dist/options.js +49 -6
  228. package/dist/server.d.ts +47 -4
  229. package/dist/server.js +237 -27
  230. package/dist/sessions.d.ts +9 -1
  231. package/dist/sessions.js +8 -2
  232. package/dist/testSupport.js +9 -2
  233. package/node_modules/@homematic-manager/backend/dist/api/backend.d.ts +33 -0
  234. package/node_modules/@homematic-manager/backend/dist/api/backend.js +558 -46
  235. package/node_modules/@homematic-manager/backend/dist/cache/names.d.ts +9 -0
  236. package/node_modules/@homematic-manager/backend/dist/cache/names.js +21 -0
  237. package/node_modules/@homematic-manager/backend/dist/config/defaults.js +10 -1
  238. package/node_modules/@homematic-manager/backend/dist/config/store.d.ts +28 -1
  239. package/node_modules/@homematic-manager/backend/dist/config/store.js +59 -3
  240. package/node_modules/@homematic-manager/backend/dist/devices/installMode.js +9 -0
  241. package/node_modules/@homematic-manager/backend/dist/errors.d.ts +18 -0
  242. package/node_modules/@homematic-manager/backend/dist/errors.js +51 -2
  243. package/node_modules/@homematic-manager/backend/dist/images/deviceImages.d.ts +6 -0
  244. package/node_modules/@homematic-manager/backend/dist/images/deviceImages.js +38 -2
  245. package/node_modules/@homematic-manager/backend/dist/index.d.ts +3 -1
  246. package/node_modules/@homematic-manager/backend/dist/index.js +4 -1
  247. package/node_modules/@homematic-manager/backend/dist/interfaces/manager.d.ts +70 -8
  248. package/node_modules/@homematic-manager/backend/dist/interfaces/manager.js +333 -44
  249. package/node_modules/@homematic-manager/backend/dist/meta/client.d.ts +120 -0
  250. package/node_modules/@homematic-manager/backend/dist/meta/client.js +307 -0
  251. package/node_modules/@homematic-manager/backend/dist/meta/credentials.d.ts +38 -0
  252. package/node_modules/@homematic-manager/backend/dist/meta/credentials.js +53 -0
  253. package/node_modules/@homematic-manager/backend/dist/meta/index.d.ts +12 -0
  254. package/node_modules/@homematic-manager/backend/dist/meta/index.js +12 -0
  255. package/node_modules/@homematic-manager/backend/dist/meta/localProvider.d.ts +47 -0
  256. package/node_modules/@homematic-manager/backend/dist/meta/localProvider.js +119 -0
  257. package/node_modules/@homematic-manager/backend/dist/meta/occuliteProvider.d.ts +79 -0
  258. package/node_modules/@homematic-manager/backend/dist/meta/occuliteProvider.js +305 -0
  259. package/node_modules/@homematic-manager/backend/dist/meta/provider.d.ts +68 -0
  260. package/node_modules/@homematic-manager/backend/dist/meta/provider.js +19 -0
  261. package/node_modules/@homematic-manager/backend/dist/meta/regaProvider.d.ts +84 -0
  262. package/node_modules/@homematic-manager/backend/dist/meta/regaProvider.js +403 -0
  263. package/node_modules/@homematic-manager/backend/dist/meta/service.d.ts +137 -0
  264. package/node_modules/@homematic-manager/backend/dist/meta/service.js +412 -0
  265. package/node_modules/@homematic-manager/backend/dist/rega/client.d.ts +11 -0
  266. package/node_modules/@homematic-manager/backend/dist/rega/client.js +13 -0
  267. package/node_modules/@homematic-manager/backend/dist/rega/scripts.d.ts +51 -0
  268. package/node_modules/@homematic-manager/backend/dist/rega/scripts.js +171 -0
  269. package/node_modules/@homematic-manager/backend/dist/rpc/client.d.ts +18 -5
  270. package/node_modules/@homematic-manager/backend/dist/rpc/client.js +11 -5
  271. package/node_modules/@homematic-manager/backend/dist/rpc/log.d.ts +86 -0
  272. package/node_modules/@homematic-manager/backend/dist/rpc/log.js +241 -0
  273. package/node_modules/@homematic-manager/backend/dist/rpc/origin.d.ts +30 -0
  274. package/node_modules/@homematic-manager/backend/dist/rpc/origin.js +35 -0
  275. package/node_modules/@homematic-manager/backend/dist/rpc/server.d.ts +12 -0
  276. package/node_modules/@homematic-manager/backend/dist/rpc/server.js +37 -5
  277. package/node_modules/@homematic-manager/backend/dist/util/net.d.ts +86 -1
  278. package/node_modules/@homematic-manager/backend/dist/util/net.js +223 -9
  279. package/node_modules/@homematic-manager/backend/package.json +1 -1
  280. package/node_modules/@homematic-manager/core/dist/api/types.d.ts +397 -10
  281. package/node_modules/@homematic-manager/core/dist/api/types.js +23 -2
  282. package/node_modules/@homematic-manager/core/dist/data/memory.d.ts +3 -1
  283. package/node_modules/@homematic-manager/core/dist/data/memory.js +3 -0
  284. package/node_modules/@homematic-manager/core/dist/data/types.d.ts +60 -0
  285. package/node_modules/@homematic-manager/core/dist/data/types.js +2 -0
  286. package/node_modules/@homematic-manager/core/dist/devices/index.d.ts +19 -0
  287. package/node_modules/@homematic-manager/core/dist/devices/index.js +53 -0
  288. package/node_modules/@homematic-manager/core/dist/easymodes/engine.d.ts +3 -1
  289. package/node_modules/@homematic-manager/core/dist/easymodes/engine.js +1 -0
  290. package/node_modules/@homematic-manager/core/dist/easymodes/form.d.ts +43 -0
  291. package/node_modules/@homematic-manager/core/dist/easymodes/form.js +84 -0
  292. package/node_modules/@homematic-manager/core/dist/i18n/messages.js +61 -0
  293. package/node_modules/@homematic-manager/core/dist/index.d.ts +3 -0
  294. package/node_modules/@homematic-manager/core/dist/index.js +4 -0
  295. package/node_modules/@homematic-manager/core/dist/interfaces/table.d.ts +23 -2
  296. package/node_modules/@homematic-manager/core/dist/interfaces/table.js +18 -1
  297. package/node_modules/@homematic-manager/core/dist/meta/document.d.ts +71 -0
  298. package/node_modules/@homematic-manager/core/dist/meta/document.js +260 -0
  299. package/node_modules/@homematic-manager/core/dist/meta/follow.d.ts +27 -0
  300. package/node_modules/@homematic-manager/core/dist/meta/follow.js +180 -0
  301. package/node_modules/@homematic-manager/core/dist/meta/index.d.ts +16 -0
  302. package/node_modules/@homematic-manager/core/dist/meta/index.js +16 -0
  303. package/node_modules/@homematic-manager/core/dist/meta/paths.d.ts +96 -0
  304. package/node_modules/@homematic-manager/core/dist/meta/paths.js +182 -0
  305. package/node_modules/@homematic-manager/core/dist/meta/slug.d.ts +22 -0
  306. package/node_modules/@homematic-manager/core/dist/meta/slug.js +59 -0
  307. package/node_modules/@homematic-manager/core/dist/meta/store.d.ts +147 -0
  308. package/node_modules/@homematic-manager/core/dist/meta/store.js +537 -0
  309. package/node_modules/@homematic-manager/core/dist/meta/tree.d.ts +19 -0
  310. package/node_modules/@homematic-manager/core/dist/meta/tree.js +53 -0
  311. package/node_modules/@homematic-manager/core/dist/meta/types.d.ts +143 -0
  312. package/node_modules/@homematic-manager/core/dist/meta/types.js +63 -0
  313. package/node_modules/@homematic-manager/core/dist/meta/view.d.ts +50 -0
  314. package/node_modules/@homematic-manager/core/dist/meta/view.js +103 -0
  315. package/node_modules/@homematic-manager/core/dist/rpc/methods.d.ts +10 -0
  316. package/node_modules/@homematic-manager/core/dist/rpc/methods.js +51 -1
  317. package/node_modules/@homematic-manager/core/dist/rpc/text.d.ts +22 -0
  318. package/node_modules/@homematic-manager/core/dist/rpc/text.js +46 -0
  319. package/node_modules/@homematic-manager/core/dist/rssi/index.d.ts +125 -13
  320. package/node_modules/@homematic-manager/core/dist/rssi/index.js +146 -29
  321. package/node_modules/@homematic-manager/core/dist/serviceMessages/index.d.ts +28 -2
  322. package/node_modules/@homematic-manager/core/dist/serviceMessages/index.js +44 -6
  323. package/node_modules/@homematic-manager/core/package.json +1 -1
  324. package/package.json +3 -3
  325. package/ui/assets/index-D-NsbBVS.css +1 -0
  326. package/ui/assets/index-DNUNMBbb.js +16 -0
  327. package/ui/favicon.ico +0 -0
  328. package/ui/index.html +3 -2
  329. package/node_modules/@homematic-manager/backend/dist/write/log.d.ts +0 -51
  330. package/node_modules/@homematic-manager/backend/dist/write/log.js +0 -151
  331. package/ui/assets/index-lB-HxsKR.js +0 -13
  332. package/ui/assets/index-qbhgN2pA.css +0 -1
@@ -1,13 +0,0 @@
1
- (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&a(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();const il=!1;var na=Array.isArray,qc=Array.prototype.indexOf,Da=Array.prototype.includes,Wa=Array.from,ol=Object.defineProperty,fr=Object.getOwnPropertyDescriptor,$c=Object.getOwnPropertyDescriptors,ll=Object.prototype,Xc=Array.prototype,ti=Object.getPrototypeOf,ji=Object.isExtensible;const fn=()=>{};function Qc(r){for(var e=0;e<r.length;e++)r[e]()}function dl(){var r,e,n=new Promise((a,s)=>{r=a,e=s});return{promise:n,resolve:r,reject:e}}function qi(r,e){if(Array.isArray(r))return r;if(!(Symbol.iterator in r))return Array.from(r);const n=[];for(const a of r)if(n.push(a),n.length===e)break;return n}const xt=2,gr=4,Ka=8,cl=1<<24,cn=16,on=32,Nn=64,Cs=128,ni=256,an=512,It=1024,wt=2048,hn=4096,Ut=8192,Kt=16384,kr=32768,Na=1<<25,er=65536,xa=1<<17,Zc=1<<18,Rr=1<<19,Jc=1<<20,bn=1<<25,tr=65536,Ca=1<<21,hr=1<<22,Gn=1<<23,Xn=Symbol("$state"),ul=Symbol("component"),eu=Symbol("legacy props"),tu=Symbol(""),vl=Symbol("attributes"),Ps=Symbol("class"),Ls=Symbol("style"),Ms=Symbol("text"),Ea=Symbol("form reset"),ra=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},nu=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml"),ru=1,au=2,fl=4,su=8,iu=16,ou=1,lu=4,du=8,cu=16,uu=1,vu=2,Rt=Symbol("uninitialized"),fu="http://www.w3.org/1999/xhtml";function hu(){console.warn("https://svelte.dev/e/derived_inert")}function mu(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function pu(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function hl(r){return r===this.v}function gu(r,e){return r!=r?e==e:r!==e||r!==null&&typeof r=="object"||typeof r=="function"}function ml(r){return!gu(r,this.v)}function ri(r){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function _u(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function bu(r,e,n){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Eu(r){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Su(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function yu(r){throw new Error("https://svelte.dev/e/effect_orphan")}function Au(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Tu(r){throw new Error("https://svelte.dev/e/props_invalid_value")}function wu(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function ku(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Ru(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Iu(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}let Du=!1;const Nu=[];function $i(r,e=!1,n=!1){return Sa(r,new Map,"",Nu,null,n)}function Sa(r,e,n,a,s=null,i=!1){if(typeof r=="object"&&r!==null){var o=e.get(r);if(o!==void 0)return o;if(r instanceof Map)return new Map(r);if(r instanceof Set)return new Set(r);if(na(r)){var l=Array(r.length);e.set(r,l),s!==null&&e.set(s,l);for(var d=0;d<r.length;d+=1){var h=r[d];d in r&&(l[d]=Sa(h,e,n,a,null,i))}return l}if(ti(r)===ll){l={},e.set(r,l),s!==null&&e.set(s,l);for(var g of Object.keys(r))l[g]=Sa(r[g],e,n,a,null,i);return l}if(r instanceof Date)return r.getTime(),structuredClone(r);if(typeof r.toJSON=="function"&&!i)return Sa(r.toJSON(),e,n,a,r)}if(r instanceof EventTarget)return r;try{return structuredClone(r)}catch{return r}}function xu(r){let e=r.p;for(;e!==null&&e.c===null;)e=e.p;return e?.c??null}function ai(r,e){return r===null&&ri(),r.c??=new Map(xu(r)||void 0)}let kt=null;function _r(r){kt=r}function Cu(r){return ai(kt).get(r)}function Pu(r,e){return ai(kt).set(r,e),e}function Lu(r){return ai(kt).has(r)}function $e(r,e=!1,n){kt={p:kt,i:!1,c:null,e:null,s:r,x:null,r:at,l:null}}function Xe(r){var e=kt,n=e.e;if(n!==null){e.e=null;for(var a of n)Ll(a)}return e.i=!0,kt=e.p,si(r)}function si(r={}){return ol(r,ul,{value:!0}),r}function pl(){return!0}let qn=[];function gl(){var r=qn;qn=[],Qc(r)}function In(r){if(qn.length===0&&!zr){var e=qn;queueMicrotask(()=>{e===qn&&gl()})}qn.push(r)}function Mu(){for(;qn.length>0;)gl()}const Ou=-7169;function At(r,e){r.f=r.f&Ou|e}function ii(r){(r.f&an)!==0||r.deps===null?At(r,It):At(r,hn)}function _l(r){if(r!==null)for(const e of r)(e.f&xt)===0||(e.f&tr)===0||(e.f^=tr,_l(e.deps))}function bl(r,e,n){(r.f&wt)!==0?e.add(r):(r.f&hn)!==0&&n.add(r),_l(r.deps),At(r,It)}let pa=!1;function Fu(r){var e=pa;try{return pa=!1,[r(),pa]}finally{pa=e}}let Xi=!1;function Gu(){Xi||(Xi=!0,document.addEventListener("reset",r=>{Promise.resolve().then(()=>{if(!r.defaultPrevented)for(const e of r.target.elements)e[Ea]?.()})},{capture:!0}))}function Ir(r){var e=it,n=at;ln(null),An(null);try{return r()}finally{ln(e),An(n)}}function oi(r,e,n,a=n){r.addEventListener(e,()=>Ir(n));const s=r[Ea];s?r[Ea]=()=>{s(),a(!0)}:r[Ea]=()=>a(!0),Gu()}function Uu(r,e,n,a){const s=Yr;var i=r.filter(S=>!S.settled),o=e.map(s);if(n.length===0&&i.length===0){a(o);return}var l=at,d=Vu(),h=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(S=>S.promise)):null;function g(S){if((l.f&Kt)===0){d();try{a([...o,...S])}catch(E){_n(E,l)}Pa()}}var b=El();if(n.length===0){h.then(()=>g([])).finally(b);return}function y(){Promise.all(n.map(S=>Bu(S))).then(g).catch(S=>_n(S,l)).finally(b)}h?h.then(()=>{d(),y(),Pa()}):y()}function Vu(){var r=at,e=it,n=kt,a=Je;return function(i=!0){An(r),ln(e),_r(n),i&&(r.f&Kt)===0&&(a?.activate(),a?.apply())}}function Pa(r=!0){An(null),ln(null),_r(null),r&&Je?.deactivate()}function El(){var r=at,e=r.b,n=Je,a=!!e?.is_rendered();return e?.update_pending_count(1,n),n.increment(a,r),()=>{e?.update_pending_count(-1,n),n.decrement(a,r)}}function Yr(r){var e=xt|wt;return at!==null&&(at.f|=Rr),{ctx:kt,deps:null,effects:null,equals:hl,f:e,fn:r,reactions:null,rv:0,v:Rt,wv:0,parent:at,ac:null}}const Ur=Symbol("obsolete");function Bu(r,e,n){let a=at;a===null&&_u();var s=void 0,i=nr(Rt),o=!it,l=new Set;return nv(()=>{var d=at,h=dl();s=h.promise;try{Promise.resolve(r()).then(h.resolve,S=>{S!==ra&&h.reject(S)}).finally(Pa)}catch(S){h.reject(S),Pa()}var g=Je;if(o){if((d.f&kr)!==0)var b=El();if(a.b?.is_rendered())g.async_deriveds.get(d)?.reject(Ur);else for(const S of l.values())S.reject(Ur);l.add(h),g.async_deriveds.set(d,h)}const y=(S,E=void 0)=>{b?.(),l.delete(h),E!==Ur&&(g.activate(),E?(i.f|=Gn,br(i,E)):((i.f&Gn)!==0&&(i.f^=Gn),br(i,S)),g.deactivate())};h.promise.then(y,S=>y(null,S||"unknown"))}),vi(()=>{for(const d of l)d.reject(Ur)}),new Promise(d=>{function h(g){function b(){g===s?d(i):h(s)}g.then(b,b)}h(s)})}function v(r){const e=Yr(r);return Vl(e),e}function Sl(r){const e=Yr(r);return e.equals=ml,e}function zu(r){var e=r.effects;if(e!==null){r.effects=null;for(var n=0;n<e.length;n+=1)Yt(e[n])}}function li(r){var e,n=at,a=r.parent;if(!xn&&a!==null&&r.v!==Rt&&(a.f&(Kt|Ut))!==0)return hu(),r.v;An(a);try{r.f&=~tr,zu(r),e=Wl(r)}finally{An(n)}return e}function yl(r){var e=li(r);if(!r.equals(e)&&(r.wv=zl(),(!Je?.is_fork||r.deps===null)&&(Je!==null?(Je.capture(r,e,!0),Os?.capture(r,e,!0)):r.v=e,r.deps===null))){At(r,It);return}xn||(un!==null?(ui()||Je?.is_fork)&&un.set(r,e):ii(r))}function Hu(r){if(r.effects!==null)for(const e of r.effects)(e.teardown||e.ac)&&(e.teardown?.(),e.ac!==null&&Ir(()=>{e.ac.abort(ra),e.ac=null}),e.fn!==null&&(e.teardown=fn),qr(e,0),fi(e))}function Al(r){if(r.effects!==null)for(const e of r.effects)e.teardown&&e.fn!==null&&Sr(e)}let us=null,cr=null,Je=null,Os=null,un=null,Fs=null,zr=!1,vs=!1,vr=null,ya=null;var Qi=0;let Wu=1;class Vn{id=Wu++;#e=!1;linked=!0;#r=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#t=new Set;#a=new Set;#s=0;#i=new Map;#o=null;#l=[];#u=[];#d=new Set;#v=new Set;#f=new Map;#h=new Set;is_fork=!1;#c=!1;constructor(){cr===null?us=cr=this:(cr.#n=this,this.#r=cr),cr=this}#m(){if(this.is_fork)return!0;for(const a of this.#i.keys()){for(var e=a,n=!1;e.parent!==null;){if(this.#f.has(e)){n=!0;break}e=e.parent}if(!n)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#h.delete(e)}unskip_effect(e,n=a=>this.schedule(a)){var a=this.#f.get(e);if(a){this.#f.delete(e);for(var s of a.d)At(s,wt),n(s);for(s of a.m)At(s,hn),n(s)}this.#h.add(e)}#_(){this.#e=!0,Qi++>1e3&&(this.#E(),Yu());for(const d of this.#d)this.#v.delete(d),At(d,wt),this.schedule(d);for(const d of this.#v)At(d,hn),this.schedule(d);const e=this.#l;this.#l=[],this.apply();var n=vr=[],a=[],s=ya=[];for(const d of e)try{this.#g(d,n,a)}catch(h){throw kl(d),this.#m()||this.discard(),h}if(Je=null,s.length>0){var i=Vn.ensure();for(const d of s)i.schedule(d)}if(vr=null,ya=null,this.#m()){this.#p(a),this.#p(n);for(const[d,h]of this.#f)wl(d,h);s.length>0&&Je.#_();return}const o=this.#b();if(o){this.#p(a),this.#p(n),o.#S(this);return}this.#d.clear(),this.#v.clear();for(const d of this.#t)d(this);this.#t.clear(),Os=this,Zi(a),Zi(n),Os=null,this.#o?.resolve();var l=Je;if(this.#s===0&&(this.#l.length===0||l!==null)&&this.#E(),this.#l.length>0)if(l!==null){const d=l;d.#l.push(...this.#l.filter(h=>!d.#l.includes(h)))}else l=this;l!==null&&(En.clear(),l.#_())}#g(e,n,a){e.f^=It;for(var s=e.first;s!==null;){var i=s.f,o=(i&(on|Nn))!==0,l=o&&(i&It)!==0,d=l||(i&Ut)!==0||this.#f.has(s);if(!d&&s.fn!==null){o?s.f^=It:(i&gr)!==0?n.push(s):sa(s)&&((i&cn)!==0&&this.#v.add(s),Sr(s));var h=s.first;if(h!==null){s=h;continue}}for(;s!==null;){var g=s.next;if(g!==null){s=g;break}s=s.parent}}}#b(){for(var e=this.#r;e!==null;){if(!e.is_fork){for(const[n,[,a]]of this.current)if(e.current.has(n)&&!a)return e}e=e.#r}return null}#S(e){for(const[a,s]of e.current)!this.previous.has(a)&&e.previous.has(a)&&this.previous.set(a,e.previous.get(a)),this.current.set(a,s);for(const[a,s]of e.async_deriveds){const i=this.async_deriveds.get(a);i&&s.promise.then(i.resolve).catch(i.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#d,e.#v);const n=a=>{var s=a.reactions;if(s!==null&&!((a.f&xt)!==0&&(a.f&(wt|hn))===0))for(const l of s){var i=l.f;if((i&xt)!==0)n(l);else{var o=l;i&(hr|cn)&&!this.async_deriveds.has(o)&&(this.#v.delete(o),At(o,wt),this.schedule(o))}}};for(const a of this.current.keys())n(a);this.oncommit(()=>e.discard()),e.#E(),Je=this,this.#_()}#p(e){for(var n=0;n<e.length;n+=1)bl(e[n],this.#d,this.#v)}capture(e,n,a=!1){e.v!==Rt&&!this.previous.has(e)&&this.previous.set(e,e.v),(e.f&Gn)===0&&(this.current.set(e,[n,a]),un?.set(e,n)),this.is_fork||(e.v=n)}activate(){Je=this}deactivate(){Je=null,un=null}flush(){try{vs=!0,Je=this,this.#_()}finally{Qi=0,Fs=null,vr=null,ya=null,vs=!1,Je=null,un=null,En.clear()}}discard(){for(const e of this.#a)e(this);this.#a.clear();for(const e of this.async_deriveds.values())e.reject(Ur);this.#E(),this.#o?.resolve()}register_created_effect(e){this.#u.push(e)}#y(){for(let b=us;b!==null;b=b.#n){var e=b.id<this.id,n=[];for(const[y,[S,E]]of this.current){if(b.current.has(y)){var a=b.current.get(y)[0];if(e&&S!==a)b.current.set(y,[S,E]);else continue}n.push(y)}if(e)for(const[y,S]of this.async_deriveds){const E=b.async_deriveds.get(y);E&&S.promise.then(E.resolve).catch(E.reject)}var s=[...b.current.keys()].filter(y=>!b.current.get(y)[1]);if(!(!b.#e||s.length===0)){var i=s.filter(y=>!this.current.has(y));if(i.length===0)e&&b.discard();else if(n.length>0){if(e)for(const y of this.#h)b.unskip_effect(y,S=>{(S.f&(cn|hr))!==0?b.schedule(S):b.#p([S])});b.activate();var o=new Set,l=new Map;for(var d of n)Tl(d,i,o,l);l=new Map;var h=[...b.current].filter(([y,S])=>{const E=this.current.get(y);return E?E[0]!==S[0]||E[1]!==S[1]:!0}).map(([y])=>y);if(h.length>0)for(const y of this.#u)(y.f&(Kt|Ut|xa))===0&&di(y,h,l)&&((y.f&(hr|cn))!==0?(At(y,wt),b.schedule(y)):b.#d.add(y));if(b.#l.length>0&&!b.#c){b.apply();for(var g of b.#l)b.#g(g,[],[]);b.#l=[]}b.deactivate()}}}}increment(e,n){if(this.#s+=1,e){let a=this.#i.get(n)??0;this.#i.set(n,a+1)}}decrement(e,n){if(this.#s-=1,e){let a=this.#i.get(n)??0;a===1?this.#i.delete(n):this.#i.set(n,a-1)}this.#c||(this.#c=!0,In(()=>{this.#c=!1,this.linked&&this.flush()}))}transfer_effects(e,n){for(const a of e)this.#d.add(a);for(const a of n)this.#v.add(a);e.clear(),n.clear()}oncommit(e){this.#t.add(e)}ondiscard(e){this.#a.add(e)}settled(){return(this.#o??=dl()).promise}static ensure(){if(Je===null){const e=Je=new Vn;!vs&&!zr&&In(()=>{e.#e||e.flush()})}return Je}apply(){{un=null;return}}schedule(e){if(Fs=e,e.b?.is_pending&&(e.f&(gr|Ka|cl))!==0&&(e.f&kr)===0){e.b.defer_effect(e);return}for(var n=e;n.parent!==null;){n=n.parent;var a=n.f;if(vr!==null&&n===at&&(it===null||(it.f&xt)===0))return;if((a&(Nn|on))!==0){if((a&It)===0)return;n.f^=It}}this.#l.push(n)}#E(){if(this.linked){var e=this.#r,n=this.#n;e===null?us=n:e.#n=n,n===null?cr=e:n.#r=e,this.linked=!1}}}function Ku(r){var e=zr;zr=!0;try{for(var n;;){if(Mu(),Je===null)return n;Je.flush()}}finally{zr=e}}function Yu(){try{Au()}catch(r){_n(r,Fs)}}let Rn=null;function Zi(r){var e=r.length;if(e!==0){for(var n=0;n<e;){var a=r[n++];if((a.f&(Kt|Ut))===0&&sa(a)&&(Rn=new Set,Sr(a),a.deps===null&&a.first===null&&a.nodes===null&&a.teardown===null&&a.ac===null&&Fl(a),Rn?.size>0)){En.clear();for(const s of Rn){if((s.f&(Kt|Ut))!==0)continue;const i=[s];let o=s.parent;for(;o!==null;)Rn.has(o)&&(Rn.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const d=i[l];(d.f&(Kt|Ut))===0&&Sr(d)}}Rn.clear()}}Rn=null}}function Tl(r,e,n,a){if(!n.has(r)&&(n.add(r),r.reactions!==null))for(const s of r.reactions){const i=s.f;(i&xt)!==0?Tl(s,e,n,a):(i&(hr|cn))!==0&&(i&wt)===0&&di(s,e,a)&&(At(s,wt),ci(s))}}function di(r,e,n){const a=n.get(r);if(a!==void 0)return a;if(r.deps!==null)for(const s of r.deps){if(Da.call(e,s))return!0;if((s.f&xt)!==0&&di(s,e,n))return n.set(s,!0),!0}return n.set(r,!1),!1}function ci(r){Je.schedule(r)}function wl(r,e){if(!((r.f&on)!==0&&(r.f&It)!==0)){(r.f&wt)!==0?e.d.push(r):(r.f&hn)!==0&&e.m.push(r),At(r,It);for(var n=r.first;n!==null;)wl(n,e),n=n.next}}function kl(r){At(r,It);for(var e=r.first;e!==null;)kl(e),e=e.next}let La=new Set;const En=new Map;let Rl=!1;function nr(r,e){var n={f:0,v:r,reactions:null,equals:hl,rv:0,wv:0};return n}function M(r,e){const n=nr(r);return Vl(n),n}function ju(r,e=!1,n=!0){const a=nr(r);return e||(a.equals=ml),a}function m(r,e,n=!1){it!==null&&(!vn||(it.f&xa)!==0)&&pl()&&(it.f&(xt|cn|hr|xa))!==0&&(Sn===null||!Sn.has(r))&&Ru();let a=n?xe(e):e;return br(r,a,ya)}function br(r,e,n=null){if(!r.equals(e)){xn?En.set(r,e):En.has(r)||En.set(r,r.v);var a=Vn.ensure();if(a.capture(r,e),(r.f&xt)!==0){const s=r;(r.f&wt)!==0&&li(s),un===null&&ii(s)}r.wv=zl(),Il(r,wt,n),at!==null&&(at.f&It)!==0&&(at.f&(on|Nn))===0&&(en===null?sv([r]):en.push(r)),!a.is_fork&&La.size>0&&!Rl&&qu()}return e}function qu(){Rl=!1;for(const r of La){(r.f&It)!==0&&At(r,hn);let e;try{e=sa(r)}catch{e=!0}e&&Sr(r)}La.clear()}function Hr(r){m(r,r.v+1)}function Il(r,e,n){var a=r.reactions;if(a!==null)for(var s=a.length,i=0;i<s;i++){var o=a[i],l=o.f,d=(l&wt)===0;if(d&&At(o,e),(l&xa)!==0)La.add(o);else if((l&xt)!==0){var h=o;un?.delete(h),(l&tr)===0&&(l&an&&(at===null||(at.f&Ca)===0)&&(o.f|=tr),Il(h,hn,n))}else if(d){var g=o;(l&cn)!==0&&Rn!==null&&Rn.add(g),n!==null?n.push(g):ci(g)}}}function xe(r){if(typeof r!="object"||r===null||Xn in r||ul in r)return r;const e=ti(r);if(e!==ll&&e!==Xc)return r;var n=new Map,a=na(r),s=M(0),i=Zn,o=l=>{if(Zn===i)return l();var d=it,h=Zn;ln(null),to(i);var g=l();return ln(d),to(h),g};return a&&n.set("length",M(r.length)),new Proxy(r,{defineProperty(l,d,h){(!("value"in h)||h.configurable===!1||h.enumerable===!1||h.writable===!1)&&wu();var g=n.get(d);return g===void 0?o(()=>{var b=M(h.value);return n.set(d,b),b}):m(g,h.value,!0),!0},deleteProperty(l,d){var h=n.get(d);if(h===void 0){if(d in l){const g=o(()=>M(Rt));n.set(d,g),Hr(s)}}else m(h,Rt),Hr(s);return!0},get(l,d,h){if(d===Xn)return r;var g=n.get(d),b=d in l;if(g===void 0&&(!b||fr(l,d)?.writable)&&(g=o(()=>{var S=xe(b?l[d]:Rt),E=M(S);return E}),n.set(d,g)),g!==void 0){var y=t(g);return y===Rt?void 0:y}return Reflect.get(l,d,h)},getOwnPropertyDescriptor(l,d){var h=Reflect.getOwnPropertyDescriptor(l,d);if(h&&"value"in h){var g=n.get(d);g&&(h.value=t(g))}else if(h===void 0){var b=n.get(d),y=b?.v;if(b!==void 0&&y!==Rt)return{enumerable:!0,configurable:!0,value:y,writable:!0}}return h},has(l,d){if(d===Xn)return!0;var h=n.get(d),g=h!==void 0&&h.v!==Rt||Reflect.has(l,d);if(h!==void 0||at!==null&&(!g||fr(l,d)?.writable)){h===void 0&&(h=o(()=>{var y=g?xe(l[d]):Rt,S=M(y);return S}),n.set(d,h));var b=t(h);if(b===Rt)return!1}return g},set(l,d,h,g){var b=n.get(d),y=d in l;if(a&&d==="length")for(var S=h;S<b.v;S+=1){var E=n.get(S+"");E!==void 0?m(E,Rt):S in l&&(E=o(()=>M(Rt)),n.set(S+"",E))}if(b===void 0)(!y||fr(l,d)?.writable)&&(b=o(()=>M(void 0)),m(b,xe(h)),n.set(d,b));else{y=b.v!==Rt;var _=o(()=>xe(h));m(b,_)}var T=Reflect.getOwnPropertyDescriptor(l,d);if(T?.set&&T.set.call(g,h),!y){if(a&&typeof d=="string"){var I=n.get("length"),w=Number(d);Number.isInteger(w)&&w>=I.v&&m(I,w+1)}Hr(s)}return!0},ownKeys(l){t(s);var d=Reflect.ownKeys(l).filter(b=>{var y=n.get(b);return y===void 0||y.v!==Rt});for(var[h,g]of n)g.v!==Rt&&!(h in l)&&d.push(h);return d},setPrototypeOf(){ku()}})}function Ji(r){try{if(r!==null&&typeof r=="object"&&Xn in r)return r[Xn]}catch{}return r}function Dl(r,e){return Object.is(Ji(r),Ji(e))}var Er,Nl,xl,Cl;function $u(){if(Er===void 0){Er=window,Nl=/Firefox/.test(navigator.userAgent);var r=Element.prototype,e=Node.prototype,n=Text.prototype;xl=fr(e,"firstChild").get,Cl=fr(e,"nextSibling").get,ji(r)&&(r[Ps]=void 0,r[vl]=null,r[Ls]=void 0,r.__e=void 0),ji(n)&&(n[Ms]=void 0)}}function Dn(r=""){return document.createTextNode(r)}function jr(r){return xl.call(r)}function aa(r){return Cl.call(r)}function A(r,e){return jr(r)}function ke(r,e=!1){{var n=jr(r);return n instanceof Comment&&n.data===""?aa(n):n}}function f(r,e=!1){return jr(r)}function c(r,e=1,n=!1){let a=r;for(;e--;)a=aa(a);return a}function Xu(r){r.textContent=""}function Pl(){return!1}function Qu(r,e,n){return n?document.createElement(r,{is:n}):document.createElement(r)}function Zu(r){var e=at;if(e===null)return it.f|=Gn,r;if((e.f&kr)===0&&(e.f&gr)===0)throw r;_n(r,e)}function _n(r,e){if(!(e!==null&&(e.f&Kt)!==0)){for(;e!==null;){if((e.f&Cs)!==0&&(e.f&(Kt|Na))===0){if((e.f&kr)===0)throw r;try{e.b.error(r);return}catch(n){r=n}}e=e.parent}throw r}}function Ju(r){at===null&&(it===null&&yu(),Su()),xn&&Eu()}function ev(r,e){var n=e.last;n===null?e.last=e.first=r:(n.next=r,r.prev=n,e.last=r)}function Pn(r,e){var n=at;n!==null&&(n.f&Ut)!==0&&(r|=Ut);var a={ctx:kt,deps:null,nodes:null,f:r|wt|an,first:null,fn:e,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Je?.register_created_effect(a);var s=a;if((r&gr)!==0)vr!==null?vr.push(a):Vn.ensure().schedule(a);else if(e!==null){try{Sr(a)}catch(o){throw Yt(a),o}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&(s.f&Rr)===0&&(s=s.first,(r&cn)!==0&&(r&er)!==0&&s!==null&&(s.f|=er))}if(s!==null&&(s.parent=n,n!==null&&ev(s,n),it!==null&&(it.f&xt)!==0&&(r&Nn)===0)){var i=it;(i.effects??=[]).push(s)}return a}function ui(){return it!==null&&!vn}function vi(r){const e=Pn(Ka,null);return At(e,It),e.teardown=r,e}function ot(r){Ju();var e=at.f,n=!it&&(e&on)!==0&&kt!==null&&!kt.i;if(n){var a=kt;(a.e??=[]).push(r)}else return Ll(r)}function Ll(r){return Pn(gr|Jc,r)}function tv(r){Vn.ensure();const e=Pn(Nn|Rr,r);return(n={})=>new Promise(a=>{n.outro?Qn(e,()=>{Yt(e),a(void 0)}):(Yt(e),a(void 0))})}function Ml(r){return Pn(gr,r)}function nv(r){return Pn(hr|Rr,r)}function Ya(r,e=0){return Pn(Ka|e,r)}function N(r,e=[],n=[],a=[]){Uu(a,e,n,s=>{Pn(Ka,()=>{r(...s.map(t))})})}function ja(r,e=0){var n=Pn(cn|e,r);return n}function tn(r){return Pn(on|Rr,r)}function Ol(r){var e=r.teardown;if(e!==null){const n=xn,a=it;eo(!0),ln(null);try{e.call(null)}catch(s){_n(s,r.parent)}finally{eo(n),ln(a)}}}function fi(r,e=!1){var n=r.first;for(r.first=r.last=null;n!==null;){const s=n.ac;s!==null&&Ir(()=>{s.abort(ra)});var a=n.next;(n.f&Nn)!==0?n.parent=null:Yt(n,e),n=a}}function rv(r){for(var e=r.first;e!==null;){var n=e.next;(e.f&on)===0&&Yt(e),e=n}}function Yt(r,e=!0){var n=!1;(e||(r.f&Zc)!==0)&&r.nodes!==null&&r.nodes.end!==null&&(av(r.nodes.start,r.nodes.end),n=!0),r.f|=Na,fi(r,e&&!n),qr(r,0);var a=r.nodes&&r.nodes.t;if(a!==null)for(const i of a)i.stop();Ol(r),r.f^=Na,r.f|=Kt;var s=r.parent;s!==null&&s.first!==null&&Fl(r),r.next=r.prev=r.teardown=r.ctx=r.deps=r.fn=r.nodes=r.ac=r.b=null}function av(r,e){for(;r!==null;){var n=r===e?null:aa(r);r.remove(),r=n}}function Fl(r){var e=r.parent,n=r.prev,a=r.next;n!==null&&(n.next=a),a!==null&&(a.prev=n),e!==null&&(e.first===r&&(e.first=a),e.last===r&&(e.last=n))}function Qn(r,e,n=!0){var a=[];r.f|=ni,Gl(r,a,!0);var s=()=>{n&&Yt(r),e&&e()},i=a.length;if(i>0){var o=()=>--i||s();for(var l of a)l.out(o)}else s()}function Gl(r,e,n){if((r.f&Ut)===0){r.f^=Ut;var a=r.nodes&&r.nodes.t;if(a!==null)for(const l of a)(l.is_global||n)&&e.push(l);for(var s=r.first;s!==null;){var i=s.next;if((s.f&Nn)===0){var o=(s.f&er)!==0||(s.f&on)!==0&&(r.f&cn)!==0;Gl(s,e,o?n:!1)}s=i}}}function Ma(r){r.f&=~ni,Ul(r,!0)}function Ul(r,e){if((r.f&ni)===0&&(r.f&Ut)!==0){r.f^=Ut,(r.f&It)===0&&(At(r,wt),Vn.ensure().schedule(r));for(var n=r.first;n!==null;){var a=n.next,s=(n.f&er)!==0||(n.f&on)!==0;Ul(n,s?e:!1),n=a}var i=r.nodes&&r.nodes.t;if(i!==null)for(const o of i)(o.is_global||e)&&o.in()}}function hi(r,e){if(r.nodes)for(var n=r.nodes.start,a=r.nodes.end;n!==null;){var s=n===a?null:aa(n);e.append(n),n=s}}let Aa=!1,xn=!1;function eo(r){xn=r}let it=null,vn=!1;function ln(r){it=r}let at=null;function An(r){at=r}let Sn=null;function Vl(r){it!==null&&(Sn??=new Set).add(r)}let Ht=null,$t=0,en=null;function sv(r){en=r}let Bl=1,$n=0,Zn=$n;function to(r){Zn=r}function zl(){return++Bl}function sa(r){var e=r.f;if((e&wt)!==0)return!0;if(e&xt&&(r.f&=~tr),(e&hn)!==0){for(var n=r.deps,a=n.length,s=0;s<a;s++){var i=n[s];if(sa(i)&&yl(i),i.wv>r.wv)return!0}(e&an)!==0&&un===null&&At(r,It)}return!1}function Hl(r,e,n=!0){var a=r.reactions;if(a!==null&&!(Sn!==null&&Sn.has(r)))for(var s=0;s<a.length;s++){var i=a[s];(i.f&xt)!==0?Hl(i,e,!1):e===i&&(n?At(i,wt):(i.f&It)!==0&&At(i,hn),ci(i))}}function Wl(r){var e=Ht,n=$t,a=en,s=it,i=Sn,o=kt,l=vn,d=Zn,h=r.f;Ht=null,$t=0,en=null,it=(h&(on|Nn))===0?r:null,Sn=null,_r(r.ctx),vn=!1,Zn=++$n,r.ac!==null&&(Ir(()=>{r.ac.abort(ra)}),r.ac=null);try{r.f|=Ca;var g=r.fn,b=g();r.f|=kr;var y=no(r);if(pl()&&en!==null&&!vn&&y!==null&&(r.f&(xt|hn|wt))===0)for(var S=0;S<en.length;S++)Hl(en[S],r);if(s!==null&&s!==r){if($n++,s.deps!==null)for(let E=0;E<n;E+=1)s.deps[E].rv=$n;if(e!==null)for(const E of e)E.rv=$n;en!==null&&(a===null?a=en:a.push(...en))}return(r.f&Gn)!==0&&(r.f^=Gn),b}catch(E){return no(r),Zu(E)}finally{r.f^=Ca,Ht=e,$t=n,en=a,it=s,Sn=i,_r(o),vn=l,Zn=d}}function no(r){var e=r.deps,n=Je?.is_fork;if(Ht!==null){var a;if(n||qr(r,$t),e!==null&&$t>0)for(e.length=$t+Ht.length,a=0;a<Ht.length;a++)e[$t+a]=Ht[a];else r.deps=e=Ht;if(ui()&&(r.f&an)!==0)for(a=$t;a<e.length;a++)(e[a].reactions??=[]).push(r)}else!n&&e!==null&&$t<e.length&&(qr(r,$t),e.length=$t);return e}function iv(r,e){let n=e.reactions;if(n!==null){var a=qc.call(n,r);if(a!==-1){var s=n.length-1;s===0?n=e.reactions=null:(n[a]=n[s],n.pop())}}if(n===null&&(e.f&xt)!==0&&(Ht===null||!Da.call(Ht,e))){var i=e;(i.f&an)!==0&&(i.f^=an,i.f&=~tr),i.v!==Rt&&ii(i),i.ac!==null&&Ir(()=>{i.ac.abort(ra),i.ac=null,At(i,wt)}),Hu(i),qr(i,0)}}function qr(r,e){var n=r.deps;if(n!==null)for(var a=e;a<n.length;a++)iv(r,n[a])}function Sr(r){var e=r.f;if((e&Kt)===0){At(r,It);var n=at,a=Aa;at=r,Aa=(e&(on|Nn))===0;try{(e&(cn|cl))!==0?rv(r):fi(r),Ol(r);var s=Wl(r);r.teardown=typeof s=="function"?s:null,r.wv=Bl;var i;il&&Du&&(r.f&wt)!==0&&r.deps}finally{Aa=a,at=n}}}async function ov(){await Promise.resolve(),Ku()}function t(r){var e=r.f,n=(e&xt)!==0;if(it!==null&&!vn){var a=at!==null&&(at.f&Kt)!==0;if(!a&&(Sn===null||!Sn.has(r))){var s=it.deps;if((it.f&Ca)!==0)r.rv<$n&&(r.rv=$n,Ht===null&&s!==null&&s[$t]===r?$t++:Ht===null?Ht=[r]:Ht.push(r));else{it.deps??=[],Da.call(it.deps,r)||it.deps.push(r);var i=r.reactions;i===null?r.reactions=[it]:Da.call(i,it)||i.push(it)}}}if(xn&&En.has(r))return En.get(r);if(n){var o=r;if(xn){var l=o.v;return((o.f&It)===0&&o.reactions!==null||Yl(o))&&(l=li(o)),En.set(o,l),l}var d=(o.f&an)===0&&!vn&&it!==null&&(Aa||(it.f&an)!==0),h=(o.f&kr)===0;sa(o)&&(d&&(o.f|=an),yl(o)),d&&!h&&(Al(o),Kl(o))}if(un?.has(r))return un.get(r);if((r.f&Gn)!==0)throw r.v;return r.v}function Kl(r){if(r.f|=an,r.deps!==null)for(const e of r.deps)(e.reactions??=[]).push(r),(e.f&xt)!==0&&(e.f&an)===0&&(Al(e),Kl(e))}function Yl(r){if(r.v===Rt)return!0;if(r.deps===null)return!1;for(const e of r.deps)if(En.has(e)||(e.f&xt)!==0&&Yl(e))return!0;return!1}function Hn(r){var e=vn;try{return vn=!0,r()}finally{vn=e}}const lv=["touchstart","touchmove"];function dv(r){return lv.includes(r)}const Vr=Symbol("events"),jl=new Set,Gs=new Set;function cv(r,e,n,a={}){function s(i){if(a.capture||Us.call(e,i),!i.cancelBubble)return Ir(()=>n?.call(this,i))}return r.startsWith("pointer")||r.startsWith("touch")||r==="wheel"?In(()=>{e.addEventListener(r,s,a)}):e.addEventListener(r,s,a),s}function Bn(r,e,n,a,s){var i={capture:a,passive:s},o=cv(r,e,n,i);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&vi(()=>{e.removeEventListener(r,o,i)})}function ce(r,e,n){(e[Vr]??={})[r]=n}function rt(r){for(var e=0;e<r.length;e++)jl.add(r[e]);for(var n of Gs)n(r)}let fs=null,hs=!1;function Us(r){var e=this,n=e.ownerDocument,a=r.type,s=r.composedPath?.()||[],i=s[0]||r.target;fs=r,hs||(hs=!0,setTimeout(()=>{hs=!1,fs=null}));var o=0,l=fs===r&&r[Vr];if(l){var d=s.indexOf(l);if(d!==-1&&(e===document||e===window)){r[Vr]=e;return}var h=s.indexOf(e);if(h===-1)return;d<=h&&(o=d)}if(i=s[o]||r.target,i!==e){ol(r,"currentTarget",{configurable:!0,get(){return i||n}});var g=it,b=at;ln(null),An(null);try{for(var y,S=[];i!==null&&i!==e;){try{var E=i[Vr]?.[a];E!=null&&(!i.disabled||r.target===i)&&E.call(i,r)}catch(_){y?S.push(_):y=_}if(r.cancelBubble)break;o++,i=o<s.length?s[o]:null}if(y){for(let _ of S)queueMicrotask(()=>{throw _});throw y}}finally{r[Vr]=e,delete r.currentTarget,ln(g),An(b)}}}const uv=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:r=>r});function vv(r){return uv?.createHTML(r)??r}function fv(r){var e=Qu("template");return e.innerHTML=vv(r.replaceAll("<!>","<!---->")),e.content}function Oa(r,e){var n=at;n.nodes===null&&(n.nodes={start:r,end:e,a:null,t:null})}function k(r,e){var n=(e&uu)!==0,a=(e&vu)!==0,s,i=!r.startsWith("<!>");return()=>{s===void 0&&(s=fv(i?r:"<!>"+r),n||(s=jr(s)));var o=a||Nl?document.importNode(s,!0):s.cloneNode(!0);if(n){var l=jr(o),d=o.lastChild;Oa(l,d)}else Oa(o,o);return o}}function Cn(r=""){{var e=Dn(r+"");return Oa(e,e),e}}function lt(){var r=document.createDocumentFragment(),e=document.createComment(""),n=Dn();return r.append(e,n),Oa(e,n),r}function p(r,e){r!==null&&r.before(e)}function hv(r){let e=0,n=nr(0),a;return()=>{ui()&&(t(n),Ya(()=>(e===0&&(a=Hn(()=>r(()=>Hr(n)))),e+=1,()=>{In(()=>{e-=1,e===0&&(a?.(),a=void 0,Hr(n))})})))}}var mv=er|Rr;function pv(r,e,n,a){new gv(r,e,n,a)}class gv{parent;is_pending=!1;transform_error;#e;#r=null;#n;#t;#a;#s=null;#i=null;#o=null;#l=null;#u=0;#d=0;#v=!1;#f=new Set;#h=new Set;#c=null;#m=hv(()=>(this.#c=nr(this.#u),()=>{this.#c=null}));constructor(e,n,a,s){this.#e=e,this.#n=n,this.#t=i=>{var o=at;o.b=this,o.f|=Cs,a(i)},this.parent=at.b,this.transform_error=s??this.parent?.transform_error??(i=>i),this.#a=ja(()=>{this.#p()},mv)}#_(){try{this.#s=tn(()=>this.#t(this.#e))}catch(e){this.error(e)}}#g(e){const n=this.#n.failed,{reset:a,invoke_onerror:s}=this.#b(e);In(s),n&&(this.#o=tn(()=>{n(this.#e,()=>e,()=>a)}))}#b(e){var n=!1,a=!1;const s=()=>{if(n){pu();return}n=!0,a&&Iu(),this.#o!==null&&Qn(this.#o,()=>{this.#o=null}),this.#E(()=>{this.#p()})};return{reset:s,invoke_onerror:()=>{try{a=!0,this.#n.onerror?.(e,s),a=!1}catch(o){_n(o,this.#a&&this.#a.parent)}}}}#S(){const e=this.#n.pending;e&&(this.is_pending=!0,this.#i=tn(()=>e(this.#e)),In(()=>{var n=this.#l=document.createDocumentFragment(),a=Dn(),s=!1;if(n.append(a),this.#s=this.#E(()=>{try{return tn(()=>this.#t(a))}catch(i){try{this.error(i),s=!0}catch(o){_n(o,this.#a.parent)}return null}}),this.#s===null){this.#l=null,s&&this.#y(Je);return}this.#d===0&&(this.#e.before(n),this.#l=null,Qn(this.#i,()=>{this.#i=null}),this.#y(Je))}))}#p(){try{if(this.is_pending=this.has_pending_snippet(),this.#d=0,this.#u=0,this.#s=tn(()=>{this.#t(this.#e)}),this.#d>0){var e=this.#l=document.createDocumentFragment();hi(this.#s,e);const n=this.#n.pending;this.#i=tn(()=>n(this.#e))}else this.#y(Je)}catch(n){this.error(n)}}#y(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#h)}defer_effect(e){bl(e,this.#f,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#E(e){var n=at,a=it,s=kt;An(this.#a),ln(this.#a),_r(this.#a.ctx);try{return Vn.ensure(),e()}finally{An(n),ln(a),_r(s)}}#A(e,n){if(!this.has_pending_snippet()){this.parent&&this.parent.#A(e,n);return}this.#d+=e,this.#d===0&&(this.#y(n),this.#i&&Qn(this.#i,()=>{this.#i=null}),this.#l&&(this.#e.before(this.#l),this.#l=null))}update_pending_count(e,n){this.#A(e,n),this.#u+=e,!(!this.#c||this.#v)&&(this.#v=!0,In(()=>{this.#v=!1,this.#c&&br(this.#c,this.#u)}))}get_effect_pending(){return this.#m(),t(this.#c)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Je?.is_fork?(this.#s&&Je.skip_effect(this.#s),this.#i&&Je.skip_effect(this.#i),this.#o&&Je.skip_effect(this.#o),Je.oncommit(()=>{this.#T(e)})):this.#T(e)}#T(e){this.#s&&(Yt(this.#s),this.#s=null),this.#i&&(Yt(this.#i),this.#i=null),this.#o&&(Yt(this.#o),this.#o=null);let n=this.#n.failed;const a=s=>{const{reset:i,invoke_onerror:o}=this.#b(s);o(),n&&(this.#o=this.#E(()=>{try{return tn(()=>{var l=at;l.b=this,l.f|=Cs,n(this.#e,()=>s,()=>i)})}catch(l){return _n(l,this.#a.parent),null}}))};In(()=>{var s;try{s=this.transform_error(e)}catch(i){_n(i,this.#a&&this.#a.parent);return}s!==null&&typeof s=="object"&&typeof s.then=="function"?s.then(a,i=>_n(i,this.#a&&this.#a.parent)):a(s)})}}function u(r,e){var n=e==null?"":typeof e=="object"?`${e}`:e;n!==(r[Ms]??=r.nodeValue)&&(r[Ms]=n,r.nodeValue=`${n}`)}function _v(r,e){return bv(r,e)}const ga=new Map;function bv(r,{target:e,anchor:n,props:a={},events:s,context:i,intro:o=!0,transformError:l}){$u();var d=void 0,h=tv(()=>{var g=n??e.appendChild(Dn());pv(g,{pending:()=>{}},S=>{$e({});var E=kt;i&&(E.c=i),s&&(a.$$events=s),d=r(S,a)||si(),Xe()},l);var b=new Set,y=S=>{for(var E=0;E<S.length;E++){var _=S[E];if(!b.has(_)){b.add(_);var T=dv(_);for(const D of[e,document]){var I=ga.get(D);I===void 0&&(I=new Map,ga.set(D,I));var w=I.get(_);w===void 0?(D.addEventListener(_,Us,{passive:T}),I.set(_,1)):I.set(_,w+1)}}}};return y(Wa(jl)),Gs.add(y),()=>{for(var S of b)for(const T of[e,document]){var E=ga.get(T),_=E.get(S);--_==0?(T.removeEventListener(S,Us),E.delete(S),E.size===0&&ga.delete(T)):E.set(S,_)}Gs.delete(y),g!==n&&g.parentNode?.removeChild(g)}});return Ev.set(d,h),d}let Ev=new WeakMap;class ql{anchor;#e=new Map;#r=new Map;#n=new Map;#t=new Set;#a=!0;constructor(e,n=!0){this.anchor=e,this.#a=n}#s=e=>{if(this.#e.has(e)){var n=this.#e.get(e),a=this.#r.get(n);if(a)Ma(a),this.#t.delete(n);else{var s=this.#n.get(n);s&&(Ma(s.effect),this.#r.set(n,s.effect),this.#n.delete(n),s.fragment.lastChild.remove(),this.anchor.before(s.fragment),a=s.effect)}for(const[i,o]of this.#e){if(this.#e.delete(i),i===e)break;const l=this.#n.get(o);l&&(Yt(l.effect),this.#n.delete(o))}for(const[i,o]of this.#r){if(i===n||this.#t.has(i))continue;const l=()=>{if(Array.from(this.#e.values()).includes(i)){var h=document.createDocumentFragment();hi(o,h),h.append(Dn()),this.#n.set(i,{effect:o,fragment:h})}else Yt(o);this.#t.delete(i),this.#r.delete(i)};this.#a||!a?(this.#t.add(i),Qn(o,l,!1)):l()}}};#i=e=>{this.#e.delete(e);const n=Array.from(this.#e.values());for(const[a,s]of this.#n)n.includes(a)||(Yt(s.effect),this.#n.delete(a))};ensure(e,n){var a=Je,s=Pl();if(n&&!this.#r.has(e)&&!this.#n.has(e))if(s){var i=document.createDocumentFragment(),o=Dn();i.append(o),this.#n.set(e,{effect:tn(()=>n(o)),fragment:i})}else this.#r.set(e,tn(()=>n(this.anchor)));if(this.#e.set(a,e),s){for(const[l,d]of this.#r)l===e?a.unskip_effect(d):a.skip_effect(d);for(const[l,d]of this.#n)l===e?a.unskip_effect(d.effect):a.skip_effect(d.effect);a.oncommit(this.#s),a.ondiscard(this.#i)}else this.#s(a)}}function ve(r,e,n=!1){var a=new ql(r),s=n?er:0;function i(o,l){a.ensure(o,l)}ja(()=>{var o=!1;e((l,d=0)=>{o=!0,i(d,l)}),o||i(-1,null)},s)}function $l(r,e){return e}function Sv(r,e,n){for(var a=[],s=e.length,i,o=e.length,l=0;l<s;l++){let b=e[l];Qn(b,()=>{if(i){if(i.pending.delete(b),i.done.add(b),i.pending.size===0){var y=r.outrogroups;Vs(r,Wa(i.done)),y.delete(i),y.size===0&&(r.outrogroups=null)}}else o-=1},!1)}if(o===0){var d=a.length===0&&n!==null&&r.pending.size===0;if(d){var h=n,g=h.parentNode;Xu(g),g.append(h),r.items.clear()}Vs(r,e,!d)}else i={pending:new Set(e),done:new Set},(r.outrogroups??=new Set).add(i)}function Vs(r,e,n=!0){var a;if(r.pending.size>0){a=new Set;for(const o of r.pending.values())for(const l of o)a.add(r.items.get(l).e)}for(var s=0;s<e.length;s++){var i=e[s];if(a?.has(i)){i.f|=bn;const o=document.createDocumentFragment();hi(i,o)}else Yt(e[s],n)}}var ro;function Ne(r,e,n,a,s,i=null){var o=r,l=new Map,d=(e&fl)!==0;if(d){var h=r;o=h.appendChild(Dn())}var g=null,b=Sl(()=>{var D=n();return na(D)?D:D==null?[]:Wa(D)}),y,S=new Map,E=!0;function _(D){(w.effect.f&Kt)===0&&(w.pending.delete(D),w.fallback=g,yv(w,y,o,e,a),g!==null&&(y.length===0?(g.f&bn)===0?Ma(g):(g.f^=bn,Br(g,null,o)):Qn(g,()=>{g=null})))}function T(D){w.pending.delete(D)}var I=ja(()=>{y=t(b);for(var D=y.length,P=new Set,U=Je,re=Pl(),te=0;te<D;te+=1){var oe=y[te],ue=a(oe,te),x=E?null:l.get(ue);x?(x.v&&br(x.v,oe),x.i&&br(x.i,te),re&&U.unskip_effect(x.e)):(x=Av(l,E?o:ro??=Dn(),oe,ue,te,s,e,n),E||(x.e.f|=bn),l.set(ue,x)),P.add(ue)}if(D===0&&i&&!g&&(E?g=tn(()=>i(o)):(g=tn(()=>i(ro??=Dn())),g.f|=bn)),D>P.size&&bu(),!E)if(S.set(U,P),re){for(const[X,$]of l)P.has(X)||U.skip_effect($.e);U.oncommit(_),U.ondiscard(T)}else _(U);t(b)}),w={effect:I,items:l,pending:S,outrogroups:null,fallback:g};E=!1}function Mr(r){for(;r!==null&&(r.f&on)===0;)r=r.next;return r}function yv(r,e,n,a,s){var i=(a&su)!==0,o=e.length,l=r.items,d=Mr(r.effect.first),h,g=null,b,y=[],S=[],E,_,T,I;if(i)for(I=0;I<o;I+=1)E=e[I],_=s(E,I),T=l.get(_).e,(T.f&bn)===0&&(T.nodes?.a?.measure(),(b??=new Set).add(T));for(I=0;I<o;I+=1){if(E=e[I],_=s(E,I),T=l.get(_).e,r.outrogroups!==null)for(const x of r.outrogroups)x.pending.delete(T),x.done.delete(T);if((T.f&Ut)!==0&&(Ma(T),i&&(T.nodes?.a?.unfix(),(b??=new Set).delete(T))),(T.f&bn)!==0)if(T.f^=bn,T===d)Br(T,null,n);else{var w=g?g.next:d;T===r.effect.last&&(r.effect.last=T.prev),T.prev&&(T.prev.next=T.next),T.next&&(T.next.prev=T.prev),On(r,g,T),On(r,T,w),Br(T,w,n),g=T,y=[],S=[],d=Mr(g.next);continue}if(T!==d){if(h!==void 0&&h.has(T)){if(y.length<S.length){var D=S[0],P;g=D.prev;var U=y[0],re=y[y.length-1];for(P=0;P<y.length;P+=1)Br(y[P],D,n);for(P=0;P<S.length;P+=1)h.delete(S[P]);On(r,U.prev,re.next),On(r,g,U),On(r,re,D),d=D,g=re,I-=1,y=[],S=[]}else h.delete(T),Br(T,d,n),On(r,T.prev,T.next),On(r,T,g===null?r.effect.first:g.next),On(r,g,T),g=T;continue}for(y=[],S=[];d!==null&&d!==T;)(h??=new Set).add(d),S.push(d),d=Mr(d.next);if(d===null)continue}(T.f&bn)===0&&y.push(T),g=T,d=Mr(T.next)}if(r.outrogroups!==null){for(const x of r.outrogroups)x.pending.size===0&&(Vs(r,Wa(x.done)),r.outrogroups?.delete(x));r.outrogroups.size===0&&(r.outrogroups=null)}if(d!==null||h!==void 0){var te=[];if(h!==void 0)for(T of h)(T.f&Ut)===0&&te.push(T);for(;d!==null;)(d.f&Ut)===0&&d!==r.fallback&&te.push(d),d=Mr(d.next);var oe=te.length;if(oe>0){var ue=(a&fl)!==0&&o===0?n:null;if(i){for(I=0;I<oe;I+=1)te[I].nodes?.a?.measure();for(I=0;I<oe;I+=1)te[I].nodes?.a?.fix()}Sv(r,te,ue)}}i&&In(()=>{if(b!==void 0)for(T of b)T.nodes?.a?.apply()})}function Av(r,e,n,a,s,i,o,l){var d=(o&ru)!==0?(o&iu)===0?ju(n,!1,!1):nr(n):null,h=(o&au)!==0?nr(s):null;return{v:d,i:h,e:tn(()=>(i(e,d??n,h??s,l),()=>{r.delete(a)}))}}function Br(r,e,n){if(r.nodes)for(var a=r.nodes.start,s=r.nodes.end,i=e&&(e.f&bn)===0?e.nodes.start:n;a!==null;){var o=aa(a);if(i.before(a),a===s)return;a=o}}function On(r,e,n){e===null?r.effect.first=n:e.next=n,n===null?r.effect.last=e:n.prev=e}function Jn(r,e,...n){var a=new ql(r);ja(()=>{const s=e()??null;a.ensure(s,s&&(i=>s(i,...n)))},er)}const ao=[...`
2
- \r\f \v\uFEFF`];function Tv(r,e,n){var a=r==null?"":""+r;if(e&&(a=a?a+" "+e:e),n){for(var s of Object.keys(n))if(n[s])a=a?a+" "+s:s;else if(a.length)for(var i=s.length,o=0;(o=a.indexOf(s,o))>=0;){var l=o+i;(o===0||ao.includes(a[o-1]))&&(l===a.length||ao.includes(a[l]))?a=(o===0?"":a.substring(0,o))+a.substring(l+1):o=l}}return a===""?null:a}function so(r,e=!1){var n=e?" !important;":";",a="";for(var s of Object.keys(r)){var i=r[s];i!=null&&i!==""&&(a+=" "+s+": "+i+n)}return a}function wv(r,e){if(e){var n="",a,s;return Array.isArray(e)?(a=e[0],s=e[1]):a=e,a&&(n+=so(a)),s&&(n+=so(s,!0)),n=n.trim(),n===""?null:n}return String(r)}function ht(r,e,n,a,s,i){var o=r[Ps];if(o!==n||o===void 0){var l=Tv(n,a,i);l==null?r.removeAttribute("class"):r.className=l,r[Ps]=n}else if(i&&s!==i)for(var d in i){var h=!!i[d];(s==null||h!==!!s[d])&&r.classList.toggle(d,h)}return i}function ms(r,e={},n,a){for(var s in n){var i=n[s];e[s]!==i&&(n[s]==null?r.style.removeProperty(s):r.style.setProperty(s,i,a))}}function qt(r,e,n,a){var s=r[Ls];if(s!==e){var i=wv(e,a);i==null?r.removeAttribute("style"):r.style.cssText=i,r[Ls]=e}else a&&(Array.isArray(a)?(ms(r,n?.[0],a[0]),ms(r,n?.[1],a[1],"important")):ms(r,n,a));return a}function kv(r,e){e?r.hasAttribute("selected")||r.setAttribute("selected",""):r.removeAttribute("selected")}function Rv(r,e){var n=r.__defaultValue,a=r.multiple,s=a?n??[]:null;if(!(a&&!na(s))){r.selectedIndex;for(var i of r.options){var o=mr(i);kv(i,a?s.includes(o):Dl(o,n))}}}function Wt(r,e,n=!1){if(r.multiple){if(e==null)return;if(!na(e))return mu();for(var a of r.options)a.selected=e.includes(mr(a));return}for(a of r.options){var s=mr(a);if(Dl(s,e)){a.selected=!0;return}}(!n||e!==void 0)&&(r.selectedIndex=-1)}function St(r){var e=new MutationObserver(n=>{n.every(Iv)||("__defaultValue"in r&&Rv(r),"__value"in r&&Wt(r,r.__value))});e.observe(r,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),vi(()=>{e.disconnect()})}function dn(r,e,n=e){var a=new WeakSet,s=!0;oi(r,"change",i=>{var o=i?"[selected]":":checked",l;if(r.multiple)l=[].map.call(r.querySelectorAll(o),mr);else{var d=r.querySelector(o)??r.querySelector("option:not([disabled])");l=d&&mr(d)}n(l),r.__value=l,Je!==null&&a.add(Je)}),Ml(()=>{var i=e();if(r===document.activeElement){var o=Je;if(a.has(o))return}if(Wt(r,i,s),s&&i===void 0){var l=r.querySelector(":checked");l!==null&&(i=mr(l),n(i))}r.__value=i,s=!1})}function mr(r){return"__value"in r?r.__value:r.value}function Iv(r){if(r.target.closest("selectedcontent")!==null)return!0;if(r.type==="childList"){var e=[...r.addedNodes,...r.removedNodes];return e.length>0&&e.every(n=>n.nodeName==="SELECTEDCONTENT")}return!1}const Dv=Symbol("is custom element"),Nv=Symbol("is html"),xv=nu?"progress":"PROGRESS";function gt(r,e){var n=mi(r);n.value===(n.value=e??void 0)||r.value===e&&(e!==0||r.nodeName!==xv)||(r.value=e??"")}function zn(r,e){var n=mi(r);n.checked!==(n.checked=e??void 0)&&(r.checked=e)}function C(r,e,n,a){var s=mi(r);s[e]!==(s[e]=n)&&(e==="loading"&&(r[tu]=n),n==null?r.removeAttribute(e):typeof n!="string"&&Cv(r).has(e)?r[e]=n:r.setAttribute(e,n))}function mi(r){return r[vl]??={[Dv]:r.nodeName.includes("-"),[Nv]:r.namespaceURI===fu}}var io=new Map;function Cv(r){var e=r.getAttribute("is")||r.nodeName,n=io.get(e);if(n)return n;io.set(e,n=new Set);for(var a,s=r,i=Element.prototype;i!==s;){a=$c(s);for(var o in a)a[o].set&&o!=="innerHTML"&&o!=="textContent"&&o!=="innerText"&&n.add(o);s=ti(s)}return n}function Tt(r,e,n=e){var a=new WeakSet;oi(r,"input",async s=>{var i=s?r.defaultValue:r.value;if(i=ps(r)?gs(i):i,n(i),Je!==null&&a.add(Je),await ov(),i!==(i=e())){var o=r.selectionStart,l=r.selectionEnd,d=r.value.length;if(r.value=i??"",l!==null){var h=r.value.length;o===l&&l===d&&h>d?(r.selectionStart=h,r.selectionEnd=h):(r.selectionStart=o,r.selectionEnd=Math.min(l,h))}}}),Hn(e)==null&&r.value&&(n(ps(r)?gs(r.value):r.value),Je!==null&&a.add(Je)),Ya(()=>{var s=e();if(r===document.activeElement){var i=Je;if(a.has(i))return}ps(r)&&s===gs(r.value)||r.type==="date"&&!s&&!r.value||s!==r.value&&(r.value=s??"")})}function nn(r,e,n=e){oi(r,"change",a=>{var s=a?r.defaultChecked:r.checked;n(s)}),Hn(e)==null&&n(r.checked),Ya(()=>{var a=e();r.checked=!!a})}function ps(r){var e=r.type;return e==="number"||e==="range"}function gs(r){return r===""?null:+r}function _s(r,e){return r===e||r?.[Xn]===e}function Un(r=si(),e,n,a){var s=kt.r,i=at;return Ml(()=>{var o,l;return Ya(()=>{o=l,l=a?.()||[],Hn(()=>{_s(n(...l),r)||(e(r,...l),o&&_s(n(...o),r)&&e(null,...o))})}),()=>{let d=i;for(;d!==s&&d.parent!==null&&d.parent.f&Na;)d=d.parent;const h=()=>{l&&_s(n(...l),r)&&e(null,...l)},g=d.teardown;d.teardown=()=>{h(),g?.()}}}),r}function K(r,e,n,a){var s=!0,i=(n&du)!==0,o=(n&cu)!==0,l=a,d=!0,h=void 0,g=()=>o&&s?(h??=Yr(a),t(h)):(d&&(d=!1,l=o?Hn(a):a),l);let b;if(i){var y=Xn in r||eu in r;b=fr(r,e)?.set??(y&&e in r?P=>r[e]=P:void 0)}var S,E=!1;i?[S,E]=Fu(()=>r[e]):S=r[e],S===void 0&&a!==void 0&&(S=g(),b&&(Tu(),b(S)));var _;if(_=()=>{var P=r[e];return P===void 0?g():(d=!0,P)},(n&lu)===0)return _;if(b){var T=r.$$legacy;return(function(P,U){return arguments.length>0?((!U||T||E)&&b(U?_():P),P):_()})}var I=!1,w=((n&ou)!==0?Yr:Sl)(()=>(I=!1,_()));i&&t(w);var D=at;return(function(P,U){if(arguments.length>0){const re=U?t(w):i?xe(P):P;return m(w,re),I=!0,l!==void 0&&(l=re),P}return xn&&I||(D.f&Kt)!==0?w.v:t(w)})}function Pv(r){kt===null&&ri(),ot(()=>{const e=Hn(r);if(typeof e=="function")return e})}function Lv(r){kt===null&&ri(),Pv(()=>()=>Hn(r))}const Mv="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(Mv);var Ov=k(`<a class="hmm-github svelte-t2m24p" target="_blank" rel="noopener noreferrer"><svg width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38
3
- 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01
4
- 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95
5
- 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27
6
- 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82
7
- 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0
8
- .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"></path></svg></a>`);function Fv(r,e){$e(e,!0);let n=K(e,"openExternal",3,void 0),a=K(e,"testId",3,void 0);function s(o){!n()||o.defaultPrevented||o.button!==0||o.metaKey||o.ctrlKey||(o.preventDefault(),n()(e.href).then(l=>{l||window.open(e.href,"_blank","noopener,noreferrer")}))}var i=Ov();N(()=>{C(i,"href",e.href),C(i,"title",e.label),C(i,"aria-label",e.label),C(i,"data-testid",a())}),ce("click",i,s),p(r,i),Xe()}rt(["click"]);const Xl={ok:"✔",busy:"↻",absent:"–",bad:"✕"};function Ql(r){return r.subscribing===!0?"busy":r.connected?"ok":r.absent===!0?"absent":"bad"}function Gv(r){const e=r.map(n=>Ql(n));return e.includes("bad")?"bad":e.includes("busy")?"busy":e.includes("ok")?"ok":"absent"}function Uv(r,e,n){const a=[r.protocol,`${n.port} ${String(r.port)}`];return r.tls===!0&&a.push(n.tls),e?.devices!==void 0&&a.push(n.devices(e.devices)),e?.dutyCycle!==void 0&&a.push(n.dutyCycle(e.dutyCycle)),a}var Vv=k('<span role="img"> </span>');function Bv(r,e){$e(e,!0);let n=K(e,"backendConnected",3,!0),a=K(e,"allConnectedText",3,"Connected"),s=K(e,"someNotConnectedText",3,"Not connected"),i=K(e,"notPresentText",3,"Not present"),o=K(e,"subscribingText",3,"Subscribing"),l=K(e,"testId",3,void 0);const d=v(()=>Gv(e.interfaces)),h=v(()=>{if(!n())return s();switch(t(d)){case"ok":return a();case"busy":return o();case"absent":return i();default:return s()}});var g=Vv();let b;var y=f(g,!0);N(()=>{b=ht(g,1,`hmm-connection hmm-connection-${t(d)??""}`,"svelte-18vw5u5",b,{"hmm-connection-offline":!n()}),C(g,"aria-label",t(h)),C(g,"title",t(h)),C(g,"data-mark",t(d)),C(g,"data-testid",l()),u(y,Xl[t(d)])}),p(r,g),Xe()}var zv=k('<button type="button" role="option"><span class="hmm-interface-item-head svelte-m4i49t"><span class="hmm-interface-item-name svelte-m4i49t"> </span> <span><span class="hmm-interface-glyph svelte-m4i49t" aria-hidden="true"> </span> </span></span> <span class="hmm-interface-item-line svelte-m4i49t"> </span></button>'),Hv=k('<div class="hmm-interface-menu svelte-m4i49t"><div class="hmm-interface-head svelte-m4i49t"><span class="hmm-interface-host svelte-m4i49t" data-testid="interface-host"> </span> <span class="hmm-interface-backend svelte-m4i49t" data-testid="interface-backend"> </span></div> <div class="hmm-interface-list svelte-m4i49t" role="listbox"></div></div>'),Wv=k('<div class="hmm-interface svelte-m4i49t"><button type="button" class="hmm-interface-trigger svelte-m4i49t" aria-haspopup="listbox"><!> <span class="hmm-interface-trigger-name svelte-m4i49t"> </span> <span class="hmm-interface-arrow svelte-m4i49t" aria-hidden="true">▾</span></button> <!></div>');function Kv(r,e){$e(e,!0);let n=K(e,"selected",3,""),a=K(e,"host",3,""),s=K(e,"backendConnected",3,!0),i=K(e,"details",19,()=>({})),o=K(e,"label",3,"Select an interface"),l=K(e,"listLabel",3,"Interfaces"),d=K(e,"connectedText",3,"Connected"),h=K(e,"notConnectedText",3,"Not connected"),g=K(e,"notPresentText",3,"Not present"),b=K(e,"subscribingText",3,"Subscribing"),y=K(e,"allConnectedText",3,"All interfaces are connected"),S=K(e,"someNotConnectedText",3,"Not every interface is connected"),E=K(e,"portLabel",3,"Port"),_=K(e,"tlsLabel",3,"TLS"),T=K(e,"devicesLabel",3,j=>`${String(j)} devices`),I=K(e,"dutyCycleLabel",3,j=>`Duty cycle ${String(j)} %`),w=K(e,"onselect",3,void 0),D=K(e,"testId",3,void 0),P=M(!1),U=M(0),re=M(void 0),te=M(void 0),oe=xe([]);const ue=v(()=>e.interfaces.findIndex(j=>j.name===n()));function x(j){switch(j){case"ok":return d();case"busy":return b();case"absent":return g();default:return h()}}function X(j){return Uv(j,i()[j.name],{port:E(),tls:_(),devices:T(),dutyCycle:I()}).join(" · ")}function $(){m(U,t(ue)<0?0:t(ue),!0),m(P,!0)}function ee(j){m(P,!1),j&&t(te)?.focus()}function W(j){ee(!0),j!==n()&&w()?.(j)}function z(j){e.interfaces.length!==0&&m(U,(t(U)+j+e.interfaces.length)%e.interfaces.length)}ot(()=>{t(P)&&oe[t(U)]?.focus()});function ne(j){if(j.key==="ArrowDown"||j.key==="ArrowUp"){j.preventDefault(),t(P)?z(j.key==="ArrowDown"?1:-1):$();return}j.key==="Escape"&&t(P)&&(j.preventDefault(),ee(!0))}function ae(j,pe){switch(j.key){case"ArrowDown":{j.preventDefault(),z(1);break}case"ArrowUp":{j.preventDefault(),z(-1);break}case"Home":{j.preventDefault(),m(U,0);break}case"End":{j.preventDefault(),m(U,e.interfaces.length-1);break}case"Enter":case" ":{j.preventDefault(),W(e.interfaces[pe]?.name??"");break}case"Escape":{j.preventDefault(),ee(!0);break}case"Tab":{ee(!1);break}}}function J(j){t(P)&&t(re)&&j.target instanceof Node&&!t(re).contains(j.target)&&ee(!1)}var q=Wv();Bn("mousedown",Er,J);var V=A(q),Y=A(V);{let j=v(()=>D()===void 0?void 0:`${D()}-summary`);Bv(Y,{get interfaces(){return e.interfaces},get backendConnected(){return s()},get allConnectedText(){return y()},get someNotConnectedText(){return S()},get notPresentText(){return g()},get subscribingText(){return b()},get testId(){return t(j)}})}var he=c(Y,2),Q=f(he,!0);Un(V,j=>m(te,j),()=>t(te));var Ee=c(V,2);{var Ae=j=>{var pe=Hv(),B=A(pe),ie=A(B),be=f(ie,!0),fe=c(ie,2),le=f(fe,!0),O=c(B,2);Ne(O,23,()=>e.interfaces,F=>F.name,(F,Z,ge)=>{const de=v(()=>Ql(t(Z)));var G=zv();let R;var L=A(G),H=A(L),_e=f(H,!0),Se=c(H,2),De=A(Se),Oe=f(De,!0),Ue=c(De),Ve=c(L,2),Me=f(Ve,!0);Un(G,(je,me)=>oe[me]=je,je=>oe?.[je],()=>[t(ge)]),N((je,me)=>{R=ht(G,1,"hmm-interface-item svelte-m4i49t",null,R,{"hmm-interface-item-current":t(Z).name===n()}),C(G,"aria-selected",t(Z).name===n()),C(G,"tabindex",t(ge)===t(U)?0:-1),C(G,"title",t(de)==="bad"?t(Z).error??h():void 0),C(G,"data-testid",`interface-item-${t(Z).name}`),u(_e,t(Z).name),ht(Se,1,`hmm-interface-mark hmm-interface-mark-${t(de)??""}`,"svelte-m4i49t"),C(Se,"data-mark",t(de)),u(Oe,Xl[t(de)]),u(Ue,` ${je??""}`),u(Me,me)},[()=>x(t(de)),()=>X(t(Z))]),ce("click",G,()=>W(t(Z).name)),ce("keydown",G,je=>ae(je,t(ge))),p(F,G)}),N(()=>{u(be,a()===""?"—":a()),u(le,s()?d():h()),C(O,"aria-label",l())}),p(j,pe)};ve(Ee,j=>{t(P)&&j(Ae)})}Un(q,j=>m(re,j),()=>t(re)),N(()=>{C(q,"data-testid",D()),C(V,"aria-expanded",t(P)),C(V,"aria-label",o()),C(V,"title",o()),C(V,"data-testid",D()===void 0?void 0:`${D()}-trigger`),u(Q,n())}),ce("click",V,()=>t(P)?ee(!1):$()),ce("keydown",V,ne),p(r,q),Xe()}rt(["click","keydown"]);var Yv=k('<div class="hmm-loader svelte-v1tg6x" role="status" aria-live="polite"><div class="hmm-loader-box svelte-v1tg6x"><div class="hmm-loader-spinner svelte-v1tg6x" aria-hidden="true"></div> <div class="hmm-loader-text svelte-v1tg6x"> </div></div></div>');function jv(r,e){let n=K(e,"visible",3,!1),a=K(e,"text",3,"Loading Homematic Manager..."),s=K(e,"testId",3,void 0);var i=lt(),o=ke(i);{var l=d=>{var h=Yv(),g=A(h),b=c(A(g),2),y=f(b,!0);N(()=>{C(h,"data-testid",s()),u(y,a())}),p(d,h)};ve(o,d=>{n()&&d(l)})}p(r,i)}class zt extends Error{kind;faultCode;faultString;problems;constructor(e){super(e.message),this.name="ApiRequestError",this.kind=e.kind,e.faultCode!==void 0&&(this.faultCode=e.faultCode),e.faultString!==void 0&&(this.faultString=e.faultString),e.problems!==void 0&&(this.problems=e.problems)}toApiError(){return{...{message:this.message,kind:this.kind},...this.faultCode===void 0?{}:{faultCode:this.faultCode},...this.faultString===void 0?{}:{faultString:this.faultString},...this.problems===void 0?{}:{problems:this.problems}}}}function Zl(r){if(typeof r!="object"||r===null)return!1;const e=r;return typeof e.message=="string"&&typeof e.kind=="string"}function Jl(r,e="internal"){return r instanceof zt?r:Zl(r)?new zt(r):r instanceof Error?new zt({message:r.message,kind:e}):new zt({message:String(r),kind:e})}const Bs=5,qv=5e3,$v=15e3;class Xv{#e=M(xe([]));get items(){return t(this.#e)}set items(e){m(this.#e,e,!0)}#r;#n;#t;#a;#s;#i=new Map;#o=1;constructor(e,n={}){this.#r=n.max??20,this.#n=n.now??(()=>Date.now()),this.#t=n.infoTtlMs??qv,this.#a=n.warnTtlMs??$v,this.#s=e.on("notice",a=>{this.push(a.level,a.message,a.interfaceName)})}get visible(){return this.items.slice(Math.max(0,this.items.length-Bs))}get hidden(){return Math.max(0,this.items.length-Bs)}push(e,n,a){const s=this.#o;this.#o+=1;const i={id:s,level:e,message:n,timestamp:this.#n(),...a===void 0?{}:{interfaceName:a}},o=[...this.items,i],l=o.length>this.#r?o.slice(0,o.length-this.#r):[];for(const d of l)this.#d(d.id);return this.items=l.length>0?o.slice(l.length):o,this.#u(s,e),s}fromError(e,n){const a=Jl(e),s=a.faultCode===void 0?"":` (${a.faultString??a.message}, ${String(a.faultCode)})`,i=`${n===void 0?"":`${n}: `}${a.message}${s}`;return this.push("error",i)}dismiss(e){this.#d(e),this.items=this.items.filter(n=>n.id!==e)}clear(){for(const e of[...this.#i.keys()])this.#d(e);this.items=[]}dispose(){this.clear(),this.#s()}#l(e){return e==="info"?this.#t:e==="warn"?this.#a:0}#u(e,n){const a=this.#l(n);if(a<=0)return;const s=setTimeout(()=>{this.#i.delete(e),this.items=this.items.filter(i=>i.id!==e)},a);s.unref?.(),this.#i.set(e,s)}#d(e){const n=this.#i.get(e);n!==void 0&&(clearTimeout(n),this.#i.delete(e))}}var Qv=k('<button type="button" class="hmm-notices-more svelte-1pqi0mh"> </button>'),Zv=k("<strong> </strong>"),Jv=k('<div><span class="hmm-notice-text svelte-1pqi0mh"><!> </span> <button type="button" class="hmm-notice-close svelte-1pqi0mh">✕</button></div>'),ef=k('<div class="hmm-notices svelte-1pqi0mh" role="log" aria-live="polite"><!> <!></div>');function tf(r,e){$e(e,!0);let n=K(e,"ondismiss",3,void 0),a=K(e,"dismissLabel",3,"Dismiss"),s=K(e,"visibleCount",3,Bs),i=K(e,"moreLabel",3,_=>`${_} more`),o=K(e,"lessLabel",3,"Show fewer"),l=K(e,"testId",3,void 0),d=M(!1);const h=v(()=>Math.max(0,e.notices.length-s())),g=v(()=>t(d)?e.notices:e.notices.slice(e.notices.length-Math.min(e.notices.length,s())));ot(()=>{t(h)===0&&t(d)&&m(d,!1)});var b=ef(),y=A(b);{var S=_=>{var T=Qv(),I=f(T,!0);N(w=>{C(T,"data-testid",l()===void 0?void 0:`${l()}-more`),C(T,"aria-expanded",t(d)),u(I,w)},[()=>t(d)?o():i()(t(h))]),ce("click",T,()=>m(d,!t(d))),p(_,T)};ve(y,_=>{t(h)>0&&_(S)})}var E=c(y,2);Ne(E,17,()=>t(g),_=>_.id,(_,T)=>{var I=Jv();let w;var D=A(I),P=A(D);{var U=oe=>{var ue=Zv(),x=f(ue,!0);N(()=>u(x,t(T).interfaceName)),p(oe,ue)};ve(P,oe=>{t(T).interfaceName!==void 0&&oe(U)})}var re=c(P),te=c(D,2);N(()=>{w=ht(I,1,"hmm-notice svelte-1pqi0mh",null,w,{"hmm-notice-warn":t(T).level==="warn","hmm-notice-error":t(T).level==="error"}),u(re,` ${t(T).message??""}`),C(te,"aria-label",a())}),ce("click",te,()=>n()?.(t(T).id)),p(_,I)}),N(()=>C(b,"data-testid",l())),p(r,b),Xe()}rt(["click"]);function pi(r){return r===void 0?"":typeof r=="string"?r:typeof r=="number"||typeof r=="boolean"?String(r):JSON.stringify(r)}function gi(r,e){return new Date(r).toLocaleTimeString(e,{hour12:!1})}function nf(r,e){const n=new Date(r);return`${n.toLocaleDateString(e)} ${n.toLocaleTimeString(e,{hour12:!1})}`}function rf(r){return r<1e3?`${Math.round(r)} ms`:`${(r/1e3).toFixed(2)} s`}function oo(r){return r.map(e=>typeof e=="string"?e:JSON.stringify(e)).join(", ")}const Ta={minWidth:320,minHeight:160};function yr(r,e,n){return Math.min(Math.max(r,e),Math.max(e,n))}function ed(r,e){return{...r,left:Math.round(yr(r.left,0,e.width-r.width)),top:Math.round(yr(r.top,0,e.height-r.height))}}function af(r,e,n,a){return ed({...r,left:r.left+e,top:r.top+n},a)}function sf(r,e,n,a,s,i=Ta){const o=r.left+r.width,l=r.top+r.height,d=e==="w",h=e==="n",g=d||e==="e"||e==="se",b=h||e==="s"||e==="se",y=Math.max(i.minWidth,d?o:s.width-r.left),S=Math.max(i.minHeight,h?l:s.height-r.top),E=g?Math.round(yr(r.width+(d?-n:n),i.minWidth,Math.min(y,s.width))):r.width,_=b?Math.round(yr(r.height+(h?-a:a),i.minHeight,Math.min(S,s.height))):r.height;return ed({left:d?o-E:r.left,top:h?l-_:r.top,width:E,height:_},s)}const of=.5,Fa=120;function _i(r,e){return{min:Fa,max:Math.max(Fa,r-e)}}function bs(r,e){const{min:n,max:a}=_i(r,e);return Math.round(yr(r*of,n,a))}function lo(r,e,n,a){const{min:s,max:i}=_i(n,a);return Math.round(yr(r-e,s,i))}const td=new Map;function co(r,e){td.set(r,e)}function lf(r){return td.get(r)}const nd=new Map;function df(r,e){nd.set(r,e)}function cf(r){return nd.get(r)}var uf=k('<li class="hmm-rpclog-entry hmm-rpclog-pending svelte-7sszxb"><span class="hmm-rpclog-spinner svelte-7sszxb" aria-hidden="true"></span> <span class="hmm-rpclog-method hmm-mono svelte-7sszxb"> </span> <span class="hmm-rpclog-params hmm-mono svelte-7sszxb"> </span> <span class="hmm-rpclog-status svelte-7sszxb"> </span></li>'),vf=k('<li><span class="hmm-rpclog-time svelte-7sszxb"> </span> <span class="hmm-rpclog-method hmm-mono svelte-7sszxb"> </span> <span class="hmm-rpclog-params hmm-mono svelte-7sszxb"> </span> <span class="hmm-rpclog-status svelte-7sszxb"><!></span> <span class="hmm-rpclog-duration svelte-7sszxb"> </span></li>'),ff=k('<li class="hmm-rpclog-empty svelte-7sszxb"> </li>'),hf=k('<aside class="hmm-rpclog svelte-7sszxb"><div class="hmm-rpclog-handle svelte-7sszxb" role="separator" aria-orientation="horizontal" tabindex="0" data-resize="n"></div> <header class="hmm-rpclog-head svelte-7sszxb"><strong class="hmm-rpclog-title svelte-7sszxb"> </strong> <button type="button" class="hmm-button"> </button> <button type="button" class="hmm-rpclog-close svelte-7sszxb">✕</button></header> <ol class="hmm-rpclog-list svelte-7sszxb"><!> <!> <!></ol></aside>');function mf(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"pending",19,()=>[]),s=K(e,"title",3,"RPC log"),i=K(e,"emptyText",3,"No RPC calls yet"),o=K(e,"pendingText",3,"in progress"),l=K(e,"clearLabel",3,"Clear"),d=K(e,"closeLabel",3,"Close"),h=K(e,"resizeLabel",3,"Resize the RPC log"),g=K(e,"reservedHeight",3,void 0),b=K(e,"onclear",3,void 0),y=K(e,"testId",3,void 0);const S="rpclog";let E=M(xe(lf(S)));function _(){if(g()!==void 0)return g();const re=getComputedStyle(document.documentElement).getPropertyValue("--hmm-header-height"),te=Number.parseFloat(re);return Number.isFinite(te)?te:36}ot(()=>{n()&&t(E)===void 0&&m(E,bs(window.innerHeight,_()),!0)});function T(re){if(re.button!==0)return;const te=t(E)??bs(window.innerHeight,_()),oe=re.clientY;re.preventDefault();const ue=X=>{m(E,lo(te,X.clientY-oe,window.innerHeight,_()),!0)},x=()=>{window.removeEventListener("pointermove",ue),window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",x),t(E)!==void 0&&co(S,t(E))};window.addEventListener("pointermove",ue),window.addEventListener("pointerup",x),window.addEventListener("pointercancel",x)}const I=v(()=>n()&&t(E)!==void 0?_i(window.innerHeight,_()).max:Fa);function w(re){const te=re.key==="ArrowUp"?-20:re.key==="ArrowDown"?20:0;if(te===0)return;re.preventDefault();const oe=t(E)??bs(window.innerHeight,_());m(E,lo(oe,te,window.innerHeight,_()),!0),co(S,t(E))}var D=lt(),P=ke(D);{var U=re=>{var te=hf();let oe;var ue=A(te),x=c(ue,2),X=A(x),$=f(X,!0),ee=c(X,2),W=f(ee,!0),z=c(ee,2),ne=c(x,2),ae=A(ne);Ne(ae,17,a,Y=>Y.id,(Y,he)=>{var Q=uf(),Ee=c(A(Q),2),Ae=f(Ee),j=c(Ee,2),pe=f(j,!0),B=c(j,2),ie=f(B,!0);N(be=>{u(Ae,`${t(he).interfaceName??""} ${t(he).method??""}`),u(pe,be),u(ie,o())},[()=>oo(t(he).params)]),p(Y,Q)});var J=c(ae,2);Ne(J,17,()=>e.entries,Y=>Y.id,(Y,he)=>{var Q=vf();let Ee;var Ae=A(Q),j=f(Ae,!0),pe=c(Ae,2),B=f(pe),ie=c(pe,2),be=f(ie,!0),fe=c(ie,2),le=A(fe);{var O=de=>{var G=Cn();N(R=>u(G,R),[()=>pi(t(he).result)]),p(de,G)},F=de=>{var G=Cn();N(()=>u(G,t(he).error??"")),p(de,G)};ve(le,de=>{t(he).ok?de(O):de(F,-1)})}var Z=c(fe,2),ge=f(Z,!0);N((de,G,R)=>{Ee=ht(Q,1,"hmm-rpclog-entry svelte-7sszxb",null,Ee,{"hmm-rpclog-failed":!t(he).ok}),u(j,de),u(B,`${t(he).interfaceName??""} ${t(he).method??""}`),u(be,G),u(ge,R)},[()=>gi(t(he).timestamp),()=>oo(t(he).params),()=>rf(t(he).durationMs)]),p(Y,Q)});var q=c(J,2);{var V=Y=>{var he=ff(),Q=f(he,!0);N(()=>u(Q,i())),p(Y,he)};ve(q,Y=>{e.entries.length===0&&a().length===0&&Y(V)})}N(()=>{C(te,"aria-label",s()),C(te,"data-testid",y()),oe=qt(te,"",oe,{height:t(E)===void 0?void 0:`${t(E)}px`}),C(ue,"aria-label",h()),C(ue,"aria-valuenow",t(E)??0),C(ue,"aria-valuemin",Fa),C(ue,"aria-valuemax",t(I)),C(ue,"data-testid",y()===void 0?void 0:`${y()}-resize`),u($,s()),u(W,l()),C(z,"aria-label",d())}),ce("pointerdown",ue,T),ce("keydown",ue,w),ce("click",ee,()=>b()?.()),ce("click",z,()=>n(!1)),p(re,te)};ve(P,re=>{n()&&re(U)})}p(r,D),Xe()}rt(["pointerdown","keydown","click"]);var pf=k('<button type="button" class="hmm-dialog-close svelte-jby388">✕</button>'),gf=k('<div class="hmm-dialog-buttons svelte-jby388"><!></div>'),_f=k('<div aria-hidden="true"></div>'),bf=k('<dialog><div><span class="hmm-dialog-title svelte-jby388"> </span> <!></div> <div class="hmm-dialog-body svelte-jby388"><!></div> <!> <!></dialog>');function Vt(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"title",3,""),s=K(e,"modal",3,!0),i=K(e,"width",3,"640px"),o=K(e,"height",3,void 0),l=K(e,"closable",3,!0),d=K(e,"onclose",3,void 0),h=K(e,"children",3,void 0),g=K(e,"buttons",3,void 0),b=K(e,"closeLabel",3,"Close"),y=K(e,"minWidth",3,void 0),S=K(e,"minHeight",19,()=>Ta.minHeight),E=K(e,"movable",3,!0),_=K(e,"testId",3,void 0),T=M(void 0),I,w=M(void 0);const D=v(()=>_()??a()),P=v(()=>Number(/^(\d+)px$/.exec(i())?.[1]??Number.NaN)),U=v(()=>({minWidth:y()??(Number.isNaN(t(P))?Ta.minWidth:Math.max(Ta.minWidth,t(P))),minHeight:S()}));ot(()=>{const B=t(T);B&&(n()&&!B.open?(I=document.activeElement instanceof HTMLElement?document.activeElement:void 0,m(w,t(D)===""?void 0:cf(t(D)),!0),s()?B.showModal():B.show()):!n()&&B.open&&B.close())});function re(){n(!1),d()?.(),I?.focus(),I=void 0}function te(){return{width:window.innerWidth,height:window.innerHeight}}function oe(B,ie){const be=t(T);if(!be||!E()||B.button!==0)return;const fe=be.getBoundingClientRect(),le={left:fe.left,top:fe.top,width:fe.width,height:fe.height},O=B.clientX,F=B.clientY;B.preventDefault();const Z=de=>{const G=de.clientX-O,R=de.clientY-F;m(w,ie==="move"?af(le,G,R,te()):sf(le,ie,G,R,te(),t(U)),!0)},ge=()=>{window.removeEventListener("pointermove",Z),window.removeEventListener("pointerup",ge),window.removeEventListener("pointercancel",ge),t(w)&&t(D)!==""&&df(t(D),t(w))};window.addEventListener("pointermove",Z),window.addEventListener("pointerup",ge),window.addEventListener("pointercancel",ge)}function ue(B){B.target.closest("button")===null&&oe(B,"move")}const x=["n","e","s","w","se"];function X(B){B.preventDefault(),l()&&re()}var $=bf();let ee,W;var z=A($);let ne;var ae=A(z),J=f(ae,!0),q=c(ae,2);{var V=B=>{var ie=pf();N(()=>C(ie,"aria-label",b())),ce("click",ie,re),p(B,ie)};ve(q,B=>{l()&&B(V)})}var Y=c(z,2),he=A(Y);{var Q=B=>{var ie=lt(),be=ke(ie);Jn(be,h),p(B,ie)};ve(he,B=>{h()&&B(Q)})}var Ee=c(Y,2);{var Ae=B=>{var ie=gf(),be=A(ie);Jn(be,g),p(B,ie)};ve(Ee,B=>{g()&&B(Ae)})}var j=c(Ee,2);{var pe=B=>{var ie=lt(),be=ke(ie);Ne(be,16,()=>x,fe=>fe,(fe,le)=>{var O=_f();N(()=>{ht(O,1,`hmm-dialog-resize hmm-dialog-resize-${le??""}`,"svelte-jby388"),C(O,"data-resize",le)}),ce("pointerdown",O,F=>oe(F,le)),p(fe,O)}),p(B,ie)};ve(j,B=>{E()&&B(pe)})}Un($,B=>m(T,B),()=>t(T)),N(()=>{ee=ht($,1,"hmm-dialog svelte-jby388",null,ee,{"hmm-dialog-placed":t(w)!==void 0}),C($,"data-testid",_()),C($,"aria-label",a()===""?void 0:a()),W=qt($,"",W,{width:t(w)===void 0?i():`${t(w).width}px`,height:t(w)===void 0?o():`${t(w).height}px`,left:t(w)===void 0?void 0:`${t(w).left}px`,top:t(w)===void 0?void 0:`${t(w).top}px`}),ne=ht(z,1,"hmm-dialog-titlebar svelte-jby388",null,ne,{"hmm-dialog-titlebar-movable":E()}),u(J,a())}),Bn("cancel",$,X),Bn("close",$,()=>{n()&&re()}),ce("pointerdown",z,ue),p(r,$),Xe()}rt(["pointerdown","click"]);var Ef=k('<button type="button" class="hmm-button"> </button>'),Sf=k('<p class="hmm-progress-last hmm-mono svelte-1r0w7uc"> </p>'),yf=k('<p class="hmm-progress-line svelte-1r0w7uc"> </p> <progress class="hmm-progress svelte-1r0w7uc"></progress> <!>',1);function rd(r,e){$e(e,!0);let n=K(e,"progress",3,void 0),a=K(e,"title",3,"RPC execution"),s=K(e,"cancelLabel",3,void 0),i=K(e,"oncancel",3,void 0),o=K(e,"testId",3,void 0),l=v(()=>n()!==void 0);Vt(r,{get title(){return a()},modal:!0,closable:!1,width:"420px",get testId(){return o()},get open(){return t(l)},set open(h){m(l,h)},buttons:h=>{var g=lt(),b=ke(g);{var y=S=>{var E=Ef(),_=f(E,!0);N(()=>u(_,s())),ce("click",E,()=>i()?.()),p(S,E)};ve(b,S=>{s()!==void 0&&S(y)})}p(h,g)},children:(h,g)=>{var b=lt(),y=ke(b);{var S=E=>{var _=yf(),T=ke(_),I=f(T),w=c(T,2),D=c(w,2);{var P=U=>{var re=Sf(),te=f(re);N(()=>u(te,`${n().last.address??""}
9
- ${n().last.paramset??""}
10
- ${n().last.ok?"✔":"✕"}`)),p(U,re)};ve(D,U=>{n().last&&U(P)})}N(()=>{u(I,`${n().done??""} / ${n().total??""}`),C(w,"max",n().total),gt(w,n().done)}),p(E,_)};ve(y,E=>{n()&&E(S)})}p(h,b)},$$slots:{buttons:!0,default:!0}}),Xe()}rt(["click"]);var Af=k('<span class="hmm-tab-badge svelte-126ak3w"> </span>'),Tf=k('<button type="button" role="tab"><span> </span> <!></button>'),wf=k('<div class="hmm-tabs svelte-126ak3w" role="tablist"></div>');function kf(r,e){$e(e,!0);let n=K(e,"active",15,""),a=K(e,"onselect",3,void 0),s=K(e,"label",3,"Tabs"),i=K(e,"testId",3,void 0);function o(h){n(h),a()?.(h)}function l(h,g){if(h.key!=="ArrowLeft"&&h.key!=="ArrowRight")return;h.preventDefault();const b=h.key==="ArrowRight"?1:-1,y=e.tabs[(g+b+e.tabs.length)%e.tabs.length];y&&o(y.id)}var d=wf();Ne(d,23,()=>e.tabs,h=>h.id,(h,g,b)=>{var y=Tf();let S;var E=A(y),_=f(E,!0),T=c(E,2);{var I=w=>{var D=Af(),P=f(D);N(()=>u(P,`(${t(g).badge??""})`)),p(w,D)};ve(T,w=>{t(g).badge!==void 0&&t(g).badge!==""&&w(I)})}N(()=>{S=ht(y,1,"hmm-tab svelte-126ak3w",null,S,{"hmm-tab-active":t(g).id===n()}),C(y,"id",`tab-${t(g).id}`),C(y,"aria-selected",t(g).id===n()),C(y,"aria-controls",`panel-${t(g).id}`),C(y,"tabindex",t(g).id===n()?0:-1),u(_,t(g).label)}),ce("click",y,()=>o(t(g).id)),ce("keydown",y,w=>l(w,t(b))),p(h,y)}),N(()=>{C(d,"aria-label",s()),C(d,"data-testid",i())}),p(r,d),Xe()}rt(["click","keydown"]);var Rf=k('<button type="button" class="hmm-theme-switch svelte-mls84d"><span aria-hidden="true"> </span></button>');function If(r,e){$e(e,!0);let n=K(e,"theme",3,"system"),a=K(e,"labelFor",3,void 0),s=K(e,"onclick",3,void 0),i=K(e,"testId",3,void 0);const o={system:"◐",light:"☀",dark:"☾"},l=v(()=>a()?.(n())??`Theme: ${n()}`);var d=Rf(),h=A(d),g=f(h,!0);N(()=>{C(d,"aria-label",t(l)),C(d,"title",t(l)),C(d,"data-testid",i()),u(g,o[n()])}),ce("click",d,()=>s()?.()),p(r,d),Xe()}rt(["click"]);var Df=k('<button type="button" class="hmm-button" data-testid="update-download"> </button>'),Nf=k('<button type="button" class="hmm-button" data-testid="update-install"> </button>'),xf=k('<div class="hmm-update svelte-puqwbv" role="status"><span class="hmm-update-text svelte-puqwbv"> </span> <!> <button type="button" class="hmm-button" data-testid="update-dismiss"> </button></div>');function Cf(r,e){$e(e,!0);let n=K(e,"state",3,void 0),a=K(e,"testId",3,void 0);const s=v(()=>{if(!n())return"";switch(n().phase){case"available":return e.labels.available;case"downloading":return`${e.labels.downloading} ${n().percent===void 0?"":`${String(Math.round(n().percent))} %`}`;case"downloaded":return e.labels.downloaded;case"installOnQuit":return e.labels.installOnQuit;default:return""}});var i=lt(),o=ke(i);{var l=d=>{var h=xf(),g=A(h),b=f(g),y=c(g,2);{var S=I=>{var w=Df(),D=f(w,!0);N(()=>u(D,e.labels.download)),ce("click",w,()=>e.ondownload()),p(I,w)},E=I=>{var w=Nf(),D=f(w,!0);N(()=>u(D,e.labels.install)),ce("click",w,()=>e.oninstall()),p(I,w)};ve(y,I=>{n().phase==="available"?I(S):n().phase==="downloaded"&&I(E,1)})}var _=c(y,2),T=f(_,!0);N(()=>{C(h,"data-testid",a()),u(b,`${t(s)??""}${n().version===void 0?"":` ${n().version}`}`),u(T,e.labels.dismiss)}),ce("click",_,()=>e.ondismiss()),p(d,h)};ve(o,d=>{n()&&t(s)!==""&&d(l)})}p(r,i),Xe()}rt(["click"]);var Pf=k('<button type="button"><span aria-hidden="true"> </span></button>');function mt(r,e){$e(e,!0);let n=K(e,"icon",3,"•"),a=K(e,"disabled",3,!1),s=K(e,"reason",3,void 0),i=K(e,"pressed",3,void 0),o=K(e,"onclick",3,void 0),l=K(e,"testId",3,void 0);var d=Pf();let h;var g=A(d),b=f(g,!0);N(()=>{h=ht(d,1,"hmm-toolbar-button svelte-cmlgq7",null,h,{"hmm-toolbar-button-pressed":i()===!0}),C(d,"title",a()&&s()!==void 0?`${e.title} — ${s()}`:e.title),C(d,"aria-label",e.title),C(d,"aria-pressed",i()),C(d,"data-testid",l()),d.disabled=a(),u(b,n())}),ce("click",d,()=>o()?.()),p(r,d),Xe()}rt(["click"]);const zs=Symbol("homematic-manager.stores");function Lf(r){return Pu(zs,r),r}function Et(){if(!Lu(zs))throw new Error("no stores in context - wrap the component in App.svelte or call setStores() in a parent");return Cu(zs)}var Mf=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="change-set-clear"> </button> <button type="button" class="hmm-button" data-testid="change-set-apply"> </button>',1),Of=k('<p data-testid="change-set-empty"> </p>'),Ff=k('<p class="hmm-change-call svelte-1uqsmm6"> </p>'),Gf=k('<tr><td class="hmm-mono svelte-1uqsmm6"> </td><td class="svelte-1uqsmm6"> </td><td class="hmm-change-new svelte-1uqsmm6"> </td></tr>'),Uf=k('<table class="hmm-change-table svelte-1uqsmm6"><tbody></tbody></table>'),Vf=k('<p class="hmm-change-error svelte-1uqsmm6"> </p>'),Bf=k('<li class="hmm-change svelte-1uqsmm6"><div class="hmm-change-head svelte-1uqsmm6"><span class="hmm-change-title svelte-1uqsmm6"> </span> <button type="button" class="hmm-button"> </button></div> <!> <!> <!></li>'),zf=k('<ol class="hmm-changes svelte-1uqsmm6" data-testid="change-set-list"></ol> <p class="hmm-change-count svelte-1uqsmm6" data-testid="change-set-count"> </p>',1),Hf=k("<!> <!>",1);function Wf(r,e){$e(e,!0);let n=K(e,"open",15,!1);const a=Et(),s=a.i18n.t,i=a.changeSet,o=v(()=>i.count);function l(h){const g=i.outcome(h.id);return g===void 0?void 0:{ok:g.ok,...g.error?{error:g.error}:{}}}async function d(){const h=i.interfaces;await i.apply();for(const g of h)await a.links.load(g);i.empty&&n(!1)}{const h=b=>{var y=Mf(),S=ke(y),E=f(S,!0),_=c(S,2),T=f(_,!0),I=c(_,2),w=f(I,!0);N((D,P,U)=>{u(E,D),_.disabled=i.empty||i.applying,u(T,P),I.disabled=i.empty||i.applying,u(w,U)},[()=>s("Close"),()=>s("Discard all"),()=>s("Apply")]),ce("click",S,()=>n(!1)),ce("click",_,()=>i.clear()),ce("click",I,()=>{d()}),p(b,y)};let g=v(()=>s("Pending changes"));Vt(r,{get title(){return t(g)},width:"820px",testId:"change-set-dialog",get open(){return n()},set open(b){n(b)},buttons:h,children:(b,y)=>{var S=Hf(),E=ke(S);{var _=D=>{var P=Of(),U=f(P,!0);N(re=>u(U,re),[()=>s("Nothing is staged")]),p(D,P)},T=D=>{var P=zf(),U=ke(P);Ne(U,21,()=>i.changes,oe=>oe.id,(oe,ue)=>{const x=v(()=>l(t(ue)));var X=Bf(),$=A(X),ee=A($),W=f(ee,!0),z=c(ee,2),ne=f(z,!0),ae=c($,2);Ne(ae,16,()=>t(ue).calls,he=>he,(he,Q)=>{var Ee=Ff(),Ae=f(Ee,!0);N(()=>u(Ae,Q)),p(he,Ee)});var J=c(ae,2);{var q=he=>{var Q=Uf(),Ee=A(Q);Ne(Ee,21,()=>t(ue).lines,Ae=>Ae.label,(Ae,j)=>{var pe=Gf(),B=A(pe),ie=f(B,!0),be=c(B),fe=f(be,!0),le=c(be),O=f(le,!0);N(()=>{u(ie,t(j).label),u(fe,t(j).from??""),u(O,t(j).to??"")}),p(Ae,pe)}),p(he,Q)};ve(J,he=>{t(ue).lines.length>0&&he(q)})}var V=c(J,2);{var Y=he=>{var Q=Vf(),Ee=f(Q,!0);N(()=>{C(Q,"data-testid",`change-error-${t(ue).id}`),u(Ee,t(x).error)}),p(he,Q)};ve(V,he=>{t(x)&&!t(x).ok&&he(Y)})}N(he=>{C(X,"data-testid",`change-${t(ue).id}`),u(W,t(ue).title),z.disabled=i.applying,C(z,"data-testid",`change-remove-${t(ue).id}`),u(ne,he)},[()=>s("Remove")]),ce("click",z,()=>i.remove(t(ue).id)),p(oe,X)});var re=c(U,2),te=f(re,!0);N(oe=>u(te,oe),[()=>s("{count} changes staged",{},t(o))]),p(D,P)};ve(E,D=>{i.empty?D(_):D(T,-1)})}var I=c(E,2);{var w=D=>{{let P=v(()=>a.writeLog.progress??{done:i.applied,total:t(o)}),U=v(()=>s("Cancel"));rd(D,{get progress(){return t(P)},get cancelLabel(){return t(U)},oncancel:()=>{i.cancel()}})}};ve(I,D=>{i.applying&&D(w)})}p(b,S)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click"]);const Kf={"interfaces.changed":!0,"rega.changed":!0,"devices.changed":!0,"names.changed":!0,"rpc.event":!0,"serviceMessages.changed":!0,"writeLog.appended":!0,"write.progress":!0,"unreach.changed":!0,"config.changed":!0,notice:!0};Object.freeze(Object.keys(Kf));const Fn={manifest:"manifest.json",profiles:r=>`profiles/${r}.json`,receiverTypeAliases:"receiver-type-aliases.json",masterMetadata:"master-metadata.json",optionPresets:"option-presets.json",crossValidations:"cross-validations.json",translations:r=>`translations/${r}.json`,deviceIcons:"device-icons.json"},ad={"BidCos-RF":{name:"BidCos-RF",port:2001,tlsPort:42001,localPort:32001,localBinrpc:!0,protocol:"xmlrpc",init:!0,ping:!0,dutyCycle:!0},"BidCos-Wired":{name:"BidCos-Wired",port:2e3,tlsPort:42e3,localPort:32e3,localBinrpc:!0,protocol:"xmlrpc",init:!0,ping:!0},"HmIP-RF":{name:"HmIP-RF",port:2010,tlsPort:42010,localPort:32010,protocol:"xmlrpc",init:!0,ping:!0,pingTimeout:600,dutyCycle:!0,serviceMessages:!1},VirtualDevices:{name:"VirtualDevices",port:9292,tlsPort:49292,localPort:39292,path:"/groups",protocol:"xmlrpc",init:!0,ping:!1,serviceMessages:!1},CUxD:{name:"CUxD",port:8701,protocol:"binrpc",init:!0,ping:!0,ident:"CUxD"}},Yf=Object.keys(ad),jf=["BidCos-RF","HmIP-RF","VirtualDevices","BidCos-Wired"];function qf(r){return Object.prototype.hasOwnProperty.call(ad,r)}function $f(r){const e=[];return r.name.trim()===""?e.push({code:"empty-name"}):qf(r.name)&&e.push({code:"reserved-name",name:r.name}),r.host.trim()===""&&e.push({code:"empty-host"}),(!Number.isInteger(r.port)||r.port<1||r.port>65535)&&e.push({code:"invalid-port",port:r.port}),e}const sd=0;class uo extends Error{address;constructor(e,n){super(`invalid address ${JSON.stringify(e)}: ${n}`),this.name="AddressError",this.address=e}}const Xf=/^\d+$/;function Ar(r){if(r==="")return;const e=r.indexOf(":");if(e===-1)return{address:r,device:r,isDevice:!0,isChannel:!1,isMaintenance:!1};const n=r.slice(0,e),a=r.slice(e+1);if(n===""||!Xf.test(a))return;const s=Number.parseInt(a,10);return{address:r,device:n,index:s,channel:r,isDevice:!1,isChannel:!0,isMaintenance:s===sd}}function id(r){const e=Ar(r);if(!e)throw r===""?new uo(r,"empty"):new uo(r,"expected SERIAL or SERIAL:INDEX with a numeric index");return e}function wa(r){return Ar(r)?.isDevice===!0}function Yn(r){return Ar(r)?.isMaintenance===!0}function Ga(r){return id(r).device}function Qf(r){return id(r).index}function _a(r,e){const n=Ar(r),a=Ar(e);return!n||!a?n?-1:a?1:r<e?-1:r>e?1:0:n.device!==a.device?n.device<a.device?-1:1:(n.index??-1)-(a.index??-1)}const Es={VISIBLE:1,INTERNAL:2,DONT_DELETE:8};function ba(r){const e=typeof r=="number"?r:0,n=(e&Es.VISIBLE)!==0,a=(e&Es.INTERNAL)!==0,s=(e&Es.DONT_DELETE)!==0,i=[];return n&&i.push("Visible"),a&&i.push("Internal"),s&&i.push("DontDelete"),{visible:n,internal:a,dontDelete:s,unknownBits:e&-12,labels:i}}const Zf={ALWAYS:1,BURST:2,CONFIG:4,WAKEUP:8,LAZY_CONFIG:16};function Jf(r){const e=typeof r=="number"?r:0,n=[];for(const[a,s]of Object.entries(Zf))(e&s)!==0&&n.push(a);return n}const eh=["NONE","SENDER","RECEIVER"];function th(r){return eh[r??0]??"NONE"}const nh=["HM-RCV-50","HMW-RCV-50","HmIP-RCV-50","CENTRAL"];function Ss(r){return nh.includes(r)}function pr(r){return typeof r.PARENT=="string"&&r.PARENT!==""}function Ua(r,e,n,a){let s="",i=e;if(pr(e)){if(!a)throw new Error(`cannot build a paramset identity for channel ${e.ADDRESS} without its device`);s=e.TYPE,i=a}const o=i.FIRMWARE??"",l=i.VERSION===void 0?"":String(i.VERSION);return[r,i.TYPE,o,l,s,n].join("/")}function Tn(r){return r===void 0||r.trim()===""?[]:r.trim().split(/\s+/)}class rh{interfaceName;#e=new Map;#r=[];#n=[];#t=new Map;#a=new Map;#s=new Map;constructor(e,n=[]){this.interfaceName=e;for(const a of n)this.#i(a);this.#r.sort(_a),this.#n.sort(_a);for(const a of this.#t.values())a.sort(_a)}#i(e){const{ADDRESS:n}=e;if(this.#e.set(n,e),pr(e)){this.#n.push(n);const a=this.#t.get(e.PARENT);a?a.push(n):this.#t.set(e.PARENT,[n])}else this.#r.push(n);for(const a of Tn(e.LINK_SOURCE_ROLES))vo(this.#a,a,n);for(const a of Tn(e.LINK_TARGET_ROLES))vo(this.#s,a,n)}get size(){return this.#e.size}has(e){return this.#e.has(e)}get(e){return this.#e.get(e)}require(e){const n=this.#e.get(e);if(!n)throw new Error(`unknown address ${e} on interface ${this.interfaceName}`);return n}devices(){return this.#r.map(e=>this.require(e))}channels(){return this.#n.map(e=>this.require(e))}all(){return[...this.#e.values()].sort((e,n)=>_a(e.ADDRESS,n.ADDRESS))}childrenOf(e){const n=this.#t.get(e);return n?n.map(s=>this.require(s)):(this.#e.get(e)?.CHILDREN??[]).map(s=>this.#e.get(s)).filter(s=>s!==void 0)}parentOf(e){const n=this.#e.get(e);if(!(!n||!pr(n)))return this.#e.get(n.PARENT)}maintenanceChannelOf(e){const n=Ar(e);if(n)return this.#e.get(`${n.device}:${sd}`)}isCentral(e){const n=this.#e.get(e);if(!n)return!1;if(Ss(n.TYPE))return!0;const a=n.PARENT_TYPE??this.parentOf(e)?.TYPE;return a!==void 0&&Ss(a)}centralDevices(){return this.devices().filter(e=>Ss(e.TYPE))}sourceRole(e){return[...this.#a.get(e)??[]]}targetRole(e){return[...this.#s.get(e)??[]]}sourceRoles(){return[...this.#a.keys()].sort()}targetRoles(){return[...this.#s.keys()].sort()}paramsetIdentity(e,n){const a=this.#e.get(e);if(!a)return;if(!pr(a))return Ua(this.interfaceName,a,n);const s=this.parentOf(e);if(s)return Ua(this.interfaceName,a,n,s)}}function vo(r,e,n){const a=r.get(e);a?a.push(n):r.set(e,[n])}const fo={SENDER_BROKEN:1,RECEIVER_BROKEN:2};function Hs(r){const e=typeof r=="number"?r:0,n=(e&fo.SENDER_BROKEN)!==0,a=(e&fo.RECEIVER_BROKEN)!==0;return{senderBroken:n,receiverBroken:a,broken:n||a,unknownBits:e&-4}}function od(r){return pr(r)&&!Yn(r.ADDRESS)&&Tn(r.LINK_SOURCE_ROLES).length>0}function ah(r){return pr(r)&&!Yn(r.ADDRESS)&&Tn(r.LINK_TARGET_ROLES).length>0}function sh(r,e){if(!od(r)||!ah(e))return[];const n=new Set(Tn(e.LINK_TARGET_ROLES));return Tn(r.LINK_SOURCE_ROLES).filter(a=>n.has(a))}function ih(r,e){return r.ADDRESS!==e.ADDRESS&&sh(r,e).length>0}function oh(r){return r.channels().filter(e=>od(e))}function bi(r){return typeof r=="object"&&r!==null&&"explicitDouble"in r&&typeof r.explicitDouble=="number"}function ho(r){return typeof r=="number"?r:bi(r)?r.explicitDouble:void 0}function lh(r,e){const n=ho(r),a=ho(e);return n!==void 0||a!==void 0?n===a:r===e}const mo={abortDeleteDevice:{name:"abortDeleteDevice",params:[{name:"address",type:"device_address"}],returns:"void",help:{de:"Diese Methode bricht einen anhängigen Löschvorgang für ein Gerät ab.<br>Es können nur Löschvorgänge abgebrochen werden, die mit dem Flag DELETE_FLAG_DEFER ausgeführt wurden."}},activateLinkParamset:{name:"activateLinkParamset",params:[{name:"address",type:"channel_address"},{name:"peer_address",type:"channel_address"},{name:"long_press",type:"boolean"}],returns:"void",help:{de:"Mit dieser Methode wird ein Link-Parameterset aktiviert. Das logische Gerät verhält sich dann so als ob es direkt von dem entsprechenden zugeordneten Gerät angesteuert worden wäre. Hiermit kann z.B. ein Link-Parameter-Set getestet werden. Der Parameter address ist die Addresses des anzusprechenden logischen Gerätes. Der Parameter peer_address ist die Addresse des Kommunikationspartners, dessen Link-Parameter-Set aktiviert werden soll. Der Parameter long_press gibt an, ob das Parameterset für den langen Tastendruck aktiviert werden soll."}},addDevice:{name:"addDevice",params:[{name:"address",type:"string"},{name:"mode",type:"integer",optional:["rfd"]}],returns:"DeviceDescription",help:{de:"Diese Methode lernt ein Gerät anhand seiner Seriennummer an die CCU an. Diese Funktion wird nicht von jedem Gerät unterstützt. Rückgabewert ist die DeviceDescription des neu angelernten Geräts.<br>Der optionale Parameter mode bestimmt die Art des Installations-Modus:<br>1 = Normaler Installations-Modus<br>2 = Während des Anlernens werden in den Parametersets „MASTER“ default Parameter gesetzt und alle bestehenden Verknüpfungen werden gelöscht."}},addLink:{name:"addLink",params:[{name:"sender",type:"channel_address"},{name:"receiver",type:"channel_address"},{name:"name",type:"string",optional:["rfd","hs485d"]},{name:"description",type:"string",optional:["rfd","hs485d"]}],returns:"void",help:{de:"Diese Methode erstellt eine Kommunikationsbeziehung zwischen zwei logischen Geräten. Die Parameter sender und receiver bezeichnen die beiden zu verknüpfenden Partner. Die Parameter name und description sind optional und beschreiben die Verknüpfung näher."}},addVirtualDeviceInstance:{name:"addVirtualDeviceInstance",params:[],returns:"",help:{de:"leider nicht von eQ-3 dokumentiert."}},changeKey:{name:"changeKey",params:[{name:"passphrase",type:"string"}],returns:"void",help:{de:"Diese Methode ändert den vom Schnittstellenprozess verwendeten AES-Schlüssel. Der Schlüssel wird ebenfalls in allen angelernten Geräten getauscht."}},clearConfigCache:{name:"clearConfigCache",params:[{name:"address",type:"device_address"}],returns:"void",help:{de:"Diese Methode löscht alle zu einem Gerät in der CCU gespeicherten Konfigurationsdaten. Diese werden nicht sofort wieder vom Gerät abgefragt, sondern wenn sie das nächste mal benötigt werden."}},deleteDevice:{name:"deleteDevice",params:[{name:"address",type:"device_address"},{name:"flags",type:"integer",bitmask:{1:"DELETE_FLAG_RESET",2:"DELETE_FLAG_FORCE",4:"DELETE_FLAG_DEFER"}}],returns:"DeviceDescription",help:{de:"Diese Methode löscht ein Gerät aus dem Schnittstellenprozess.<br>Der Parameter address ist die Addresse des zu löschenden Gerätes.<br>Flags ist ein bitweises oder folgender Werte:<ul><li>DELETE_FLAG_RESET Das Gerät wird vor dem Löschen in den Werkszustand zurückgesetzt </li><li>DELETE_FLAG_FORCE Das Gerät wird auch gelöscht, wenn es nicht erreichbar ist </li><li>DELETE_FLAG_DEFER Wenn das Gerät nicht erreichbar ist, wird es bei nächster Gelegenheit gelöscht</li></ul>Bei Homematic IP sind die Flags 0x01 und 0x04 nicht mehr vorhanden und das Löschen von Geräten ist per Default so, als wenn diese Flags gesetzt worden wären."}},determineParameter:{name:"determineParameter",params:[{name:"address",type:"device_address"},{name:"paramset_key",type:"string"},{name:"parameter_id",type:"string"}],returns:"void",help:{de:"Mit dieser Methode wird ein Parameter eines Parameter-Sets automatisch bestimmt. Der Parameter kann bei erfolgreicher Ausführung anschließend sofort über getParamset gelesen werden.<br>Der Parameter address ist die Addresses eines logischen Gerätes.<br>Der Parameter paramset_key ist „MASTER“, „VALUES“ oder die Adresse eines Kommunikationspartners für das entsprechende Link-Parameter-Set (siehe getLinkPeers). Der Parameter parameter_id bestimmt den automatisch zu bestimmenden Parameter."}},getDeviceDescription:{name:"getDeviceDescription",params:[{name:"address",type:"device_address"}],returns:"DeviceDescription",help:{de:"Diese Methode gibt die Gerätebeschreibung des als address übergebenen Gerätes zurück."}},getInstallMode:{name:"getInstallMode",params:[],returns:"Integer",help:{de:"Diese Methode gibt die verbliebene Restzeit in Sekunden im Anlernmodus zurück. Der Wert 0 bedeutet, der Anlernmodus ist nicht aktiv."}},getKeyMismatchDevice:{name:"getKeyMismatchDevice",params:[{name:"reset",type:"bool"}],returns:"String",help:{de:"Diese Methode gibt die Seriennummer des letzten Gerätes zurück, das aufgrund eines falschen AES-Schlüssels nicht angelernt werden konnte. Mit reset=true wird diese Information im Schnittstellenprozess zurückgesetzt."}},getLGWStatus:{name:"getLGWStatus",params:[],returns:"",help:{de:"Gibt den Status des Wired-LAN-Gateways zurück."}},getLinkInfo:{name:"getLinkInfo",params:[{name:"sender",type:"device_address"},{name:"receiver",type:"device_address"}],returns:"Array",help:{de:"Diese Methode gibt den Namen und die Beschreibung für eine bestehende Kommunikationsbeziehung zurück. Die Parameter sender_address und receiver_address bezeichnen die beiden verknüpften Partner."}},getLinkPeers:{name:"getLinkPeers",params:[{name:"address",type:"device_address"}],returns:"",help:{de:"Diese Methode gibt alle einem logischen Gerät zugeordneten Kommunikationspartner zurück. Die zurückgegebenen Werte können als Parameter paramset_key für getParamset() und putParamset() verwendet werden. Der Parameter address ist die Adresse eines logischen Gerätes."}},getLinks:{name:"getLinks",params:[{name:"address",type:"address"},{name:"flags",type:"integer",optional:["rfd","hs485d"],bitmask:{1:"GL_FLAG_GROUP",2:"GL_FLAG_SENDER_PARAMSET",4:"GL_FLAG_RECEIVER_PARAMSET"}}],returns:"Array",help:{de:"Diese Methode gibt alle einem logischen Kanal oder Gerät zugeordneten Kommunikationsbeziehungen zurück.<br>Der Parameter address ist die Kanal- oder Geräteadresse des logischen Objektes, auf das sich die Abfrage bezieht. Bei address==&quot;&quot; werden alle Kommunikationsbeziehungen des gesamten Schnittstellenprozesses zurückgegeben.<br>Der Parameter flags ist ein bitweises oder folgender Werte:<ul><li>GL_FLAG_GROUP Wenn address einen Kanal bezeichnet, der sich in einer Gruppe befindet, werden die Kommunikationsbeziehungen für alle Kanäle der Gruppe zurückgegeben.</li><li>GL_FLAG_SENDER_PARAMSET Das Feld SENDER_PARAMSET des Rückgabewertes wird gefüllt. </li><li>GL_FLAG_RECEIVER_PARAMSET Das Feld RECEIVER_PARAMSET des Rückgabewertes wird gefüllt.</li></ul>flags ist optional. Defaultwert ist 0x00."}},getMetadata:{name:"getMetadata",params:[{name:"object_id",type:"string"},{name:"data_id",type:"string"}],returns:"Variant",help:{de:"Diese Methode gibt ein Metadatum zu einem Objekt zurück.<br><b>object_id</b> ist die Id des Metadaten-Objekts. Üblicherweise ist dies die Seriennummer eines Gerätes oder Kanals.<br><b>data_id</b> ist die Id des abzufragenden Metadatums. Diese Id kann frei gewählt werden. Der Rückgabewert entspricht in Datentyp und Wert der zuvor an setMetadata() als Parameter value übergebenen Variablen. "}},getAllMetadata:{name:"getAllMetadata",params:[{name:"object_id",type:"string"}],returns:"Struct",help:{de:"Diese Methode gibt alle zuvor gesetzten Metadaten zu einem Objekt zurück.<br><b>object_id</b> ist die Id des Metadaten-Objekts. Üblicherweise ist dies die Seriennummer eines Gerätes oder Kanals. Durch Übergabe einer beliebigen Id können aber auch eigene Metadaten-Objekte angelegt werden.<br>Der Rückgabewert ist ein Struct, der zu jedem zuvor gesetzten Metadatum ein Feld enthält. Der Feldname ist der zuvor an setMetadata() als Parameter data_id übergebene Wert. Der Wert des Feldes entspricht in Datentyp und Wert der zuvor an setMetadata() als Parameter value übergebenen Variablen. "}},getParamset:{name:"getParamset",params:[{name:"address",type:"address"},{name:"paramset_key",type:"string"},{name:"mode",type:"integer",optional:["rfd"]}],returns:"",help:{de:"Mit dieser Methode wird ein komplettes Parameter-Set für ein logisches Gerät gelesen. Der Parameter address ist die Addresses eines logischen Gerätes. Der Parameter paramset_key ist „MASTER“, „VALUES“ oder die Adresse eines Kommunikationspartners für das entsprechende Link-Parameter-Set (siehe getLinkPeers).<br>Dem optionalen Parameter mode können folgende Werte übergeben werden (nur rfd):<ul><li>0 default: Keien Auswirkung, die Funktion verhält sicht wie der Aufruf ohne mode</li><li>1 UndefinedValues: Jeder Eintrag innerhalb des zurückgelieferten Paramset ins eine Struktur mit folgendem Aufbau:<br>„UNDEFINED“(Boolean) Flag ob der angeforderte Wert initial gesetzt wurde und somit wahrscheinlich nicht der Realität entspricht oder ob der Wert von einem Gerät empfangen wurde, true = Wert wurde initial gesetzt und noch nicht verändert, false = der Wert wurde neu gesetzt <br>„VALUE“(ValueType) Wert des angeforderten Parameter.<br>UndefindeValues kann nur für Parameter aus dem Parameterset „VALUES“ abgefragt werden. Bei HomeMatic IP gibt es für bestimmte Geräte zusätzlich den paramset_type„SERVICE“, welche Geräte dies sind, ist der jeweiligen DeviceDescription zu entnehmen.Ebenso ist dieses Parameter Set kanalübergreifend, so dass es über die XML-RPCSchnittstellefür alle Kanäle abgefragt werden kann, aber immer dieselben Parameterzurückliefert.<br>Hinweis: Diese Parameter werden bei jeder Anfrage direkt vom Gerät abgefragt, deshalbsollten sie wegen der DutyCycle Belastung nicht sehr häufig abgefragt werden."}},getParamsetDescription:{name:"getParamsetDescription",params:[{name:"address",type:"address"},{name:"paramset_type",type:"paramset_type"}],returns:"",help:{de:"Mit dieser Methode wird die Beschreibung eines Parameter-Sets ermittelt. Der Parameter address ist die Adresse eines logischen Gerätes (z.B. von listDevices zurückgegeben). Der Parameter paramset_type ist „MASTER“, „VALUES“ oder „LINK“.Bei HomeMatic IP gibt es für bestimmte Geräte zusätzlich den paramset_typeSERVICE, welche Geräte dies sind, ist der jeweiligen DeviceDescription zu entnehmen.Ebenso ist dieses Parameter Set kanalübergreifend, so dass es über die XML-RPCSchnittstellefür alle Kanäle abgefragt werden kann, aber immer dieselben Parameter zurückliefert. "}},getParamsetId:{name:"getParamsetId",params:[{name:"address",type:"address"},{name:"type",type:"string"}],returns:"",help:{de:"Diese Methode gibt die Id eines Parametersets zurück. Diese wird verwendet, um spezialisierte Konfigurationsdialoge (Easymode) den Parametersets zuzuordnen."}},getServiceMessages:{name:"getServiceMessages",params:[],returns:"",help:{de:"Diese Methode gibt eine Liste aller vorhandenen Servicemeldungen in Form eines Arrays zurück."}},getValue:{name:"getValue",params:[{name:"address",type:"device_address"},{name:"value_key",type:"string"},{name:"mode",type:"integer",optional:["rfd"]}],returns:"",help:{de:"Mit dieser Methode wird ein einzelner Wert aus dem Parameter-Set „VALUES“ gelesen. Der Parameter address ist die Addresse eines logischen Gerätes. Der Parameter value_key ist der Name des zu lesenden Wertes. Die möglichen Werte für value_key ergeben sich aus der ParamsetDescription des entsprechenden Parameter-Sets „VALUES“.<br>Dem Parameter mode können folgende Werte übergeben werden:<ul><li>0 default: Keien Auswirkung, die Funktion verhält sicht wie der Aufruf ohne mode</li><li>1 UndefinedValues: Es wird ein Struktur zurückgeliefert die folgenden Aufbau hat:<br>„UNDEFINED“(Boolean) Flag ob der angeforderte Wert initial gesetzt wurde und somit wahrscheinlich nicht der Realität entspricht oder ob der Wert von eimen Gerät empfangen wurde, true = Wert wurde initial gesetzt und noch nicht verändert, false = der Wert wurde neu gesetzt<br>„VALUE“(ValueType) Wert des angeforderten Parameter.</li></ul><br>UndefindeValues kann nur für Parameter aus dem Parameterset „VALUES“ abgefragt werden die mit OPERATIONS = Read gekenzeichnet sind."}},getVersion:{name:"getVersion",params:[],returns:"",help:{de:"Liefert die Version des BidCoS-Service."}},listBidcosInterfaces:{name:"listBidcosInterfaces",params:[],returns:"",help:{de:"Diese Methode gibt eine Liste aller vorhandenen BidCoS-Interfaces in Form eines Arrays von Structs zurück"}},listDevices:{name:"listDevices",params:[],returns:"",help:{de:"Diese Methode gibt alle dem Schnittstellenprozess bekannten Geräte in Form von Gerätebeschreibungen zurück."}},listReplaceableDevices:{name:"listReplaceableDevices",params:[{name:"newDeviceAddress",type:"device_address"}],returns:"",help:{de:"Mit dieser Funktionen kann eine Liste der Geräte angefordert werden die durch das übergebene Gerät ersetzt werden können.<br>Über den Parameter newDeviceAddress wird die Adresse des neuen Geräts übergeben für die die möglichen Tauschpartner ermittelt werden sollen."}},listTeams:{name:"listTeams",params:[],returns:"",help:{de:"Diese Methode gibt alle dem Schnittstellenprozess bekannten Teams in Form von Gerätebeschreibungen zurück."}},logLevel:{name:"logLevel",params:[{name:"level",type:"integer",optional:["rfd","hs485d"],values:{0:"LOG_ALL",1:"LOG_DEBUG",2:"LOG_INFO",3:"LOG_NOTICE",4:"LOG_WARNING",5:"LOG_ERROR",6:"LOG_FATAL_ERROR"}}],returns:"",help:{de:"Diese Methode gibt den aktuellen Log-Level zurück bzw. setzt diesen."}},ping:{name:"ping",params:[{name:"callerId",type:"string"}],returns:"bool",help:{de:"Beim Aufruf dieser Funktion wird ein Event (im Folgenden PONG genannt) erzeugt und an alle registrierten Logikschichten versandt. Da das PONG Event an alle registrierten Logikschichten (wie bei allen anderen Events auch) verschickt wird, muss in einer Logikschicht damit gerechnet werden, ein PONG Event zu empfangen ohne zuvor ping aufgerufen zu haben. Der Parameter callerId ist vom Aufrufer zu übergeben und wird als Wert des PONG Events verwendet. Der Inhalt des String ist unerheblich. Tritt während der Verarbeitung keine Exception auf, so wird von der Methode true zurückgegeben. Das PONG Event wird über die event Methode der Logikschicht ausgeliefert. Die Adresse ist dabei immer „CENTRAL“, der key lautet „PONG“ und der Wert ist die im ping Aufrufübergebene callerId"}},putParamset:{name:"putParamset",params:[{name:"address",type:"address"},{name:"paramset_key",type:"string"},{name:"set",type:"paramset"}],returns:"",help:{de:"Mit dieser Methode wird ein komplettes Parameter-Set für ein logisches Gerät geschrieben. Der Parameter address ist die Addresses eines logischen Gerätes. Der Parameter paramset_key ist „MASTER“, „VALUES“ oder die Adresse eines Kommunikationspartners für das entsprechende Link-Parameter-Set (siehe getLinkPeers). Der Parameter set ist das zu schreibende Parameter-Set. In set nicht vorhandene Member werden einfach nicht geschrieben und behalten ihren alten Wert.<br>Bei HomeMatic IP kann address auch die spezielle Adresse ALL_SMOKE_DETECTORS sein, welche für die Übertragung über Funk nicht eine Geräteadresse sondern die Multicast Adresse (0xF00005) für alle Rauchmelder verwendet und somit auch alle in Funkreichweite befindlichen Rauchmelder des Funknetzwerkes diesen ausführen sollten."}},removeLink:{name:"removeLink",params:[{name:"sender",type:"device_address"},{name:"receiver",type:"device_address"}],returns:"",help:{de:"Diese Methode löscht eine Kommunikationsbeziehung zwischen zwei Geräten. Die Parameter sender und receiver bezeichnen die beiden Kommunikationspartner deren Kommunikationszuordnung gelöscht werden soll."}},replaceDevice:{name:"replaceDevice",params:[{name:"oldDeviceAddress",type:"device_address"},{name:"newDeviceAddress",type:"device_address"}],returns:"",help:{de:"Mit dieser Funktion kann ein altes gegen ein neues Gerät ausgetauscht werden. Alle direkten Geräteverknüpfungen und Konfigurationen werden auf das neue Gerät kopiert und das alte Gerät gelöscht. Die Beiden Geräte müssen hinsichtlich ihrer Funktionalität kompatibel sein. Mit der Methode listReplaceableDevice() kann eine List kompatibeler Geräte abgefragt werden. Das neue Gerät muss an dem Schnittstellenprozess angemeldet sein und darf noch nicht in Verknüpfungen verwendet werden. Über die Parameter oldDeviceAddress und newDeviceAddress wird der Methode die Adresse des alten Gerätes und des neuen Gerätes übergeben. Der Rückgabewert ist true wenn der Tausch erfolgreich war, ansonsten false"}},reportValueUsage:{name:"reportValueUsage",params:[{name:"address",type:"channel_address"},{name:"value_id",type:"string"},{name:"ref_counter",type:"integer"}],returns:"",help:{de:"Diese Methode teilt dem Interfaceprozess in ref_counter mit, wie oft der Wert value_id des Kanals address innerhalb der Logikschicht (z.B. in Programmen) verwendet wird. Dadurch kann der Interfaceprozess die Verbindung mit der entsprechenden Komponente herstellen bzw. löschen. Diese Funktion sollte bei jeder Änderung aufgerufen werden.<br>Der Rückgabewert ist true, wenn die Aktion sofort durchgeführt wurde. Er ist false, wenn die entsprechende Komponente nicht erreicht werden konnte und vom Benutzer zunächst in den Config-Mode gebracht werden muss. Der Interfaceprozess hat dann aber die neue Einstellung übernommen und wird sie bei nächster Gelegenheit automatisch an die Komponente übertragen. In diesem Fall ist dann auch der Wert CONFIG_PENDING im Kanal MAINTENANCE der Komponente gesetzt."}},restoreConfigToDevice:{name:"restoreConfigToDevice",params:[{name:"address",type:"device_address"}],returns:"",help:{de:"Diese Methode überträgt alle zu einem Gerät in der CCU gespeicherten Konfigurationsdaten erneut an das Gerät."}},rssiInfo:{name:"rssiInfo",params:[],returns:"",help:{de:"Gibt ein zweidimensionales assoziatives Array zurück, dessen Schlüssel die Geräteadressen sind. Die Felder des assoziativen Arrays sind Tupel, die die Empfangsfeldstärken zwischen beiden Schlüsselgeräten für beide Richtungen in dbm angeben. ein Wert von 65536 bedeutet, dass keine Informationen vorliegen.<ul><li>Rückgabewert[<Gerät 1>][<Gerät 2>][0] Empfangsfeldstärke an Gerät 1 für Sendungen von Gerät 2</li><li>Rückgabewert[<Gerät 1>][<Gerät 2>][1] Empfangsfeldstärke an Gerät 2 für Sendungen von Gerät 1</li></ul>"}},searchDevices:{name:"searchDevices",params:[],returns:"",help:{de:"Diese Methode durchsucht den Bus nach neuen Geräten und gibt die Anzahl gefundener Geräte zurück. Die neu gefundenen Geräte werden mit newDevices der Logikschicht gemeldet."}},setBidcosInterface:{name:"setBidcosInterface",params:[{name:"device_address",type:"device_address"},{name:"interface_address",type:"interface_address"},{name:"roaming",type:"boolean"}],returns:"",help:{de:"Diese Methode setzt das für die Kommunikation mit dem durch device_address spezifizierten Gerät verwendete Bidcos-Interface. Die Seriennummer des in Zukunft für die Kommunikation mit diesem Gerät zu verwendenden Interfaces wird in interface_address übergeben. Ist der Parameter roaming gesetzt, so wird die Interfacezuordnung für das Gerät automatisch in Abhängigkeit von der Empfangsfeldstärke angepasst. Das ist für nicht ortsfeste Geräte wie Fernbedienungen sinnvoll."}},setInstallMode:{name:"setInstallMode",params:[{name:"on",type:"boolean"},{name:"time",type:"integer",optional:["rfd"]},{name:"mode",type:"integer",optional:["rfd"]}],returns:"",help:{de:"Diese Methode aktiviert und deaktiviert den Installations-Modus, in dem neue Geräte an der HomeMatic-CCU angemeldet werden können.<br>Der Parameter on bestimmt, ob der Installations-Modus aktiviert oder deaktiviert werden soll.<br>Der Parameter time bestimmt die Zeit in Sekunden die der Installations-Modus aktiviert ist<br>Der Parameter mode bestimmt die Art des Installations-Modus:<ul><li>1 = Normaler Installations-Modus</li><li>2 = Während des Anlernens werden in den Parametersets „MASTER“ default Parameter gesetzt und alle bestehenden Verknüpfungen werden gelöscht.</li></ul>"}},setInterfaceClock:{name:"setInterfaceClock",params:[{name:"utcSeconds",type:"integer"},{name:"offsetMinutes",type:"integer"}],returns:"",help:{de:"Setzt die UTC Zeit für alle Interfaces, die dies benötigen.<br>Mit dem Parameter utcSeconds werden die Sekunden seti 01.01.1970 00:00 Uhr (UTC) gesetzt.<br>Über den Parameter offsetMinutes wird der Offset in Minuten entsprechend der jeweiligen Zeitzone übergeben.<br>Der Rückgabewert der Methode ist false im Fehlerfall, ansonsten true."}},setLinkInfo:{name:"setLinkInfo",params:[{name:"sender",type:"channel_address"},{name:"receiver",type:"channel_address"},{name:"name",type:"string"},{name:"description",type:"string"}],returns:"",help:{de:"Diese Methode ändert die beschreibenden Texte einer Kommunikationsbeziehung. Die Spezifikation Parameter sender und receiver bezeichnen die beiden zu verknüpfenden Partner. Die Parameter name und description beschreiben die Verknüpfung textuell."}},setMetadata:{name:"setMetadata",params:[{name:"object_id",type:"string"},{name:"data_id",type:"string"},{name:"value",type:"variant"}],returns:"void",help:{de:"Diese Methode setzt ein Metadatum zu einem Objekt.<br><b>object_id</b> ist die Id des Metadaten-Objekts. Üblicherweise ist dies die Seriennummer eines Gerätes oder Kanals. Durch Übergabe einer beliebigen Id können aber auch eigene Metadaten-Objekte angelegt werden. <br><b>data_id</b> ist die Id des zu setzenden Metadatums. Diese Id kann frei gewählt werden. <br><b>value</b> ist eine beliebige Variable. Diese wird gespeichert und kann später mittels getMetadata() und getAllMetadata() wieder abgefragt werden."}},setRFLGWInfoLED:{name:"setRFLGWInfoLED",params:[{name:"mode",type:"integer",optional:["rfd"],values:{0:"OFF",1:"ON",2:"FLASH_SLOW",3:"FLASH_FAST"}}],returns:"",help:{de:"Steuert die LED von verbundenen LAN Gateways (HMLGW2) an."}},setTeam:{name:"setTeam",params:[{name:"channel_address",type:"channel_address"},{name:"team_address",type:"team_address"}],returns:"",help:{de:"Diese Methode fügt den Kanal channel_address zum Team team_address hinzu. Bei team_address==““ wird der Kanal channel_address seinem eigenen Team zugeordnet. Dabei muss team_address entweder leer sein (““) oder eine Seriennummer eines existierenden Teams enthalten. Teams werden dabei je nach Bedarf erzeugt und gelöscht."}},setTempKey:{name:"setTempKey",params:[{name:"passphrase",type:"string"}],returns:"",help:{de:"Diese Methode ändert den von der CCU verwendeten temporären AES-Schlüssel. Der temporäre AES-Schlüssel wird verwendet, um ein Gerät anzulernen, in dem ein anderer Schlüssel gespeichert ist als der Schlüssel der CCU."}},setValue:{name:"setValue",params:[{name:"address",type:"channel_address"},{name:"value_key",type:"value_key"},{name:"value",type:"mixed"}],returns:"",help:{de:"Mit dieser Methode wird ein einzelner Wert aus dem Parameter-Set „VALUES“ geschrieben. Der Parameter address ist die Addresse eines logischen Gerätes. Der Parameter value_key ist der Name des zu schreibenden Wertes. Die möglichen Werte für value_key ergeben sich aus der ParamsetDescription des entsprechenden Parameter-Sets „VALUES“. Der Parameter value ist der zu schreibende Wert.<br>Bei HomeMatic IP kann address auch die spezielle Adresse ALL_SMOKE_DETECTORS sein, welche für die Übertragung über Funk nicht eine Geräteadresse sondern die Multicast Adresse (0xF00005) für alle Rauchmelder verwendet und somit auch alle in Funkreichweite befindlichen Rauchmelder des Funknetzwerkes diesen ausführen sollten."}},"system.listMethods":{name:"system.listMethods",params:[],returns:"",help:{}},"system.methodHelp":{name:"system.methodHelp",params:[{name:"method",type:"string"}],returns:"",help:{}},updateFirmware:{name:"updateFirmware",params:[{name:"device",type:"device_address"}],returns:"",help:{de:"Diese Methode führt ein Firmware-Update für das in device angegebene Gerät durch. Das Gerät wird durch seine Seriennummer spezifiziert. Der Rückgabewert gibt an, ob das Firmware-Update erfolgreich war."}},installFirmware:{name:"installFirmware",params:[{name:"device",type:"device_address"}],returns:"boolean",help:{de:"Mit dieser Methode teilt die Logikschicht dem Schnittstellenprozess mit, dass ein Gerät die über Background OTAU aufgespielte Firmware aktiveren soll."}},setInstallModeWithWhitelist:{name:"setInstallModeWithWhitelist",params:[{name:"on",type:"boolean"},{name:"time",type:"integer"},{name:"whitelistValues",type:"RpcStruct[]"}],returns:"void",help:{de:"Mit dieser Methode teilt die Logikschicht dem Schnittstellenprozess mit, dass ein oder mehrere Geräte über die Whitelist für die Inkludierung freigeschaltet werden sollen für den angegebenen Zeitraum. <ul><li>on, gibt an ob die Install Mode aktiviert oder deaktiviert werden soll. Wenn der Wert „false“ ist haben die weiteren Parameter keine Auswirkung auf die Aktion. </li><li> time, gibt die Zeit in Sekunden an, nach der der Install Mode deaktiviert werden soll. Der Defaultwert ist 30 Sekunden. </li><li>whiteListValues, gibt die Geräte an, die inkludiert werden sollen, dies ist ein Array aus RPC Structs, welche folgende Daten haben: <ul><li> ADDRESS, gibt die SGTIN bzw. ID des Gerätes an, das inkludiert werden soll. </li><li> KEY_MODE, gibt den Typen des Keys an, der für die Inklusion verwendet werden soll. Dieser Wert ist ein String mit folgenden unterstützten Werten: <ul><li>LOCAL </li><li>MASTER und DEFAULT werden zur Zeit vom crRFD noch nicht unterstützt</li></ul> </li><li> KEY, gibt den zu verwendenden Geräteschlüssel an, der bei der Inklusion verwendet werden soll. Dieser Wert ist der Hexstring des 16 Byte langen Schlüssels </li></ul></li></ul> Wenn der KEY_MODE oder KEY nicht angegeben ist wird der Master Key vom Key-Server für die Inklusion versucht zu nutzten. Die Whitelist wird beim Ablauf des Install Mode zurückgesetzt."}}};function dh(r){return Object.prototype.hasOwnProperty.call(mo,r)?mo[r]:void 0}function ch(r){return{name:r,params:[],returns:"",help:{}}}const uh={WRITE:2};function sn(r){return(r.OPERATIONS&uh.WRITE)!==0}function Ln(r){if(!r)return;const e=r.VALUE_LIST;return Array.isArray(e)?e:void 0}function ld(r,e){const n=Ln(r)?.indexOf(e)??-1;return n===-1?void 0:n}function Nt(r,e){const n=r[e];if(typeof n=="number")return n;if(typeof n=="string"&&r.TYPE==="ENUM")return ld(r,n)}function vh(r,e){if(!(typeof e!="number"||!r.SPECIAL))return r.SPECIAL.find(n=>n.VALUE===e)}function fh(r,e){return vh(r,e)!==void 0}function dd(r){return Object.keys(r).sort((e,n)=>{const a=r[e]?.TAB_ORDER??Number.MAX_SAFE_INTEGER,s=r[n]?.TAB_ORDER??Number.MAX_SAFE_INTEGER;return a!==s?a-s:e<n?-1:1})}const cd="100%",hh="�C",mh="°C",ph="°C";function Va(r){const e=r?.UNIT;return e===void 0||e===""||e==='""'?"":e===cd?"%":e===hh||e===mh?ph:e}function gh(r){return r?.UNIT===cd}function ud(r){return gh(r)?100:1}function $r(r,e){if(r!==void 0)return vd(r*ud(e))}function _h(r,e){if(r!==void 0)return vd(r/ud(e))}function vd(r){return Number.isFinite(r)?Number.parseFloat(r.toPrecision(10)):r}const bh=[.1,1,5,10,60,300,600,3600],po=["BASE_100_MS","BASE_1_S","BASE_5_S","BASE_10_S","BASE_1_M","BASE_5_M","BASE_10_M","BASE_1_H"],Eh=31,Sh="NOT_USED";function fd(r){return r?.SPECIAL?.find(e=>e.ID===Sh)?.VALUE}function Ei(r){return Math.round(r*10)/10}const yh={"10MS":.01,"100MS":.1,S:1,"1S":1,"5S":5,"10S":10,M:60,"1M":60,"5M":300,"10M":600,H:3600,"1H":3600,D:86400},go="_BASE",Ah="_FACTOR",_o="_UNIT",Th="_VALUE",bo="_TIME";function Si(r){const e=[];for(const[n,a]of Object.entries(r)){const s=Rh(r,n,a)??Ih(r,n,a);s&&e.push(s)}return e}function hd(r,e){return wh(r[e.unitParam],r[e.countParam],e)}function wh(r,e,n){const a=kh(r,n),s=a===void 0?void 0:n.units[a],i=typeof e=="number"?e:Number.NaN;if(!(a===void 0||s===void 0||!Number.isInteger(i)||i<0||i>n.maxCount))return{seconds:Ei(s.seconds*i),unitIndex:a,unitSeconds:s.seconds,count:i,maximal:a===n.units.length-1&&i===n.maxCount}}function kh(r,e){if(typeof r=="number"&&Number.isInteger(r)&&r>=0&&r<e.units.length)return r;if(typeof r=="string"){const n=e.units.findIndex(a=>a.name===r);return n===-1?void 0:n}}function md(r,e){if(!Number.isFinite(r)||r<0||e.units.length===0)return;let n,a=Number.POSITIVE_INFINITY;for(const[s,i]of e.units.entries()){const o=Math.min(e.maxCount,Math.max(0,Math.round(r/i.seconds))),l=Ei(i.seconds*o),d=Math.abs(l-r);d<a&&(a=d,n={seconds:l,unitIndex:s,unitSeconds:i.seconds,count:o,maximal:s===e.units.length-1&&o===e.maxCount,exact:d===0})}return n}function pd(r,e){const n=md(r,e);if(n)return{[e.unitParam]:n.unitIndex,[e.countParam]:n.count}}function gd(r){const e=r.units.at(-1);return e===void 0?0:Ei(e.seconds*r.maxCount)}function Rh(r,e,n){if(!e.endsWith(go))return;const a=e.slice(0,-go.length),s=`${a}${Ah}`,i=r[s];if(!i)return;const o=_d(Ln(n)??po,l=>bh[po.indexOf(l)]);if(o)return{name:a.endsWith(bo)?a.slice(0,-bo.length):a,kind:"base-factor",unitParam:e,countParam:s,units:o,maxCount:Nt(i,"MAX")??Eh}}function Ih(r,e,n){if(!e.endsWith(_o))return;const a=e.slice(0,-_o.length),s=`${a}${Th}`,i=r[s],o=Ln(n);if(!i||!o||o.length===0)return;const l=Nt(i,"MAX"),d=_d(o,h=>yh[h]);if(!(l===void 0||!d))return{name:a,kind:"unit-value",unitParam:e,countParam:s,units:d,maxCount:l}}function _d(r,e){const n=[];for(const a of r){const s=e(a);if(s===void 0)return;n.push({name:a,seconds:s})}return n}const Dh=new Set;function Nh(r){return Dh.has(r)?"name":"index"}function Ws(r,e,n={}){const a=bi(r)?r.explicitDouble:r;if(!e)return typeof a=="boolean"||typeof a=="string"?a:String(a);switch(e.TYPE){case"ACTION":case"BOOL":return xh(a);case"FLOAT":{const s=yi(Ed(Number.parseFloat(String(a))),e,n);return n.explicitDouble===!1?s:{explicitDouble:s}}case"ENUM":return Ch(a,e,n);case"INTEGER":return bd(a,e,n);case"STRING":return String(a);default:return String(a)}}function xh(r){if(r==="false")return!1;if(typeof r=="string"){const e=Number(r);return Number.isNaN(e)?!0:e!==0}return!!r}function Ch(r,e,n){const a=Ln(e);if(!a)return bd(r,e,n);if(typeof r=="string"){const i=ld(e,r);if(i!==void 0)return n.enumAs==="name"?r:i}const s=Ph(r);return s===void 0?String(r):n.enumAs==="name"?a[s]??String(r):yi(s,e,n)}function Ph(r){if(typeof r=="boolean")return Number(r);const e=Number.parseInt(String(r),10);return Number.isFinite(e)?e:void 0}function bd(r,e,n){return typeof r=="boolean"?Number(r):yi(Lh(r),e,n)}function Lh(r){return Ed(Number.parseInt(String(r),10))}function Ed(r){return Number.isFinite(r)?r:0}function yi(r,e,n){if(n.clamp!==!0)return r;const a=typeof e.MIN=="number"?e.MIN:void 0,s=typeof e.MAX=="number"?e.MAX:void 0;return a!==void 0&&r<a?a:s!==void 0&&r>s?s:r}const Mh=255;function ys(r,e,n,a={}){if(!n)return[Gt(r,"unknown-parameter",`${r} is not part of this paramset`)];if(a.requireWritable!==!1&&!sn(n))return[Gt(r,"not-writable",`${r} is read-only (OPERATIONS ${n.OPERATIONS})`)];const s=bi(e)?e.explicitDouble:e;switch(n.TYPE){case"BOOL":case"ACTION":return typeof s=="boolean"?[]:[Gt(r,"wrong-type",`${r} expects a boolean, got ${Xr(s)}`)];case"INTEGER":return Eo(r,s,n,!0);case"FLOAT":return Eo(r,s,n,!1);case"ENUM":return Oh(r,s,n);case"STRING":return Fh(r,s,a);default:return typeof s=="object"?[Gt(r,"wrong-type",`${r} expects a scalar, got ${Xr(s)}`)]:[]}}function Eo(r,e,n,a){return typeof e!="number"?[Gt(r,"wrong-type",`${r} expects a number, got ${Xr(e)}`)]:Number.isFinite(e)?a&&!Number.isInteger(e)?[Gt(r,"wrong-type",`${r} expects a whole number, got ${e}`)]:fh(n,e)?[]:Sd(r,e,n):[Gt(r,"not-finite",`${r} is ${e}, which XML-RPC cannot encode`)]}function Oh(r,e,n){const a=Ln(n);return typeof e=="string"?a?a.includes(e)?[]:[Gt(r,"not-in-value-list",`${r} does not accept ${e}`,a.join(", "))]:[Gt(r,"not-in-value-list",`${r} has no VALUE_LIST to resolve ${e} against`)]:typeof e!="number"||!Number.isInteger(e)?[Gt(r,"wrong-type",`${r} expects an enum name or index, got ${Xr(e)}`)]:a&&(e<0||e>=a.length)?[Gt(r,"not-in-value-list",`${r} has no value at index ${e}`,a.length-1)]:Sd(r,e,n)}function Fh(r,e,n){if(typeof e!="string")return[Gt(r,"wrong-type",`${r} expects a string, got ${Xr(e)}`)];const a=n.maxStringLength??Mh;return e.length>a?[Gt(r,"string-too-long",`${r} is longer than ${a} characters`,a)]:[]}function Sd(r,e,n){const a=Nt(n,"MIN"),s=Nt(n,"MAX");return a!==void 0&&e<a?[Gt(r,"below-min",`${r} is below its minimum of ${a}`,a)]:s!==void 0&&e>s?[Gt(r,"above-max",`${r} is above its maximum of ${s}`,s)]:[]}function Gt(r,e,n,a){return a===void 0?{param:r,code:e,message:n}:{param:r,code:e,message:n,limit:a}}function Xr(r){return r===null?"null":typeof r}function Gh(r,e,n,a={}){const s={},i=[],o=[],l=[],d=a.writeAll===!0,h=a.enumAs===void 0?{}:{enumAs:a.enumAs},g=a.maxStringLength===void 0?{}:{maxStringLength:a.maxStringLength};for(const b of Uh(e,n,d)){const y=n[b];if(!y){l.push(...ys(b,e[b],void 0)),o.push({param:b,reason:"unknown-parameter"});continue}const S=Object.prototype.hasOwnProperty.call(e,b);if(!sn(y)){S&&l.push(...ys(b,e[b],y)),o.push({param:b,reason:"not-writable"});continue}const E=S?e[b]:r[b]??y.DEFAULT,_=Ws(E,y,h);if(!d&&Vh(r,b,E,y,h)){o.push({param:b,reason:"unchanged"});continue}const T=ys(b,_,y,g);if(T.length>0){l.push(...T),o.push({param:b,reason:"invalid"});continue}s[b]=_,i.push(b)}return{values:s,changed:i,skipped:o,problems:l}}function Uh(r,e,n){if(!n)return Object.keys(r);const a=Object.keys(e);for(const s of Object.keys(r))s in e||a.push(s);return a}function Vh(r,e,n,a,s){if(!Object.prototype.hasOwnProperty.call(r,e))return!1;const i={...s,explicitDouble:!1};return lh(Ws(r[e],a,i),Ws(n,a,i))}function Bh(r,e,n,a){const s=r.paramsetIdentity(e,n);if(s===void 0)throw new Error(`no paramset identity for ${e} ${n} on ${r.interfaceName}`);const i=[],o=[];for(const l of a??r.all().map(d=>d.ADDRESS)){if(l===e){o.push({address:l,reason:"same-channel",identity:s});continue}if(!r.has(l)){o.push({address:l,reason:"unknown-address"});continue}const d=r.paramsetIdentity(l,n);if(d===void 0){o.push({address:l,reason:"no-identity"});continue}d===s?i.push(l):o.push({address:l,reason:"different-identity",identity:d})}return{identity:s,eligible:i,ineligible:o}}const ka="UI_HINT",jn=0,zh={id:jn,key:"expert",name:{de:"Experte",en:"Expert"},description:{de:"Alle Parameter des Verknuepfungs-Parametersatzes",en:"All link paramset parameters"},params:{}};class Hh{#e;constructor(e){this.#e=e}async profilesFor(e,n){const a=await this.#e.receiverTypeAliases(),s=So(e,a),o=[...(await this.#e.receiverProfiles(s))?.senders[n]??[]];return o.some(l=>l.id===jn)||o.push(zh),o.sort((l,d)=>l.id-d.id)}async linkMetadataFor(e,n){const a=await this.#e.receiverTypeAliases();return(await this.#e.receiverProfiles(So(e,a)))?.senderMetadata?.[n]}applyProfile(e,n,a){const s={...n},i=[];for(const[o,l]of Object.entries(e.params)){if(!(o in a)){i.push({param:o,code:"unknown-parameter",message:`profile ${e.key} sets ${o}, which this description does not have`});continue}const d=Wh(l,n[o]);if(d===void 0){i.push({param:o,code:"empty-list",message:`profile ${e.key} offers no value for ${o}`});continue}s[o]=d}return ka in a&&(s[ka]=String(e.id)),{values:s,problems:i}}detectProfile(e,n){const a=e[ka];if(a!==void 0&&a!==""){const o=n.find(l=>String(l.id)===String(a));if(o)return o}let s,i=0;for(const o of n){const l=Object.entries(o.params).filter(d=>d[1].kind==="fixed");l.length!==0&&l.every(([d,h])=>Ai(e[d],h.value))&&l.length>i&&(i=l.length,s=o)}return s}async masterMetadataFor(e,n,a={}){const s=(await this.#e.masterMetadata())[e],i=await this.#e.optionPresets(),o=await this.#e.crossValidations(),l=Kh(n,s).map(([d,h])=>{const g=i[s?.optionPresets?.[d]??""],b={name:d,description:h,visible:Yh(d,s,a)};return g===void 0?b:{...b,preset:g}});return{channelType:e,parameters:l,problems:o.filter(d=>jh(d,n)).filter(d=>!qh(d,a)).map(d=>({id:d.id,errorKey:d.errorKey,params:yd(d)}))}}}function So(r,e){let n=r;const a=new Set([n]);let s=e[n];for(;s!==void 0&&!a.has(s);)n=s,a.add(n),s=e[n];return n}function Wh(r,e){switch(r.kind){case"fixed":return r.value;case"list":return e!==void 0&&r.values.some(n=>Ai(e,n))?e:r.default??r.values[0];case"range":{const n=typeof e=="number"?e:Number(e);return Number.isFinite(n)&&n>=r.min&&n<=r.max?n:r.default??r.min}}}function Ai(r,e){if(r===e)return!0;if(r===void 0||e===void 0)return!1;if(typeof r=="boolean"||typeof e=="boolean")return!!r==!!e;const n=Number(r),a=Number(e);return!Number.isNaN(n)&&!Number.isNaN(a)?n===a:String(r)===String(e)}function Kh(r,e){const n=dd(r),a=new Map((e?.parameterOrder??[]).map((s,i)=>[s,i]));return Object.entries(r).sort(([s],[i])=>{const o=a.get(s),l=a.get(i);return o!==void 0&&l!==void 0?o-l:o!==void 0?-1:l!==void 0?1:n.indexOf(s)-n.indexOf(i)})}function Yh(r,e,n){const a=(e?.conditionalVisibility??[]).filter(s=>s.show.includes(r));return a.length===0?!0:a.some(s=>Ai(n[s.trigger],s.triggerValue))}function yd(r){return r.rule==="between"?[r.param,r.minParam,r.maxParam]:[r.paramA,r.paramB]}function jh(r,e){return yd(r).every(n=>n in e)}function qh(r,e){if(r.rule==="between"){const s=Number(e[r.param]),i=Number(e[r.minParam]),o=Number(e[r.maxParam]);return!Number.isFinite(s)||!Number.isFinite(i)||!Number.isFinite(o)?!0:s>=i&&s<=o}const n=Number(e[r.paramA]),a=Number(e[r.paramB]);return!Number.isFinite(n)||!Number.isFinite(a)?!0:r.rule==="gte"?n>=a:n<=a}const $h="ERROR",Xh=["STICKY_UNREACH","SABOTAGE"];function Ba(r){return Xh.includes(r)||r.startsWith($h)}const Qh=65536,Zh=-100,Jh=-20;function za(r){if(!(typeof r!="number"||!Number.isFinite(r)||r===Qh))return r}function em(r){const e={};for(const[n,a]of Object.entries(r)){const s={};for(const[i,o]of Object.entries(a))s[i]=rm(za(o[0]),za(o[1]));e[n]=s}return e}function tm(r){const e=za(r);return e===void 0?"unknown":e>=Jh?"good":e>=Zh?"medium":"bad"}const yo=["RSSI_DEVICE","RSSI_PEER"];class nm{#e={};#r;constructor(e={}){this.#r=e.centralAddress}get centralAddress(){return this.#r}setCentralAddress(e){this.#r=e}applyRssiInfo(e){this.#e=em(e)}applyHmipValue(e,n,a){const s=this.#r,i=za(a);return s===void 0||i===void 0||!yo.includes(n)?!1:(n==="RSSI_DEVICE"?(this.#n(s,e,{rx:i}),this.#n(e,s,{tx:i})):(this.#n(e,s,{rx:i}),this.#n(s,e,{tx:i})),!0)}applyHmipParamset(e,n){let a=!1;for(const s of yo){const i=n[s];i!==void 0&&(a=this.applyHmipValue(e,s,i)||a)}return a}get(e,n){return this.#e[e]?.[n]}peersOf(e){return Object.keys(this.#e[e]??{}).sort()}toJSON(){const e={};for(const[n,a]of Object.entries(this.#e))e[n]={...a};return e}bestInterfaceFor(e,n){let a,s=Number.NEGATIVE_INFINITY;for(const i of n){const o=this.get(e,i);o?.tx!==void 0&&o.tx>s&&(s=o.tx,a={address:i,...o})}return a}#n(e,n,a){const s=this.#e[e]??={};s[n]={...s[n],...a}}}function rm(r,e){const n={};return r!==void 0&&(n.rx=r),e!==void 0&&(n.tx=e),n}const Ad=8192;class am{#e=[];#r;constructor(e=Ad){if(!Number.isInteger(e)||e<1)throw new RangeError(`ring buffer capacity must be a positive integer, got ${e}`);this.#r=e}get capacity(){return this.#r}get size(){return this.#e.length}get full(){return this.#e.length===this.#r}push(e){return this.#e.push(e),this.#e.length>this.#r?this.#e.shift():void 0}toArray(){return[...this.#e]}filter(e){return this.#e.filter(n=>e(n))}clear(){this.#e.length=0}}function sm(r,e){return e.interfaceName!==void 0&&r.interfaceName!==e.interfaceName||!Ao(r.address??"",e.address)||!Ao(r.datapoint??"",e.datapoint)?!1:e.text!==void 0&&e.text!==""?`${r.address??""} ${r.datapoint??""} ${String(r.value)}`.toLowerCase().includes(e.text.toLowerCase()):!0}function im(r,e){return r.filter(n=>sm(n,e))}function Ao(r,e){return e===void 0||e===""?!0:r.toLowerCase().includes(e.toLowerCase())}const Td={"Homematic Manager Address":{de:"Homematic Manager Adresse",en:"Homematic Manager Address"},"CCU Address":{de:"CCU Adresse",en:"CCU Address"},Select:{de:"Auswählen",en:"Select"},"Save & Restart":{de:"Speichern und Neustarten",en:"Save & Restart"},Error:{de:"Fehler",en:"Error"},Devices:{de:"Geräte",en:"Devices"},Device:{de:"Gerät",en:"Device"},introduced:{de:"gefunden",en:"introduced"},New:{de:"Neue",en:"New"},Events:{de:"Ereignisse",en:"Events"},Cancel:{de:"Abbrechen",en:"Cancel"},OK:{de:"OK",en:"OK"},Delete:{de:"Löschen",en:"Delete"},Save:{de:"Speichern",en:"Save"},"Create and edit":{de:"Anlegen und Bearbeiten",en:"Create and edit"},Create:{de:"Anlegen",en:"Create"},"Please choose one or more channels":{de:"Bitte einen oder mehrere Kanäle auswählen",en:"Please choose one or more channels"},Refresh:{de:"Aktualisieren",en:"Refresh"},"Delete device":{de:"Gerät löschen",en:"Delete device"},"Rename device":{de:"Gerät umbenennen",en:"Rename device"},"Pair devices":{de:"Geräte anlernen",en:"Pair devices"},Links:{de:"Verknüpfungen",en:"Links"},"Delete link":{de:"Verknüpfung löschen",en:"Delete link"},"Edit link":{de:"Verknüpfung bearbeiten",en:"Edit link"},"Test link":{de:"Verknüpfung testen",en:"Test link"},"Create link":{de:"Verknüpfung anlegen",en:"Create link"},RSSI:{de:"Funk",en:"RSSI"},"RPC Console":{de:"RPC Konsole",en:"RPC Console"},"Service messages":{de:"Servicemeldungen",en:"Service messages"},"Send request":{de:"Befehl senden",en:"Send request"},Parameters:{de:"Parameter",en:"Parameters"},Response:{de:"Antwort",en:"Response"},Help:{de:"Hilfe",en:"Help"},Settings:{de:"Einstellungen",en:"Settings"},"Please choose one or more links":{de:"mehrere Verknüpfungen bearbeiten",en:"Please choose one or more links"},"Kanäle überschreiben":{de:"Kanäle überschreiben",en:"Kanäle überschreiben"},"Normaler Anlernmodus":{de:"Normaler Anlernmodus",en:"Normaler Anlernmodus"},"Default-Parameter in Paramset MASTER schreiben, bestehende Verknüpfungen löschen":{de:"Default-Parameter in Paramset MASTER schreiben, bestehende Verknüpfungen löschen",en:"Default-Parameter in Paramset MASTER schreiben, bestehende Verknüpfungen löschen"},Sender:{de:"Sender",en:"Sender"},Receiver:{de:"Empfänger",en:"Receiver"},"Ablernen und Gerät auf Werkseinstellungen zurücksetzen":{de:"Ablernen und Gerät auf Werkseinstellungen zurücksetzen",en:"Ablernen und Gerät auf Werkseinstellungen zurücksetzen"},"Nur ablernen (Direktverknüpfungen bleiben erhalten)":{de:"Nur ablernen (Direktverknüpfungen bleiben erhalten)",en:"Nur ablernen (Direktverknüpfungen bleiben erhalten)"},"Falls Gerät nicht erreichbar:":{de:"Falls Gerät nicht erreichbar:",en:"Falls Gerät nicht erreichbar:"},"bei nächster Gelegenheit löschen":{de:"bei nächster Gelegenheit löschen",en:"bei nächster Gelegenheit löschen"},"Nur aus Schnittstellenprozess löschen":{de:"Nur aus Schnittstellenprozess löschen",en:"Nur aus Schnittstellenprozess löschen"},Disconnected:{de:"Verbindung unterbrochen",en:"Disconnected"},"Which device do you want to replace?":{de:"Welches Gerät wollen sie ersetzen?",en:"Which device do you want to replace?"},"Gerät löschen":{de:"Gerät löschen",en:"Gerät löschen"},"Acknowledge service messages":{de:"Servicemeldung bestätigen",en:"Acknowledge service messages"},"Acknowledge all service messages":{de:"Alle Servicemeldungen bestätigen",en:"Acknowledge all service messages"},Interfaces:{de:"Interfaces",en:"Interfaces"},"Edit device":{de:"Gerät bearbeiten",en:"Edit device"},undefined:{de:"undefined",en:"undefined"},"Please select method":{de:"Bitte eine Methode auswählen",en:"Please select method"},saveAsNewTemplate:{de:"als neue Profilvorlage speichern",en:"saveAsNewTemplate"},"Replace device":{de:"Gerät tauschen",en:"Replace device"},"Update firmware":{de:"Firmware aktualisieren",en:"Update firmware"},clearConfigCache:{de:"clearConfigCache",en:"clearConfigCache"},restoreConfigToDevice:{de:"restoreConfigToDevice",en:"restoreConfigToDevice"},Rename:{de:"Umbenennen",en:"Rename"},"MASTER Paramset":{de:"MASTER Paramset",en:"MASTER Paramset"},updateFirmware:{de:"Firmware aktualisieren",en:"updateFirmware"},Replace:{de:"Gerät tauschen",en:"Replace"},"VALUES Paramset":{de:"VALUES Paramset",en:"VALUES Paramset"},"Activate long":{de:"Empfägnerprofil testen (langer Tastendruck)",en:"Activate long"},"Activate short":{de:"Empfängerprofil testen (kurzer Tastendruck)",en:"Activate short"},putParamset:{de:"Parameter übernehmen",en:"putParamset"},putParamsetClose:{de:"Parameter übernehmen und schließen",en:"putParamsetClose"},"New service message":{de:"Neue Servicemeldung",en:"New service message"},"RPC execution":{de:"RPC wird ausgeführt",en:"RPC execution"},"about Homematic Manager":{de:"Über Homematic Manager",en:"about Homematic Manager"},"Loading Homematic Manager...":{de:"Lade Homematic Manager...",en:"Loading Homematic Manager..."},"Check all":{de:"Alle auswählen",en:"Check all"},"Uncheck all":{de:"Auswahl entfernen",en:"Uncheck all"},"{count} devices":{de:{one:"{count} Gerät",other:"{count} Geräte"},en:{one:"{count} device",other:"{count} devices"}},"{count} channels":{de:{one:"{count} Kanal",other:"{count} Kanäle"},en:{one:"{count} channel",other:"{count} channels"}},"{count} links":{de:{one:"{count} Verknüpfung",other:"{count} Verknüpfungen"},en:{one:"{count} link",other:"{count} links"}},"{count} service messages":{de:{one:"{count} Servicemeldung",other:"{count} Servicemeldungen"},en:{one:"{count} service message",other:"{count} service messages"}},"{count} events":{de:{one:"{count} Ereignis",other:"{count} Ereignisse"},en:{one:"{count} event",other:"{count} events"}},"{count} parameters will be written":{de:{one:"{count} Parameter wird geschrieben",other:"{count} Parameter werden geschrieben"},en:{one:"{count} parameter will be written",other:"{count} parameters will be written"}},"{count} channels selected":{de:{one:"{count} Kanal ausgewählt",other:"{count} Kanäle ausgewählt"},en:{one:"{count} channel selected",other:"{count} channels selected"}},"Connected to {host}":{de:"Verbunden mit {host}",en:"Connected to {host}"},"Interface {interface} is not answering":{de:"Schnittstelle {interface} antwortet nicht",en:"Interface {interface} is not answering"},"Writing {paramset} of {address}":{de:"Schreibe {paramset} von {address}",en:"Writing {paramset} of {address}"}};function om(r,e){return r==="tr"?"other":e===1?"one":"other"}function As(r,e){return r.replace(/\{(\w+)\}/g,(n,a)=>{const s=e[a];return s===void 0?n:String(s)})}const lm=["en","de"];class dm{language;#e;#r;constructor(e,n={}){this.language=e,this.#e=n.catalogue??Td;const a=n.fallbacks??lm;this.#r=[e,...a.filter(s=>s!==e)]}has(e){return this.#n(e)!==void 0}t(e,n={},a){const s=this.#n(e),i=a===void 0?n:{count:a,...n};if(s===void 0)return As(e,i);const[o,l]=s;if(typeof o=="string")return As(o,i);const d=om(l,a??0);return As(o[d],i)}#n(e){const n=Object.prototype.hasOwnProperty.call(this.#e,e)?this.#e[e]:void 0;if(n)for(const a of this.#r){const s=n[a];if(s!==void 0)return[s,a]}}}function cm(r,e={}){return new dm(r,e)}class To{#e;constructor(e,...n){this.#e=[e,...n].filter(a=>a!==void 0)}get languages(){return this.#e.map(e=>e.language)}channelType(e){return this.#r(n=>n.channelTypes,Wr(e))??e}deviceModel(e){return this.#r(n=>n.deviceModels,Wr(e))??e}parameter(e,n){return this.#r(a=>a.parameters,Ts(e,n))??e}parameterValue(e,n,a){const s=Ts(`${e}|${n}`,a);return s.push(...Wr(n)),this.#r(i=>i.parameterValues,s)??n}parameterHelp(e,n){return this.#r(a=>a.parameterHelp,Ts(e,n))}uiLabel(e){return this.#r(n=>n.uiLabels,Ti([e,e.toLowerCase()]))??e}#r(e,n){for(const a of this.#e)for(const s of n){const i=e(a)[s];if(i!==void 0&&i!=="")return i}}}function Ts(r,e){const n=Wr(r);if(e===void 0||e==="")return n;const a=Wr(e).map(s=>`${s}|${r}`);return Ti([...a,...a.map(s=>s.toUpperCase()),...n])}function Wr(r){return Ti([r,r.toUpperCase()])}function Ti(r){return[...new Set(r)]}const um={Filter:{de:"Filter",en:"Filter"},"Filter all columns":{de:"Alle Spalten filtern",en:"Filter all columns"},Language:{de:"Sprache",en:"Language"},"Browser language":{de:"Sprache des Browsers",en:"Browser language"},"Resize the RPC log":{de:"Größe des RPC-Protokolls ändern",en:"Resize the RPC log"},Theme:{de:"Design",en:"Theme"},"Theme: light":{de:"Design: hell",en:"Theme: light"},"Theme: dark":{de:"Design: dunkel",en:"Theme: dark"},"Theme: system":{de:"Design: System",en:"Theme: system"},Close:{de:"Schließen",en:"Close"},Apply:{de:"Übernehmen",en:"Apply"},Connected:{de:"Verbunden",en:"Connected"},"Not connected":{de:"Nicht verbunden",en:"Not connected"},"Not present":{de:"Nicht vorhanden",en:"Not present"},Subscribing:{de:"Anmeldung läuft",en:"Subscribing"},"Pending changes":{de:"Offene Änderungen",en:"Pending changes"},"Logged in as {user}":{de:"Angemeldet als {user}",en:"Logged in as {user}"},"Log out":{de:"Abmelden",en:"Log out"},Team:{de:"Team",en:"Team"},"Own team":{de:"Eigenes Team",en:"Own team"},Members:{de:"Mitglieder",en:"Members"},"This channel does not belong to a team":{de:"Dieser Kanal gehört zu keinem Team",en:"This channel does not belong to a team"},"The interface knows no other team yet":{de:"Die Schnittstelle kennt noch kein anderes Team",en:"The interface knows no other team yet"},"Confirm the ReGa inbox":{de:"ReGa-Posteingang bestätigen",en:"Confirm the ReGa inbox"},"Confirm the ReGa inbox automatically":{de:"ReGa-Posteingang automatisch bestätigen",en:"Confirm the ReGa inbox automatically"},"The ReGa inbox is empty":{de:"Der ReGa-Posteingang ist leer",en:"The ReGa inbox is empty"},Confirmed:{de:"Bestätigt",en:"Confirmed"},Template:{de:"Vorlage",en:"Template"},"Save as template":{de:"Als Vorlage speichern",en:"Save as template"},"Apply template":{de:"Vorlage anwenden",en:"Apply template"},"Delete template":{de:"Vorlage löschen",en:"Delete template"},"Template name":{de:"Name der Vorlage",en:"Template name"},"No template for this pair of channel types":{de:"Keine Vorlage für diese Kanaltypen",en:"No template for this pair of channel types"},"Create link as sender":{de:"Verknüpfung als Sender anlegen",en:"Create link as sender"},"Create link as receiver":{de:"Verknüpfung als Empfänger anlegen",en:"Create link as receiver"},"Show links":{de:"Verknüpfungen anzeigen",en:"Show links"},Unreach:{de:"Ausfälle",en:"Unreach"},"Reset the unreach counters":{de:"Ausfallzähler zurücksetzen",en:"Reset the unreach counters"},"Acknowledge STICKY_UNREACH automatically":{de:"STICKY_UNREACH automatisch bestätigen",en:"Acknowledge STICKY_UNREACH automatically"},"Used for every pair without its own name":{de:"Gilt für jedes Paar ohne eigenen Namen",en:"Used for every pair without its own name"},"Nothing is staged":{de:"Nichts vorgemerkt",en:"Nothing is staged"},"Add to pending changes":{de:"Zu den offenen Änderungen",en:"Add to pending changes"},"Discard all":{de:"Alle verwerfen",en:"Discard all"},"{count} changes staged":{de:{one:"Eine Änderung vorgemerkt",other:"{count} Änderungen vorgemerkt"},en:{one:"One change staged",other:"{count} changes staged"}},"The camera is only available over https or on localhost. Open the page with its https address (the CCU serves it on its https port too, with a certificate warning) or type the key in by hand.":{de:"Die Kamera ist nur über https oder auf localhost verfügbar. Öffnen Sie die Seite über ihre https-Adresse (die CCU liefert sie auch über ihren https-Port aus, mit Zertifikatswarnung) oder geben Sie den Schlüssel von Hand ein.",en:"The camera is only available over https or on localhost. Open the page with its https address (the CCU serves it on its https port too, with a certificate warning) or type the key in by hand."},"Add by serial number":{de:"Per Seriennummer anlernen",en:"Add by serial number"},"RPC log":{de:"RPC-Protokoll",en:"RPC log"},"Show RPC log":{de:"RPC-Protokoll anzeigen",en:"Show RPC log"},"No RPC calls yet":{de:"Noch keine RPC-Aufrufe",en:"No RPC calls yet"},"in progress":{de:"läuft",en:"in progress"},Duration:{de:"Dauer",en:"Duration"},Method:{de:"Methode",en:"Method"},Result:{de:"Ergebnis",en:"Result"},Interface:{de:"Schnittstelle",en:"Interface"},Channels:{de:"Kanäle",en:"Channels"},Name:{de:"Name",en:"Name"},Timestamp:{de:"Zeitstempel",en:"Timestamp"},Value:{de:"Wert",en:"Value"},Message:{de:"Meldung",en:"Message"},Since:{de:"Seit",en:"Since"},Clear:{de:"Leeren",en:"Clear"},"No data":{de:"Keine Daten",en:"No data"},"Nothing selected":{de:"Nichts ausgewählt",en:"Nothing selected"},"Comes with task 8":{de:"Diese Funktion kommt mit Aufgabe 8.",en:"This function arrives with task 8."},"Select an interface":{de:"Schnittstelle auswählen",en:"Select an interface"},"All interfaces are connected":{de:"Alle Schnittstellen verbunden",en:"All interfaces are connected"},"Not every interface is connected":{de:"Nicht jede Schnittstelle ist verbunden",en:"Not every interface is connected"},"Duty cycle {value} %":{de:"Duty Cycle {value} %",en:"Duty cycle {value} %"},"Use ReGa":{de:"ReGa verwenden",en:"Use ReGa"},"Detect interfaces":{de:"Schnittstellen erkennen",en:"Detect interfaces"},Interfaces:{de:"Schnittstellen",en:"Interfaces"},"Callback address":{de:"Callback-Adresse",en:"Callback address"},"Callback XML-RPC port":{de:"Callback-Port XML-RPC",en:"Callback XML-RPC port"},"Callback BIN-RPC port":{de:"Callback-Port BIN-RPC",en:"Callback BIN-RPC port"},"Use TLS":{de:"TLS verwenden",en:"Use TLS"},"Use Auth":{de:"Authentifizierung verwenden",en:"Use Auth"},"Auth User":{de:"Benutzer",en:"Auth User"},"Auth Pass":{de:"Passwort",en:"Auth Pass"},"RPC Delay (ms)":{de:"RPC-Pause (ms)",en:"RPC Delay (ms)"},"RPC Log Folder":{de:"RPC-Log-Verzeichnis",en:"RPC Log Folder"},"Clear Cache":{de:"Cache leeren",en:"Clear Cache"},"Discovered CCUs":{de:"Gefundene CCUs",en:"Discovered CCUs"},Discover:{de:"Suchen",en:"Discover"},"Free port":{de:"freier Port",en:"Free port"},"0 picks a free port":{de:"0 wählt einen freien Port",en:"0 picks a free port"},Dismiss:{de:"Ausblenden",en:"Dismiss"},"{count} more":{de:{one:"{count} weitere",other:"{count} weitere"},en:{one:"{count} more",other:"{count} more"}},"Show fewer":{de:"Weniger anzeigen",en:"Show fewer"},"Add device":{de:"Gerät anlernen",en:"Add device"},"reportValueUsage 0":{de:"reportValueUsage 0",en:"reportValueUsage 0"},"reportValueUsage 1":{de:"reportValueUsage 1",en:"reportValueUsage 1"},"Expand row":{de:"Zeile aufklappen",en:"Expand row"},"Collapse row":{de:"Zeile zuklappen",en:"Collapse row"},"Sorted ascending":{de:"Aufsteigend sortiert",en:"Sorted ascending"},"Sorted descending":{de:"Absteigend sortiert",en:"Sorted descending"},"Showing {shown} of {total}":{de:"Zeige {shown} von {total}",en:"Showing {shown} of {total}"},"No devices - the interface has not reported any yet":{de:"Keine Geräte - die Schnittstelle hat noch keine gemeldet",en:"No devices - the interface has not reported any yet"},install:{de:"installieren",en:"install"},"Install firmware {version}":{de:"Firmware {version} installieren",en:"Install firmware {version}"},"Overwrite channel names":{de:"Kanalnamen überschreiben",en:"Overwrite channel names"},"Do you really want to delete the device {name}?":{de:"Wollen Sie das Gerät {name} wirklich löschen?",en:"Do you really want to delete the device {name}?"},"Unlearn and reset the device to factory defaults":{de:"Ablernen und Gerät auf Werkseinstellungen zurücksetzen",en:"Unlearn and reset the device to factory defaults"},"Unlearn only (direct links are kept)":{de:"Nur ablernen (Direktverknüpfungen bleiben erhalten)",en:"Unlearn only (direct links are kept)"},"If the device cannot be reached:":{de:"Falls Gerät nicht erreichbar:",en:"If the device cannot be reached:"},"Delete at the next opportunity":{de:"Bei nächster Gelegenheit löschen",en:"Delete at the next opportunity"},"Delete from the interface process only":{de:"Nur aus dem Schnittstellenprozess löschen",en:"Delete from the interface process only"},"New device":{de:"Neues Gerät",en:"New device"},"No suitable device available":{de:"Kein passendes Gerät vorhanden",en:"No suitable device available"},"Select a device":{de:"Ein Gerät auswählen",en:"Select a device"},"Select one or more channels":{de:"Einen oder mehrere Kanäle auswählen",en:"Select one or more channels"},"This device carries the DontDelete flag":{de:"Dieses Gerät trägt das Flag DontDelete",en:"This device carries the DontDelete flag"},"Only available on BidCos interfaces":{de:"Nur bei BidCos-Schnittstellen verfügbar",en:"Only available on BidCos interfaces"},"reportValueUsage {value}: {count} datapoints on {channels} channels":{de:"reportValueUsage {value}: {count} Datenpunkte auf {channels} Kanälen",en:"reportValueUsage {value}: {count} datapoints on {channels} channels"},"SERVICE Paramset":{de:"SERVICE Parametersatz",en:"SERVICE Paramset"},Preview:{de:"Vorschau",en:"Preview"},Write:{de:"Schreiben",en:"Write"},Parameter:{de:"Parameter",en:"Parameter"},"Current value":{de:"Aktueller Wert",en:"Current value"},"New value":{de:"Neuer Wert",en:"New value"},"Nothing has changed - nothing will be written":{de:"Nichts geändert - es wird nichts geschrieben",en:"Nothing has changed - nothing will be written"},"Write every parameter, not only the changed ones":{de:"Alle Parameter schreiben, nicht nur die geänderten",en:"Write every parameter, not only the changed ones"},"Show hidden parameters":{de:"Ausgeblendete Parameter zeigen",en:"Show hidden parameters"},"other firmware or device type":{de:"andere Firmware oder anderer Gerätetyp",en:"other firmware or device type"},"Select one link":{de:"Eine Verknüpfung auswählen",en:"Select one link"},"No channel can receive from this sender":{de:"Kein Kanal kann von diesem Sender empfangen",en:"No channel can receive from this sender"},"{count} defective links":{de:{one:"{count} defekte Verknüpfung",other:"{count} defekte Verknüpfungen"},en:{one:"{count} defective link",other:"{count} defective links"}},"Defective link":{de:"Defekte Verknüpfung",en:"Defective link"},Profile:{de:"Profil",en:"Profile"},"Expert view":{de:"Expertenansicht",en:"Expert view"},"Repair configuration":{de:"Konfiguration reparieren",en:"Repair configuration"},"The configuration could not be transferred to the device":{de:"Die Konfiguration konnte nicht zum Gerät übertragen werden",en:"The configuration could not be transferred to the device"},"A configuration is queued; the device takes it when it next wakes up":{de:"Eine Konfiguration ist eingereiht; das Gerät übernimmt sie beim nächsten Aufwachen",en:"A configuration is queued; the device takes it when it next wakes up"},"On BidCos a pending configuration is normal: it is queued and the device takes it when it next wakes up.":{de:"Bei BidCos ist eine ausstehende Konfiguration normal: sie ist eingereiht und das Gerät übernimmt sie beim nächsten Aufwachen.",en:"On BidCos a pending configuration is normal: it is queued and the device takes it when it next wakes up."},"These channels store a parameter their description does not have. No RPC method removes it: the device has to be deleted and paired again, or a CCU backup from before the bad write restored.":{de:"Diese Kanäle speichern einen Parameter, den ihre Beschreibung nicht kennt. Keine RPC-Methode entfernt ihn: das Gerät muss gelöscht und neu angelernt werden, oder ein CCU-Backup von vor dem fehlerhaften Schreibvorgang eingespielt werden.",en:"These channels store a parameter their description does not have. No RPC method removes it: the device has to be deleted and paired again, or a CCU backup from before the bad write restored."},"Nothing has to be corrected":{de:"Es muss nichts korrigiert werden",en:"Nothing has to be corrected"},"Additional BidCos recovery":{de:"Zusätzliche BidCos-Reparatur",en:"Additional BidCos recovery"},Channel:{de:"Kanal",en:"Channel"},"Read back":{de:"Rückgelesen",en:"Read back"},"The interface answered ok but stored something else":{de:"Die Schnittstelle hat ok geantwortet, aber etwas anderes gespeichert",en:"The interface answered ok but stored something else"},"What was sent":{de:"Gesendet",en:"What was sent"},"Quiet mode":{de:"Ruhemodus",en:"Quiet mode"},"Only STICKY_UNREACH and SABOTAGE can be acknowledged":{de:"Nur STICKY_UNREACH und SABOTAGE lassen sich bestätigen",en:"Only STICKY_UNREACH and SABOTAGE can be acknowledged"},Pause:{de:"Anhalten",en:"Pause"},"Events per device":{de:"Ereignisse je Gerät",en:"Events per device"},Peer:{de:"Gegenstelle",en:"Peer"},"Heard best by {address}":{de:"Am besten empfangen von {address}",en:"Heard best by {address}"},History:{de:"Verlauf",en:"History"},optional:{de:"optional",en:"optional"},Mode:{de:"Modus",en:"Mode"},"Serial number":{de:"Seriennummer",en:"Serial number"},"Temporary key":{de:"Temporärer Schlüssel",en:"Temporary key"},"Normal install mode":{de:"Normaler Anlernmodus",en:"Normal install mode"},"Write the MASTER defaults and delete the existing links":{de:"Default-Parameter in Paramset MASTER schreiben, bestehende Verknüpfungen löschen",en:"Write the MASTER defaults and delete the existing links"},"With SGTIN and key":{de:"Mit SGTIN und Schlüssel",en:"With SGTIN and key"},"With SGTIN only (key server)":{de:"Nur mit SGTIN (Key Server)",en:"With SGTIN only (key server)"},"QR scanner":{de:"QR-Scanner",en:"QR scanner"},Scan:{de:"Scannen",en:"Scan"},Stop:{de:"Stoppen",en:"Stop"},"That is not a HomematicIP device code":{de:"Das ist kein HomematicIP-Gerätecode",en:"That is not a HomematicIP device code"},"Start install mode":{de:"Anlernmodus aktivieren",en:"Start install mode"},"{count} seconds left":{de:{one:"Noch {count} Sekunde",other:"Noch {count} Sekunden"},en:{one:"{count} second left",other:"{count} seconds left"}},"BidCos-Wired has no install mode; the interface searches its bus for new devices.":{de:"BidCos-Wired hat keinen Anlernmodus; die Schnittstelle durchsucht ihren Bus nach neuen Geräten.",en:"BidCos-Wired has no install mode; the interface searches its bus for new devices."},"A new version is available":{de:"Eine neue Version ist verfügbar",en:"A new version is available"},Downloading:{de:"Wird geladen",en:"Downloading"},"The update is ready and will be installed when you quit":{de:"Die Aktualisierung ist bereit und wird beim Beenden installiert",en:"The update is ready and will be installed when you quit"},"The update will be installed when you quit":{de:"Die Aktualisierung wird beim Beenden installiert",en:"The update will be installed when you quit"},Download:{de:"Herunterladen",en:"Download"},"Install on quit":{de:"Beim Beenden installieren",en:"Install on quit"},"Device data":{de:"Gerätedaten",en:"Device data"},"Homematic Manager on GitHub":{de:"Homematic Manager auf GitHub",en:"Homematic Manager on GitHub"},Connection:{de:"Verbindung",en:"Connection"},Callback:{de:"Rückruf",en:"Callback"},Behaviour:{de:"Verhalten",en:"Behaviour"},"Configured interfaces":{de:"Konfigurierte Schnittstellen",en:"Configured interfaces"},"Host name or address of the CCU":{de:"Hostname oder Adresse der CCU",en:"Host name or address of the CCU"},"Searches the network for CCUs over UDP":{de:"Sucht per UDP im Netz nach CCUs",en:"Searches the network for CCUs over UDP"},"The encrypted ports of the CCU":{de:"Die verschlüsselten Ports der CCU",en:"The encrypted ports of the CCU"},"The address the interface processes call back to":{de:"Die Adresse, an die die Schnittstellenprozesse zurückrufen",en:"The address the interface processes call back to"},"Probes the known ports in the background":{de:"Prüft die bekannten Ports im Hintergrund",en:"Probes the known ports in the background"},"ReGa supplies the friendly names":{de:"ReGa liefert die Anzeigenamen",en:"ReGa supplies the friendly names"},"Only possible with ReGa":{de:"Nur mit ReGa möglich",en:"Only possible with ReGa"},"Shortest pause between two writes":{de:"Kürzeste Pause zwischen zwei Schreibzugriffen",en:"Shortest pause between two writes"},"Acknowledging is a write to the device":{de:"Das Bestätigen schreibt in das Gerät",en:"Acknowledging is a write to the device"},"Empty switches the dumps off":{de:"Leer schaltet die Mitschrift ab",en:"Empty switches the dumps off"},"Discards the caches when this is saved":{de:"Verwirft die Caches beim Speichern",en:"Discards the caches when this is saved"},"Extra interfaces":{de:"Zusätzliche Schnittstellen",en:"Extra interfaces"},"Add interface":{de:"Schnittstelle hinzufügen",en:"Add interface"},Remove:{de:"Entfernen",en:"Remove"},Host:{de:"Host",en:"Host"},Port:{de:"Port",en:"Port"},Path:{de:"Pfad",en:"Path"},Protocol:{de:"Protokoll",en:"Protocol"},"Searching...":{de:"Suche läuft...",en:"Searching..."},"Show the raw parameters as well":{de:"Rohe Parameter zusätzlich anzeigen",en:"Show the raw parameters as well"},Durations:{de:"Zeitdauern",en:"Durations"},"A duration is stored as a unit and a count; both are shown next to the seconds.":{de:"Eine Zeitdauer wird als Einheit und Faktor gespeichert; beides steht neben den Sekunden.",en:"A duration is stored as a unit and a count; both are shown next to the seconds."},seconds:{de:"Sekunden",en:"seconds"},unit:{de:"Einheit",en:"unit"},count:{de:"Faktor",en:"count"},"Not used / for ever":{de:"Nicht benutzt / dauerhaft",en:"Not used / for ever"},"The device holds a value this pair cannot express":{de:"Das Gerät hält einen Wert, den dieses Paar nicht ausdrücken kann",en:"The device holds a value this pair cannot express"},"The device can only do {seconds}":{de:"Das Gerät kann nur {seconds}",en:"The device can only do {seconds}"},"Week programme":{de:"Wochenprogramm",en:"Week programme"},"Switching programme":{de:"Schaltprogramm",en:"Switching programme"},Weekday:{de:"Wochentag",en:"Weekday"},Weekdays:{de:"Wochentage",en:"Weekdays"},Slot:{de:"Abschnitt",en:"Slot"},until:{de:"bis",en:"until"},Copy:{de:"Kopieren",en:"Copy"},"Copy day to":{de:"Tag kopieren nach",en:"Copy day to"},"Copy profile to":{de:"Profil kopieren nach",en:"Copy profile to"},Monday:{de:"Montag",en:"Monday"},Tuesday:{de:"Dienstag",en:"Tuesday"},Wednesday:{de:"Mittwoch",en:"Wednesday"},Thursday:{de:"Donnerstag",en:"Thursday"},Friday:{de:"Freitag",en:"Friday"},Saturday:{de:"Samstag",en:"Saturday"},Sunday:{de:"Sonntag",en:"Sunday"},"The end times of a day rise until {end}, and the last one is {end}":{de:"Die Endzeiten eines Tages steigen bis {end}, und die letzte ist {end}",en:"The end times of a day rise until {end}, and the last one is {end}"},"{day}: end time {slot} is not after the one before it":{de:"{day}: Endzeit {slot} liegt nicht nach der vorherigen",en:"{day}: end time {slot} is not after the one before it"},"{day}: end time {slot} comes after the day has ended":{de:"{day}: Endzeit {slot} liegt hinter dem Ende des Tages",en:"{day}: end time {slot} comes after the day has ended"},"{day}: the last end time must be {end}":{de:"{day}: die letzte Endzeit muss {end} sein",en:"{day}: the last end time must be {end}"},"A time between 00:00 and {end}":{de:"Eine Zeit zwischen 00:00 und {end}",en:"A time between 00:00 and {end}"},Time:{de:"Zeit",en:"Time"},Level:{de:"Stufe",en:"Level"},Condition:{de:"Bedingung",en:"Condition"},"Astro offset":{de:"Astro-Versatz",en:"Astro offset"},"Target channels":{de:"Zielkanäle",en:"Target channels"},Unused:{de:"Unbenutzt",en:"Unused"},"No weekday chosen - the slot does nothing":{de:"Kein Wochentag gewählt - der Abschnitt tut nichts",en:"No weekday chosen - the slot does nothing"},"Blind calibration":{de:"Jalousie-Kalibrierung",en:"Blind calibration"},"The running times of a reference run, in plain seconds next to the value the device stores.":{de:"Die Laufzeiten einer Referenzfahrt, in Sekunden neben dem Wert, den das Gerät speichert.",en:"The running times of a reference run, in plain seconds next to the value the device stores."},"Named options":{de:"Benannte Auswahlen",en:"Named options"},"These values have names in the CCU string table that the description does not carry.":{de:"Diese Werte haben Namen in der CCU-Zeichenkettentabelle, die die Beschreibung nicht mitliefert.",en:"These values have names in the CCU string table that the description does not carry."}},vm={...Td,...um},wi=["de","en"],Ks="en",fm={de:"Deutsch",en:"English",tr:"Türkçe"};function wd(){if(typeof navigator>"u")return[];const r=navigator.languages;return r!==void 0&&r.length>0?r:navigator.language===""?[]:[navigator.language]}function hm(r=wd()){for(const e of r){const n=e.toLowerCase().split("-")[0],a=wi.find(s=>s===n);if(a!==void 0)return a}return Ks}function mm(r,e=wd()){return(r===void 0||r==="auto"?void 0:wi.find(a=>a===r))??hm(e)}class pm{#e=M(Ks);#r=v(()=>cm(t(this.#e),{catalogue:vm}));constructor(e=Ks){m(this.#e,e,!0)}get language(){return t(this.#e)}set language(e){m(this.#e,e,!0)}t=(e,n={},a)=>t(this.#r).t(e,n,a);has=e=>t(this.#r).has(e)}var gm=k("<option> </option>"),_m=k('<select class="hmm-select hmm-language svelte-oq8zre"><option> </option><!></select>');function bm(r,e){$e(e,!0);let n=K(e,"language",15,"auto"),a=K(e,"label",3,"Language"),s=K(e,"autoLabel",3,"Browser language"),i=K(e,"onchange",3,void 0),o=K(e,"testId",3,void 0);var l=_m(),d=A(l),h=f(d,!0);d.value=d.__value="auto";var g=c(d);Ne(g,16,()=>wi,y=>y,(y,S)=>{var E=gm(),_=f(E,!0),T={};N(()=>{u(_,fm[S]),T!==(T=S)&&(E.value=(E.__value=T)??"")}),p(y,E)});var b;St(l),N(()=>{C(l,"aria-label",a()),C(l,"title",a()),C(l,"data-testid",o()),u(h,s()),b!==(b=n())&&(l.value=(l.__value=b)??"",Wt(l,b))}),ce("change",l,y=>{n(y.currentTarget.value),i()?.(n())}),p(r,l),Xe()}rt(["change"]);function Em(r,e){const n=e.trim().toLowerCase();return n===""?[...r]:r.filter(a=>a.label.toLowerCase().includes(n))}var Sm=k('<button type="button" class="hmm-multiselect-link svelte-vbwhwd"> </button> <button type="button" class="hmm-multiselect-link svelte-vbwhwd"> </button>',1),ym=k('<span class="hmm-multiselect-check" aria-hidden="true"> </span>'),Am=k('<li><button type="button" role="option"><!> <span> </span></button></li>'),Tm=k('<li class="hmm-multiselect-empty svelte-vbwhwd">—</li>'),wm=k('<div class="hmm-multiselect-menu svelte-vbwhwd" role="listbox"><div class="hmm-multiselect-head svelte-vbwhwd"><input class="hmm-input hmm-multiselect-filter svelte-vbwhwd" type="search"/> <!></div> <ul class="hmm-multiselect-list svelte-vbwhwd"><!> <!></ul></div>'),km=k('<div class="hmm-multiselect svelte-vbwhwd"><button type="button" class="hmm-button hmm-multiselect-button svelte-vbwhwd" aria-haspopup="listbox"><span class="hmm-multiselect-text svelte-vbwhwd"> </span> <span class="hmm-multiselect-arrow" aria-hidden="true">▾</span></button> <!></div>');function Qr(r,e){$e(e,!0);let n=K(e,"selected",31,()=>xe([])),a=K(e,"multiple",3,!0),s=K(e,"placeholder",3,""),i=K(e,"filterLabel",3,"Filter"),o=K(e,"checkAllLabel",3,"Check all"),l=K(e,"uncheckAllLabel",3,"Uncheck all"),d=K(e,"summary",3,void 0),h=K(e,"disabled",3,!1),g=K(e,"label",3,void 0),b=K(e,"onchange",3,void 0),y=K(e,"testId",3,void 0),S=M(!1),E=M(""),_=M(void 0);const T=v(()=>new Set(n())),I=v(()=>Em(e.options,t(E))),w=v(()=>n().length===0?s():d()?d()(n(),e.options):n().length===1?e.options.find(W=>W.value===n()[0])?.label??n()[0]??"":`${n().length}`);function D(W){n(W),b()?.(W)}function P(W){if(W.disabled!==!0){if(!a()){D([W.value]),m(S,!1);return}D(t(T).has(W.value)?n().filter(z=>z!==W.value):[...n(),W.value])}}function U(){D(t(I).filter(W=>W.disabled!==!0).map(W=>W.value))}function re(){D([])}function te(W){t(S)&&t(_)&&W.target instanceof Node&&!t(_).contains(W.target)&&m(S,!1)}var oe=km();Bn("mousedown",Er,te);var ue=A(oe),x=A(ue),X=f(x,!0),$=c(ue,2);{var ee=W=>{var z=wm(),ne=A(z),ae=A(ne),J=c(ae,2);{var q=Ee=>{var Ae=Sm(),j=ke(Ae),pe=f(j,!0),B=c(j,2),ie=f(B,!0);N(()=>{u(pe,o()),u(ie,l())}),ce("click",j,U),ce("click",B,re),p(Ee,Ae)};ve(J,Ee=>{a()&&Ee(q)})}var V=c(ne,2),Y=A(V);Ne(Y,17,()=>t(I),Ee=>Ee.value,(Ee,Ae)=>{var j=Am(),pe=A(j);let B;var ie=A(pe);{var be=O=>{var F=ym(),Z=f(F,!0);N(ge=>u(Z,ge),[()=>t(T).has(t(Ae).value)?"☑":"☐"]),p(O,F)};ve(ie,O=>{a()&&O(be)})}var fe=c(ie,2),le=f(fe,!0);N((O,F)=>{B=ht(pe,1,"hmm-multiselect-option svelte-vbwhwd",null,B,{"hmm-multiselect-selected":O}),C(pe,"aria-selected",F),pe.disabled=t(Ae).disabled===!0,u(le,t(Ae).label)},[()=>t(T).has(t(Ae).value),()=>t(T).has(t(Ae).value)]),ce("click",pe,()=>P(t(Ae))),p(Ee,j)});var he=c(Y,2);{var Q=Ee=>{var Ae=Tm();p(Ee,Ae)};ve(he,Ee=>{t(I).length===0&&Ee(Q)})}N(()=>{C(z,"aria-multiselectable",a()),C(ae,"placeholder",i()),C(ae,"aria-label",i())}),Tt(ae,()=>t(E),Ee=>m(E,Ee)),p(W,z)};ve($,W=>{t(S)&&W(ee)})}Un(oe,W=>m(_,W),()=>t(_)),N(()=>{C(oe,"data-testid",y()),C(ue,"aria-expanded",t(S)),C(ue,"aria-label",g()),ue.disabled=h(),u(X,t(w))}),ce("click",ue,()=>m(S,!t(S))),p(r,oe),Xe()}rt(["click"]);var Rm=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="config-save"> </button>',1),wo=k("<option> </option>"),Im=k('<span class="hmm-config-problem svelte-1xydm3c"> </span>'),Dm=k('<div class="hmm-config-extra-row svelte-1xydm3c"><input class="hmm-input"/> <input class="hmm-input"/> <input class="hmm-input" type="number"/> <select class="hmm-select"><option>xmlrpc</option><option>binrpc</option></select> <input class="hmm-input"/> <button type="button" class="hmm-button">✕</button> <!></div>'),Nm=k('<p data-testid="config-host-info" class="svelte-1xydm3c"> <span class="hmm-mono"> </span></p>'),xm=k('<div class="hmm-config svelte-1xydm3c"><div class="hmm-config-columns svelte-1xydm3c"><div class="hmm-config-column svelte-1xydm3c"><section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c" data-testid="config-host"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <div class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><span class="hmm-config-inline svelte-1xydm3c"><select class="hmm-select hmm-config-wide svelte-1xydm3c" data-testid="config-discovered"><option> </option><!></select> <button type="button" class="hmm-button" data-testid="config-discover"> </button></span> <small class="hmm-config-help svelte-1xydm3c"> </small></span></div> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox"/></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c"/></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c" type="password"/></span></label></div></section> <section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><select class="hmm-select hmm-config-wide svelte-1xydm3c"><option> </option><!></select> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-narrow svelte-1xydm3c" type="number" min="0"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-narrow svelte-1xydm3c" type="number" min="0"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label></div></section></div> <div class="hmm-config-column svelte-1xydm3c"><section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <div class="hmm-config-grid svelte-1xydm3c"><div class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><!></span></div> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label></div></section> <section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c">ReGa</h3> <div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox" data-testid="config-auto-confirm-inbox"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label></div></section> <section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><!></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-narrow svelte-1xydm3c" type="number" min="0"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox" data-testid="config-auto-ack-unreach"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox" data-testid="config-clear-cache"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label></div></section></div></div> <fieldset class="hmm-config-extra svelte-1xydm3c"><legend class="svelte-1xydm3c"> </legend> <!> <button type="button" class="hmm-button" data-testid="config-extra-add"> </button></fieldset> <div class="hmm-config-info svelte-1xydm3c" data-testid="config-info"><p class="svelte-1xydm3c"> <!> &middot; AGPL-3.0-or-later &middot; &copy; 2014-2026 Sebastian "Hobbyquaker" Raff</p> <!> <p class="svelte-1xydm3c">HomeMatic und BidCoS sind eingetragene Warenzeichen der eQ-3 AG.</p></div></div>');function Cm(r,e){$e(e,!0);let n=K(e,"open",15,!1);const a=Et(),s=a.i18n.t;let i=M(void 0),o=M(!1),l=M(!1),d=M(!1),h=M(!1);ot(()=>{if(n()&&t(i)===void 0){const x=a.app.config?.connection;m(i,x?structuredClone($i(x)):{host:"",interfaces:[...jf],autoDetect:!0,extraInterfaces:[],tls:!1,rega:!0,callback:{ip:"",xmlrpcPort:0,binrpcPort:0},language:a.app.languageChoice,writePaceMs:250,rpcLogFolder:""},!0),m(o,t(i).auth!==void 0)}n()||m(i,void 0)});const g=v(()=>[...new Set([...Yf,...t(i)?.interfaces??[]])].map(x=>({value:x,label:x}))),b=v(()=>a.app.config?.localAddresses??[]),y=v(()=>a.app.config?.discovered??[]),S=v(()=>a.app.config?.version??""),E=v(()=>a.meta.manifest),_=v(()=>a.host.info),T=v(()=>t(E)===void 0?"":`${t(E).sources.map(x=>`${x.name} ${x.version}`).join(", ")} (${t(E).generatedAt.slice(0,10)})`),I=v(()=>t(_)===void 0?"":`Electron ${t(_).electron} · Chromium ${t(_).chrome} · Node ${t(_).node} · ${t(_).platform} ${t(_).arch}`);async function w(){if(!t(i))return;m(d,!0);const x={...structuredClone($i(t(i))),...t(o)&&t(i).auth?{auth:{...t(i).auth}}:{}};t(o)||delete x.auth;const X=await a.app.save(x);X&&t(l)&&(await a.app.clearCaches(),m(l,!1)),m(d,!1),X&&(a.app.setLanguage(x.language??"auto"),a.i18n.language=a.app.language,n(!1),await a.start())}async function D(){m(h,!0),await a.app.discover(),m(h,!1)}function P(){if(!t(i))return;const x={name:"",host:"",port:2001,protocol:"xmlrpc",path:""};t(i).extraInterfaces=[...t(i).extraInterfaces,x]}function U(x){if(!t(i))return;const X=t(i).extraInterfaces[x]?.name;t(i).extraInterfaces=t(i).extraInterfaces.filter(($,ee)=>ee!==x),X!==void 0&&X!==""&&(t(i).interfaces=t(i).interfaces.filter($=>$!==X))}function re(x){t(i)&&(t(i).autoAckStickyUnreach=x)}function te(x){t(i)&&(t(i).autoConfirmRegaInbox=x)}function oe(x){t(i)&&(t(i).language=x)}function ue(x,X){if(!t(i))return;const $=t(i).auth??{user:"",password:""};t(i).auth={...$,[x]:X}}{const x=$=>{var ee=Rm(),W=ke(ee),z=f(W,!0),ne=c(W,2),ae=f(ne,!0);N((J,q)=>{u(z,J),ne.disabled=t(d),u(ae,q)},[()=>s("Cancel"),()=>s("Save & Restart")]),ce("click",W,()=>n(!1)),ce("click",ne,()=>{w()}),p($,ee)};let X=v(()=>s("Settings"));Vt(r,{get title(){return t(X)},width:"960px",testId:"config-dialog",get open(){return n()},set open($){n($)},buttons:x,children:($,ee)=>{var W=lt(),z=ke(W);{var ne=ae=>{var J=xm(),q=A(J),V=A(q),Y=A(V),he=A(Y),Q=f(he,!0),Ee=c(he,2),Ae=A(Ee),j=A(Ae),pe=f(j,!0),B=c(j,2),ie=A(B),be=c(ie,2),fe=f(be,!0),le=c(Ae,2),O=A(le),F=f(O,!0),Z=c(O,2),ge=A(Z),de=A(ge),G=A(de),R=f(G,!0);G.value=G.__value="";var L=c(G);Ne(L,17,()=>t(y),ze=>ze.address,(ze,vt)=>{var ft=wo(),Jt=f(ft),Ct={};N(()=>{u(Jt,`${t(vt).address??""} ${t(vt).serial??""??""} ${t(vt).firmware??""??""}`),Ct!==(Ct=t(vt).address)&&(ft.value=(ft.__value=Ct)??"")}),p(ze,ft)});var H=c(de,2),_e=f(H,!0),Se=c(ge,2),De=f(Se,!0),Oe=c(le,2),Ue=A(Oe),Ve=f(Ue,!0),Me=c(Ue,2),je=A(Me),me=c(je,2),Ie=f(me,!0),se=c(Oe,2),we=A(se),et=f(we,!0),Be=c(we,2),Ce=A(Be),qe=c(se,2),Re=A(qe),Te=f(Re,!0),Pe=c(Re,2),ye=A(Pe),Le=c(qe,2),Ge=A(Le),Fe=f(Ge,!0),We=c(Ge,2),He=A(We),Ze=c(Y,2),st=A(Ze),_t=f(st,!0),Ke=c(st,2),Ye=A(Ke),tt=A(Ye),dt=f(tt,!0),nt=c(tt,2),ct=A(nt),Ot=A(ct),Lt=f(Ot,!0);Ot.value=Ot.__value="";var mn=c(Ot);Ne(mn,16,()=>t(b),ze=>ze,(ze,vt)=>{var ft=wo(),Jt=f(ft,!0),Ct={};N(()=>{u(Jt,vt),Ct!==(Ct=vt)&&(ft.value=(ft.__value=Ct)??"")}),p(ze,ft)}),St(ct);var Ft=c(ct,2),Dt=f(Ft,!0),Xt=c(Ye,2),Qt=A(Xt),Zt=f(Qt,!0),wn=c(Qt,2),Mn=A(wn),kn=c(Mn,2),rr=f(kn,!0),qa=c(Xt,2),ia=A(qa),ar=f(ia,!0),oa=c(ia,2),Dr=A(oa),$a=c(Dr,2),Xa=f($a,!0),sr=c(V,2),la=A(sr),ir=A(la),Qa=f(ir,!0),Za=c(ir,2),da=A(Za),ca=A(da),Qe=f(ca,!0),ut=c(ca,2),pt=A(ut);{let ze=v(()=>s("Interfaces")),vt=v(()=>s("Filter")),ft=v(()=>s("Check all")),Jt=v(()=>s("Uncheck all")),Ct=v(()=>s("Select"));Qr(pt,{get options(){return t(g)},get label(){return t(ze)},get filterLabel(){return t(vt)},get checkAllLabel(){return t(ft)},get uncheckAllLabel(){return t(Jt)},summary:gn=>gn.join(", "),get placeholder(){return t(Ct)},get selected(){return t(i).interfaces},set selected(gn){t(i).interfaces=gn}})}var bt=c(da,2),yt=A(bt),Bt=f(yt,!0),Mt=c(yt,2),pn=A(Mt),jt=c(pn,2),Ja=f(jt,!0),ua=c(la,2),es=c(A(ua),2),va=A(es),fa=A(va),ts=f(fa,!0),$d=c(fa,2),ki=A($d),Xd=c(ki,2),Qd=f(Xd,!0),Zd=c(va,2),Ri=A(Zd),Jd=f(Ri,!0),ec=c(Ri,2),ha=A(ec),tc=c(ha,2),nc=f(tc,!0),rc=c(ua,2),Ii=A(rc),ac=f(Ii,!0),sc=c(Ii,2),Di=A(sc),Ni=A(Di),ic=f(Ni,!0),oc=c(Ni,2),lc=A(oc);{let ze=v(()=>t(i).language??"auto"),vt=v(()=>s("Language")),ft=v(()=>s("Browser language"));bm(lc,{get language(){return t(ze)},get label(){return t(vt)},get autoLabel(){return t(ft)},testId:"config-language",onchange:oe})}var xi=c(Di,2),Ci=A(xi),dc=f(Ci,!0),cc=c(Ci,2),Pi=A(cc),uc=c(Pi,2),vc=f(uc,!0),Li=c(xi,2),Mi=A(Li),fc=f(Mi,!0),hc=c(Mi,2),ns=A(hc),mc=c(ns,2),pc=f(mc,!0),Oi=c(Li,2),Fi=A(Oi),gc=f(Fi,!0),_c=c(Fi,2),Gi=A(_c),bc=c(Gi,2),Ec=f(bc,!0),Sc=c(Oi,2),Ui=A(Sc),yc=f(Ui,!0),Ac=c(Ui,2),Vi=A(Ac),Tc=c(Vi,2),wc=f(Tc,!0),Bi=c(q,2),zi=A(Bi),kc=f(zi,!0),Hi=c(zi,2);Ne(Hi,17,()=>t(i).extraInterfaces,$l,(ze,vt,ft)=>{const Jt=v(()=>$f(t(vt)));var Ct=Dm(),gn=A(Ct),or=c(gn,2),lr=c(or,2),Wn=c(lr,2),Nr=A(Wn);Nr.value=Nr.__value="xmlrpc";var ma=c(Nr);ma.value=ma.__value="binrpc",St(Wn);var dr=c(Wn,2),xr=c(dr,2),rs=c(xr,2);{var as=Pt=>{var Kn=Im(),Cr=f(Kn,!0);N((Pr,Lr)=>{C(Kn,"data-testid",Pr),u(Cr,Lr)},[()=>`config-extra-problem-${String(ft)}`,()=>t(Jt).join(", ")]),p(Pt,Kn)};ve(rs,Pt=>{t(Jt).length>0&&Pt(as)})}N((Pt,Kn,Cr,Pr,Lr,ss,is,os,ls,ds,cs)=>{C(Ct,"data-testid",Pt),C(gn,"placeholder",Kn),C(gn,"aria-label",Cr),C(or,"placeholder",Pr),C(or,"aria-label",Lr),C(lr,"placeholder",ss),C(lr,"aria-label",is),C(Wn,"aria-label",os),C(dr,"placeholder",ls),C(dr,"aria-label",ds),C(xr,"aria-label",cs)},[()=>`config-extra-${String(ft)}`,()=>s("Name"),()=>`${s("Name")} ${String(ft)}`,()=>s("Host"),()=>`${s("Host")} ${String(ft)}`,()=>s("Port"),()=>`${s("Port")} ${String(ft)}`,()=>`${s("Protocol")} ${String(ft)}`,()=>s("Path"),()=>`${s("Path")} ${String(ft)}`,()=>`${s("Remove")} ${String(ft)}`]),Tt(gn,()=>t(vt).name,Pt=>t(vt).name=Pt),Tt(or,()=>t(vt).host,Pt=>t(vt).host=Pt),Tt(lr,()=>t(vt).port,Pt=>t(vt).port=Pt),dn(Wn,()=>t(vt).protocol,Pt=>t(vt).protocol=Pt),Tt(dr,()=>t(vt).path,Pt=>t(vt).path=Pt),ce("click",xr,()=>U(ft)),p(ze,Ct)});var Wi=c(Hi,2),Rc=f(Wi,!0),Ic=c(Bi,2),Ki=A(Ic),Yi=A(Ki),Dc=c(Yi);{var Nc=ze=>{var vt=Cn();N(ft=>u(vt,`· ${ft??""}: ${t(T)??""}`),[()=>s("Device data")]),p(ze,vt)};ve(Dc,ze=>{t(T)!==""&&ze(Nc)})}var xc=c(Ki,2);{var Cc=ze=>{var vt=Nm(),ft=A(vt),Jt=c(ft),Ct=f(Jt,!0);N(()=>{u(ft,`${t(I)??""} · `),u(Ct,t(_)?.logFile??"")}),p(ze,vt)};ve(xc,ze=>{t(I)!==""&&ze(Cc)})}N((ze,vt,ft,Jt,Ct,gn,or,lr,Wn,Nr,ma,dr,xr,rs,as,Pt,Kn,Cr,Pr,Lr,ss,is,os,ls,ds,cs,Pc,Lc,Mc,Oc,Fc,Gc,Uc,Vc,Bc,zc,Hc,Wc,Kc,Yc,jc)=>{u(Q,ze),u(pe,vt),u(fe,ft),u(F,Jt),C(de,"aria-label",Ct),de.disabled=t(y).length===0,u(R,gn),H.disabled=t(h),u(_e,or),u(De,lr),u(Ve,Wn),u(Ie,Nr),u(et,ma),u(Te,dr),ye.disabled=!t(o),gt(ye,t(i).auth?.user??""),u(Fe,xr),He.disabled=!t(o),gt(He,t(i).auth?.password??""),u(_t,rs),u(dt,as),u(Lt,Pt),u(Dt,Kn),u(Zt,Cr),u(rr,Pr),u(ar,Lr),u(Xa,ss),u(Qa,is),u(Qe,os),u(Bt,ls),u(Ja,ds),u(ts,cs),u(Qd,Pc),u(Jd,Lc),ha.disabled=!t(i).rega,zn(ha,t(i).autoConfirmRegaInbox===!0),u(nc,Mc),u(ac,Oc),u(ic,Fc),u(dc,Gc),u(vc,Uc),u(fc,Vc),zn(ns,t(i).autoAckStickyUnreach===!0),u(pc,Bc),u(gc,zc),u(Ec,Hc),u(yc,Wc),u(wc,Kc),u(kc,Yc),u(Rc,jc),u(Yi,`Homematic Manager ${t(S)??""} `)},[()=>s("Connection"),()=>s("CCU Address"),()=>s("Host name or address of the CCU"),()=>s("Discovered CCUs"),()=>s("Discovered CCUs"),()=>t(h)?s("Searching..."):s("Select"),()=>s("Discover"),()=>s("Searches the network for CCUs over UDP"),()=>s("Use TLS"),()=>s("The encrypted ports of the CCU"),()=>s("Use Auth"),()=>s("Auth User"),()=>s("Auth Pass"),()=>s("Callback"),()=>s("Homematic Manager Address"),()=>s("Select"),()=>s("The address the interface processes call back to"),()=>s("Callback XML-RPC port"),()=>s("0 picks a free port"),()=>s("Callback BIN-RPC port"),()=>s("0 picks a free port"),()=>s("Interfaces"),()=>s("Configured interfaces"),()=>s("Detect interfaces"),()=>s("Probes the known ports in the background"),()=>s("Use ReGa"),()=>s("ReGa supplies the friendly names"),()=>s("Confirm the ReGa inbox automatically"),()=>s("Only possible with ReGa"),()=>s("Behaviour"),()=>s("Language"),()=>s("RPC Delay (ms)"),()=>s("Shortest pause between two writes"),()=>s("Acknowledge STICKY_UNREACH automatically"),()=>s("Acknowledging is a write to the device"),()=>s("RPC Log Folder"),()=>s("Empty switches the dumps off"),()=>s("Clear Cache"),()=>s("Discards the caches when this is saved"),()=>s("Extra interfaces"),()=>s("Add interface")]),Tt(ie,()=>t(i).host,ze=>t(i).host=ze),ce("change",de,ze=>{t(i)&&ze.currentTarget.value!==""&&(t(i).host=ze.currentTarget.value)}),ce("click",H,()=>{D()}),nn(je,()=>t(i).tls,ze=>t(i).tls=ze),nn(Ce,()=>t(o),ze=>m(o,ze)),ce("input",ye,ze=>ue("user",ze.currentTarget.value)),ce("input",He,ze=>ue("password",ze.currentTarget.value)),dn(ct,()=>t(i).callback.ip,ze=>t(i).callback.ip=ze),Tt(Mn,()=>t(i).callback.xmlrpcPort,ze=>t(i).callback.xmlrpcPort=ze),Tt(Dr,()=>t(i).callback.binrpcPort,ze=>t(i).callback.binrpcPort=ze),nn(pn,()=>t(i).autoDetect,ze=>t(i).autoDetect=ze),nn(ki,()=>t(i).rega,ze=>t(i).rega=ze),ce("change",ha,ze=>te(ze.currentTarget.checked)),Tt(Pi,()=>t(i).writePaceMs,ze=>t(i).writePaceMs=ze),ce("change",ns,ze=>re(ze.currentTarget.checked)),Tt(Gi,()=>t(i).rpcLogFolder,ze=>t(i).rpcLogFolder=ze),nn(Vi,()=>t(l),ze=>m(l,ze)),ce("click",Wi,P),p(ae,J)};ve(z,ae=>{t(i)&&ae(ne)})}p($,W)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click","change","input"]);var Pm=k('<div class="hmm-toolbar-trailing svelte-1ld6r3r"><!></div>'),Lm=k('<div class="hmm-toolbar svelte-1ld6r3r" role="toolbar"><div class="hmm-toolbar-group svelte-1ld6r3r"><!></div> <!></div>');function Mm(r,e){let n=K(e,"label",3,"Toolbar"),a=K(e,"children",3,void 0),s=K(e,"trailing",3,void 0),i=K(e,"testId",3,void 0);var o=Lm(),l=A(o),d=A(l);{var h=y=>{var S=lt(),E=ke(S);Jn(E,a),p(y,S)};ve(d,y=>{a()&&y(h)})}var g=c(l,2);{var b=y=>{var S=Pm(),E=A(S);Jn(E,s),p(y,S)};ve(g,y=>{s()&&y(b)})}N(()=>{C(o,"aria-label",n()),C(o,"data-testid",i())}),p(r,o)}const Om=["address","device_address","channel_address","interface_address","team_address"];function Fm(r){if(r.values)return"select";if(r.bitmask)return"flags";switch(r.type){case"bool":case"boolean":return"bool";case"integer":return"number";case"paramset":return"struct";case"RpcStruct[]":return"json";case"mixed":case"variant":return"variant";default:return"text"}}function Gm(r){return Om.includes(r.type)}function ws(r){return(dh(r)??ch(r)).params.map(n=>({name:n.name,type:n.type,kind:Fm(n),optional:n.optional??[],...n.values?{options:n.values}:{},...n.bitmask?{options:n.bitmask}:{}}))}function Ys(r){switch(r.kind){case"bool":return!1;case"number":case"flags":return 0;case"struct":return[];case"variant":return{type:"string",value:""};case"select":return Object.keys(r.options??{})[0]??"";default:return""}}function ko(r){switch(r.type){case"bool":return r.value==="true"||r.value==="1";case"integer":return Number.parseInt(r.value,10)||0;case"double":return Number.parseFloat(r.value)||0;default:return r.value}}function Or(r){return typeof r=="object"?JSON.stringify(r):String(r)}function Um(r,e){switch(r.kind){case"bool":return e===!0||e==="true";case"number":case"flags":return typeof e=="number"?e:Number.parseInt(Or(e),10)||0;case"struct":{const n={};for(const a of Array.isArray(e)?e:[])a.key!==""&&(n[a.key]=ko(a));return n}case"variant":{const n=e;return ko({type:n.type,value:n.value})}case"json":return Bm(Or(e));case"select":return/^-?\d+$/.test(Or(e))?Number(e):Or(e);default:return Or(e)}}function Vm(r,e){return r.map((n,a)=>Um(n,e[a]??Ys(n)))}function Bm(r){if(r.trim()==="")return[];try{return JSON.parse(r)}catch{return[]}}function zm(r){if(r.trim()==="")return!0;try{return JSON.parse(r),!0}catch{return!1}}var Hm=k("<span> </span>"),Wm=k("<!> <!>",1),Ro=k("<option> </option>"),Km=k('<p class="hmm-console-hint svelte-17kjuug"> </p>'),Ym=k('<input type="checkbox"/>'),jm=k('<input class="hmm-input" type="number"/>'),qm=k('<select class="hmm-select"></select>'),$m=k('<label><input type="checkbox"/> <span> </span></label>'),Xm=k('<div class="hmm-console-flags svelte-17kjuug"><!> <span class="hmm-console-arg-type svelte-17kjuug"> </span></div>'),Qm=k('<div class="hmm-console-struct-row svelte-17kjuug"><input class="hmm-input"/> <select class="hmm-select"><option>string</option><option>integer</option><option>double</option><option>bool</option></select> <input class="hmm-input"/> <button type="button" class="hmm-button">✕</button></div>'),Zm=k('<div class="hmm-console-struct svelte-17kjuug"><!> <button type="button" class="hmm-button">+</button></div>'),Jm=k('<div class="hmm-console-struct-row svelte-17kjuug"><select class="hmm-select"><option>string</option><option>integer</option><option>double</option><option>bool</option></select> <input class="hmm-input"/></div>'),ep=k("<textarea></textarea>"),tp=k('<input class="hmm-input"/>'),np=k('<span class="hmm-console-arg-type svelte-17kjuug"> </span>'),rp=k('<div class="hmm-console-arg svelte-17kjuug"><label class="hmm-console-arg-label svelte-17kjuug"> <span class="hmm-console-arg-type svelte-17kjuug"> </span></label> <!> <!></div>'),ap=k("<option></option>"),sp=k('<span class="hmm-console-error svelte-17kjuug" data-testid="console-error"> </span>'),ip=k('<li><button type="button"><span class="hmm-console-history-time svelte-17kjuug"> </span> <span class="hmm-mono"> </span></button></li>'),op=k('<section class="hmm-console-help svelte-17kjuug"><h3 class="svelte-17kjuug"> </h3> <p data-testid="console-help"> </p></section>'),lp=k('<div class="hmm-page svelte-17kjuug"><!> <div class="hmm-console-top svelte-17kjuug"><select class="hmm-select hmm-console-method svelte-17kjuug" data-testid="console-method"><option> </option><!></select> <output class="hmm-console-params hmm-mono svelte-17kjuug" data-testid="console-params"> </output> <button type="button" class="hmm-button" data-testid="console-send-button"> </button></div> <div class="hmm-console-columns svelte-17kjuug"><section class="hmm-console-panel svelte-17kjuug"><h3 class="svelte-17kjuug"> </h3> <!> <!> <datalist id="hmm-console-addresses"></datalist></section> <section class="hmm-console-panel svelte-17kjuug"><h3 class="svelte-17kjuug"> <!></h3> <textarea class="hmm-console-response hmm-mono svelte-17kjuug" data-testid="console-response" readonly=""></textarea> <h3 class="svelte-17kjuug"> </h3> <ul class="hmm-console-history svelte-17kjuug" data-testid="console-history"></ul></section></div> <!></div>');function dp(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(""),i=M(xe([])),o=M(void 0);const l=v(()=>n.app.selectedInterface),d=v(()=>n.console.of(t(l))),h=v(()=>t(s)===""?[]:ws(t(s))),g=v(()=>n.console.method(t(l),t(s))),b=v(()=>n.devices.index(t(l))?.all().map(R=>R.ADDRESS)??[]),y=v(()=>Vm(t(h),t(i)));ot(()=>{n.console.load(t(l))});function S(R){m(s,R,!0),m(i,ws(R).map(L=>Ys(L)),!0),m(o,void 0)}function E(R,L){m(i,t(i).map((H,_e)=>_e===R?L:H),!0)}function _(R){const L=t(i)[R];return Array.isArray(L)?L:[]}function T(R){const L=t(i)[R];return typeof L=="object"&&!Array.isArray(L)?L:{type:"string",value:""}}function I(R){E(R,[..._(R),{key:"",type:"string",value:""}])}function w(R,L,H){E(R,_(R).map((_e,Se)=>Se===L?{..._e,...H}:_e))}function D(R,L){E(R,_(R).filter((H,_e)=>_e!==L))}function P(R,L,H){const _e=typeof t(i)[R]=="number"?t(i)[R]:0;E(R,H?_e|L:_e&~L)}async function U(){t(s)!==""&&m(o,await n.console.call(t(l),t(s),t(y)),!0)}function re(R){return typeof R=="object"&&R!==null&&!Array.isArray(R)}function te(R){m(s,R.method,!0);const L=ws(R.method);m(i,L.map((H,_e)=>{const Se=R.params[_e];return H.kind==="struct"&&re(Se)?Object.entries(Se).map(([De,Oe])=>({key:De,type:typeof Oe=="boolean"?"bool":typeof Oe=="number"?"double":"string",value:String(Oe)})):H.kind==="json"?JSON.stringify(Se??[]):H.kind==="bool"?Se===!0:H.kind==="number"||H.kind==="flags"?typeof Se=="number"?Se:0:Se===void 0?Ys(H):String(Se)}),!0),m(o,void 0)}var oe=lp(),ue=A(oe);{const R=H=>{var _e=Hm(),Se=f(_e);N(De=>u(Se,`${t(d).length??""} ${De??""}`),[()=>a("Method")]),p(H,_e)};let L=v(()=>a("RPC Console"));Mm(ue,{get label(){return t(L)},trailing:R,children:(H,_e)=>{var Se=Wm(),De=ke(Se);{let Ue=v(()=>a("Send request")),Ve=v(()=>t(s)===""||n.console.running),Me=v(()=>a("Please select method"));mt(De,{get title(){return t(Ue)},icon:"▸",get disabled(){return t(Ve)},get reason(){return t(Me)},testId:"console-send",onclick:()=>{U()}})}var Oe=c(De,2);{let Ue=v(()=>a("Clear"));mt(Oe,{get title(){return t(Ue)},icon:"⌫",testId:"console-clear",onclick:()=>{n.console.clear(),m(o,void 0)}})}p(H,Se)},$$slots:{trailing:!0,default:!0}})}var x=c(ue,2),X=A(x),$=A(X),ee=f($,!0);$.value=$.__value="";var W=c($);Ne(W,17,()=>t(d),R=>R.name,(R,L)=>{var H=Ro(),_e=f(H,!0),Se={};N(()=>{u(_e,t(L).name),Se!==(Se=t(L).name)&&(H.value=(H.__value=Se)??"")}),p(R,H)});var z;St(X);var ne=c(X,2),ae=f(ne),J=c(ne,2),q=f(J,!0),V=c(x,2),Y=A(V),he=A(Y),Q=f(he,!0),Ee=c(he,2);{var Ae=R=>{var L=Km(),H=f(L,!0);N(_e=>u(H,_e),[()=>t(s)===""?a("Please select method"):a("No data")]),p(R,L)};ve(Ee,R=>{t(h).length===0&&R(Ae)})}var j=c(Ee,2);Ne(j,19,()=>t(h),R=>R.name,(R,L,H)=>{var _e=rp(),Se=A(_e),De=A(Se),Oe=c(De),Ue=f(Oe,!0),Ve=c(Se,2);{var Me=Re=>{var Te=Ym();N(()=>{C(Te,"id",`arg-input-${t(L).name}`),zn(Te,t(i)[t(H)]===!0)}),ce("change",Te,Pe=>E(t(H),Pe.currentTarget.checked)),p(Re,Te)},je=Re=>{var Te=jm();N(Pe=>{C(Te,"id",`arg-input-${t(L).name}`),gt(Te,Pe)},[()=>String(t(i)[t(H)]??0)]),ce("input",Te,Pe=>E(t(H),Number(Pe.currentTarget.value))),p(Re,Te)},me=Re=>{var Te=qm();Ne(Te,21,()=>Object.entries(t(L).options??{}),([ye,Le])=>ye,(ye,Le)=>{var Ge=v(()=>qi(t(Le),2));let Fe=()=>t(Ge)[0],We=()=>t(Ge)[1];var He=Ro(),Ze=f(He),st={};N(()=>{u(Ze,`${We()??""} (${Fe()??""})`),st!==(st=Fe())&&(He.value=(He.__value=st)??"")}),p(ye,He)});var Pe;St(Te),N(ye=>{C(Te,"id",`arg-input-${t(L).name}`),Pe!==(Pe=ye)&&(Te.value=(Te.__value=Pe)??"",Wt(Te,Pe))},[()=>String(t(i)[t(H)]??"")]),ce("change",Te,ye=>E(t(H),ye.currentTarget.value)),p(Re,Te)},Ie=Re=>{var Te=Xm(),Pe=A(Te);Ne(Pe,17,()=>Object.entries(t(L).options??{}),([Ge,Fe])=>Ge,(Ge,Fe)=>{var We=v(()=>qi(t(Fe),2));let He=()=>t(We)[0],Ze=()=>t(We)[1];var st=$m(),_t=A(st),Ke=c(_t,2),Ye=f(Ke,!0);N(tt=>{zn(_t,tt),u(Ye,Ze())},[()=>(t(i)[t(H)]&Number(He()))!==0]),ce("change",_t,tt=>P(t(H),Number(He()),tt.currentTarget.checked)),p(Ge,st)});var ye=c(Pe,2),Le=f(ye);N(Ge=>u(Le,`= ${Ge??""}`),[()=>String(t(i)[t(H)]??0)]),p(Re,Te)},se=Re=>{var Te=Zm(),Pe=A(Te);Ne(Pe,17,()=>_(t(H)),$l,(Le,Ge,Fe)=>{var We=Qm(),He=A(We),Ze=c(He,2),st=A(Ze);st.value=st.__value="string";var _t=c(st);_t.value=_t.__value="integer";var Ke=c(_t);Ke.value=Ke.__value="double";var Ye=c(Ke);Ye.value=Ye.__value="bool";var tt;St(Ze);var dt=c(Ze,2),nt=c(dt,2);N((ct,Ot,Lt,mn)=>{C(He,"aria-label",ct),gt(He,t(Ge).key),C(Ze,"aria-label",Ot),tt!==(tt=t(Ge).type)&&(Ze.value=(Ze.__value=tt)??"",Wt(Ze,tt)),C(dt,"aria-label",Lt),gt(dt,t(Ge).value),C(nt,"aria-label",mn)},[()=>`${t(L).name} ${String(Fe)} key`,()=>`${t(L).name} ${String(Fe)} type`,()=>`${t(L).name} ${String(Fe)} value`,()=>`${t(L).name} ${String(Fe)} remove`]),ce("input",He,ct=>w(t(H),Fe,{key:ct.currentTarget.value})),ce("change",Ze,ct=>w(t(H),Fe,{type:ct.currentTarget.value})),ce("input",dt,ct=>w(t(H),Fe,{value:ct.currentTarget.value})),ce("click",nt,()=>D(t(H),Fe)),p(Le,We)});var ye=c(Pe,2);N(()=>C(ye,"data-testid",`arg-${t(L).name}-add`)),ce("click",ye,()=>I(t(H))),p(Re,Te)},we=Re=>{var Te=Jm(),Pe=A(Te),ye=A(Pe);ye.value=ye.__value="string";var Le=c(ye);Le.value=Le.__value="integer";var Ge=c(Le);Ge.value=Ge.__value="double";var Fe=c(Ge);Fe.value=Fe.__value="bool";var We;St(Pe);var He=c(Pe,2);N((Ze,st)=>{C(Pe,"aria-label",`${t(L).name} type`),We!==(We=Ze)&&(Pe.value=(Pe.__value=We)??"",Wt(Pe,We)),C(He,"id",`arg-input-${t(L).name}`),gt(He,st)},[()=>T(t(H)).type,()=>T(t(H)).value]),ce("change",Pe,Ze=>E(t(H),{...T(t(H)),type:Ze.currentTarget.value})),ce("input",He,Ze=>E(t(H),{...T(t(H)),value:Ze.currentTarget.value})),p(Re,Te)},et=Re=>{var Te=ep();let Pe;N((ye,Le)=>{C(Te,"id",`arg-input-${t(L).name}`),Pe=ht(Te,1,"hmm-input hmm-console-json svelte-17kjuug",null,Pe,{"hmm-console-invalid":ye}),gt(Te,Le)},[()=>!zm(String(t(i)[t(H)]??"")),()=>String(t(i)[t(H)]??"")]),ce("input",Te,ye=>E(t(H),ye.currentTarget.value)),p(Re,Te)},Be=Re=>{var Te=tp();N((Pe,ye)=>{C(Te,"id",`arg-input-${t(L).name}`),C(Te,"list",Pe),gt(Te,ye)},[()=>Gm(t(L))?"hmm-console-addresses":void 0,()=>String(t(i)[t(H)]??"")]),ce("input",Te,Pe=>E(t(H),Pe.currentTarget.value)),p(Re,Te)};ve(Ve,Re=>{t(L).kind==="bool"?Re(Me):t(L).kind==="number"?Re(je,1):t(L).kind==="select"?Re(me,2):t(L).kind==="flags"?Re(Ie,3):t(L).kind==="struct"?Re(se,4):t(L).kind==="variant"?Re(we,5):t(L).kind==="json"?Re(et,6):Re(Be,-1)})}var Ce=c(Ve,2);{var qe=Re=>{var Te=np(),Pe=f(Te);N((ye,Le)=>u(Pe,`${ye??""}: ${Le??""}`),[()=>a("optional"),()=>t(L).optional.join(", ")]),p(Re,Te)};ve(Ce,Re=>{t(L).optional.length>0&&Re(qe)})}N(()=>{C(_e,"data-testid",`arg-${t(L).name}`),C(Se,"for",`arg-input-${t(L).name}`),u(De,`${t(L).name??""} `),u(Ue,t(L).type)}),p(R,_e)});var pe=c(j,2);Ne(pe,20,()=>t(b),R=>R,(R,L)=>{var H=ap(),_e={};N(()=>{_e!==(_e=L)&&(H.value=(H.__value=_e)??"")}),p(R,H)});var B=c(Y,2),ie=A(B),be=A(ie),fe=c(be);{var le=R=>{var L=sp(),H=f(L,!0);N(()=>u(H,t(o).error)),p(R,L)};ve(fe,R=>{t(o)&&!t(o).ok&&R(le)})}var O=c(ie,2),F=c(O,2),Z=f(F,!0),ge=c(F,2);Ne(ge,21,()=>n.console.history,R=>R.id,(R,L)=>{var H=ip(),_e=A(H);let Se;var De=A(_e),Oe=f(De,!0),Ue=c(De,2),Ve=f(Ue);N((Me,je)=>{Se=ht(_e,1,"hmm-console-history-item svelte-17kjuug",null,Se,{"hmm-console-history-failed":!t(L).ok}),u(Oe,Me),u(Ve,`${t(L).method??""}(${je??""})`)},[()=>gi(t(L).timestamp),()=>JSON.stringify(t(L).params).slice(1,-1)]),ce("click",_e,()=>te(t(L))),p(R,H)});var de=c(V,2);{var G=R=>{var L=op(),H=A(L),_e=f(H,!0),Se=c(H,2),De=f(Se,!0);N(Oe=>{u(_e,t(g).name),u(De,Oe)},[()=>t(g).help.replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim()]),p(R,L)};ve(de,R=>{t(g)?.help&&R(G)})}N((R,L,H,_e,Se,De,Oe,Ue,Ve)=>{C(X,"aria-label",R),u(ee,L),z!==(z=t(s))&&(X.value=(X.__value=z)??"",Wt(X,z)),u(ae,`${t(s)??""}(${H??""})`),J.disabled=t(s)===""||n.console.running,u(q,_e),u(Q,Se),u(be,`${De??""} `),C(O,"aria-label",Oe),gt(O,Ue),u(Z,Ve)},[()=>a("Please select method"),()=>a("Please select method"),()=>JSON.stringify(t(y)).slice(1,-1),()=>a("Send request"),()=>a("Parameters"),()=>a("Response"),()=>a("Response"),()=>t(o)===void 0?"":t(o).ok?JSON.stringify(t(o).result,void 0,2):`${t(o).error??""}${t(o).faultCode===void 0?"":` (${t(o).faultCode})`}`,()=>a("History")]),ce("change",X,R=>S(R.currentTarget.value)),ce("click",J,()=>{U()}),p(r,oe),Xe()}rt(["change","click","input"]);function cp(r,e,n,a,s=4){const i=Math.max(s,a.width-n.width-s),o=Math.max(s,a.height-n.height-s);return{x:Math.min(Math.max(s,r),i),y:Math.min(Math.max(s,e),o)}}var up=k('<div class="hmm-context-separator svelte-192vamk" role="separator"></div>'),vp=k('<button type="button" role="menuitem"> </button>'),fp=k('<div class="hmm-context-menu svelte-192vamk" role="menu"></div>');function kd(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"x",3,0),s=K(e,"y",3,0),i=K(e,"onselect",3,void 0),o=K(e,"onclose",3,void 0),l=K(e,"label",3,"Menu"),d=K(e,"testId",3,void 0),h=M(void 0),g=M(xe({x:0,y:0}));ot(()=>{if(!n()||!t(h))return;const I=t(h).getBoundingClientRect();m(g,cp(a(),s(),{width:I.width||180,height:I.height||0},{width:window.innerWidth,height:window.innerHeight}),!0),t(h).querySelector("button:not(:disabled)")?.focus()});function b(){n(!1),o()?.()}function y(I){I.disabled===!0||I.separator===!0||(b(),i()?.(I.id))}function S(I){I.key==="Escape"&&(I.preventDefault(),b())}var E=lt();Bn("keydown",Er,S),Bn("mousedown",Er,I=>{n()&&t(h)&&I.target instanceof Node&&!t(h).contains(I.target)&&b()});var _=ke(E);{var T=I=>{var w=fp();let D;Ne(w,21,()=>e.items,P=>P.id,(P,U)=>{var re=lt(),te=ke(re);{var oe=x=>{var X=up();p(x,X)},ue=x=>{var X=vp();let $;var ee=f(X,!0);N(()=>{$=ht(X,1,"hmm-context-item svelte-192vamk",null,$,{"hmm-context-danger":t(U).danger===!0}),X.disabled=t(U).disabled===!0,u(ee,t(U).label??t(U).id)}),ce("click",X,()=>y(t(U))),p(x,X)};ve(te,x=>{t(U).separator===!0?x(oe):x(ue,-1)})}p(P,re)}),Un(w,P=>m(h,P),()=>t(h)),N(()=>{C(w,"aria-label",l()),C(w,"data-testid",d()),D=qt(w,"",D,{left:`${t(g).x}px`,top:`${t(g).y}px`})}),p(I,w)};ve(_,I=>{n()&&I(T)})}p(r,E),Xe()}rt(["click"]);const hp=30,Rd=20,Zr=Rd+12;function js(r,e){if(e.value)return e.value(r);const n=r[e.key];if(n!=null)return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?n:String(n)}function qs(r,e){const n=js(r,e);return n===void 0?"":String(n)}function $s(r){return r.sortable!==!1&&r.hidden!==!0}function Id(r){return r.filterable!==!1&&r.hidden!==!0}function Io(r,e){return r.toLowerCase().includes(e.toLowerCase())}function Do(r,e,n,a){for(const s of e){const i=a[s.key];if(i!==void 0&&i!==""&&!Io(qs(r,s),i))return!1}return n.trim()===""?!0:e.filter(s=>Id(s)).some(s=>Io(qs(r,s),n))}function mp(r,e){const n=r===void 0||r==="",a=e===void 0||e==="";return n||a?n&&a?0:n?1:-1:typeof r=="number"&&typeof e=="number"?r-e:typeof r=="boolean"&&typeof e=="boolean"?Number(r)-Number(e):String(r).localeCompare(String(e),void 0,{numeric:!0,sensitivity:"base"})}function pp(r){const{rows:e,columns:n,getId:a,children:s,expanded:i}=r,o=r.globalFilter??"",l=r.columnFilters??{},d=r.subColumns??n,g=o.trim()!==""||Object.values(l).some(S=>S!=="")?e.filter(S=>Do(S,n,o,l)||(s?.(S)??[]).some(E=>Do(E,d,o,l))):[...e],b=r.sort;if(b){const S=n.find(E=>E.key===b.key);if(S&&$s(S)){const E=b.direction==="asc"?1:-1;g.sort((_,T)=>E*mp(js(_,S),js(T,S)))}}const y=[];for(const S of g){const E=a(S),_=s?.(S)??[],T=i.has(E);if(y.push({id:E,key:E,row:S,depth:0,hasChildren:_.length>0,expanded:T,rootId:E,kind:"row"}),!!T){r.subHeader===!0&&_.length>0&&y.push({id:`${E}::header`,key:`${E}::header`,row:S,depth:1,hasChildren:!1,expanded:!1,rootId:E,kind:"header"});for(const I of _)y.push({id:a(I),key:`${E}/${a(I)}`,row:I,depth:1,hasChildren:!1,expanded:!1,rootId:E,kind:"row"})}}return y}function gp(r,e,n,a,s=6){if(r===0||a<=0)return{start:0,end:0};const i=Math.max(1,Math.ceil((n<=0?a:n)/a)),o=Math.max(0,Math.min(r-1,Math.floor(e/a)-s)),l=Math.min(r,o+i+s*2);return{start:o,end:l}}const No=56,_p=120;function bp(r){return r.width===void 0?`minmax(${No}px, ${_p}fr)`:r.fixed?`${r.width}px`:`minmax(${Math.min(r.width,No)}px, ${r.width}fr)`}function xo(r){return{key:r.key,width:r.width,fixed:r.fixed===!0}}function Ep(r,e,n){const a=r.filter(d=>d.hidden!==!0).map(d=>xo(d));let s=0;for(const d of e??[]){if(d.hidden===!0)continue;const h=a.findIndex(g=>g.key===d.key);if(h>=0){s=h+1;continue}a.splice(s,0,xo(d)),s+=1}const i=n?2:1,o={};for(const[d,h]of a.entries())o[h.key]=d+i;const l=a.map(d=>bp(d));return{template:n?`22px ${l.join(" ")}`:l.join(" "),track:o}}function Sp(r,e,n){const a=r.findIndex(l=>l.id===e),s=r.findIndex(l=>l.id===n);if(a===-1||s===-1)return s===-1?[]:[n];const[i,o]=a<=s?[a,s]:[s,a];return r.slice(i,o+1).filter(l=>l.kind!=="header").map(l=>l.id)}function yp(r,e,n,a,s){if(s.shift===!0&&n!==void 0)return{selected:Sp(r,n,a),anchorId:n};if(s.ctrl===!0){const i=new Set(e);return i.has(a)?i.delete(a):i.add(a),{selected:[...i],anchorId:a}}return{selected:[a],anchorId:a}}var Ap=k('<span class="hmm-table-caption svelte-16k18c8"> </span>'),Tp=k('<div class="hmm-table-actions svelte-16k18c8" role="toolbar"><!></div>'),wp=k('<span class="hmm-table-count svelte-16k18c8"> </span>'),kp=k('<div class="hmm-table-band svelte-16k18c8"><!> <!> <div class="hmm-table-trailing svelte-16k18c8"><!> <!></div></div>'),Rp=k('<div class="hmm-th hmm-th-expander svelte-16k18c8" role="columnheader"></div>'),Ip=k('<span class="hmm-th-sort svelte-16k18c8" aria-hidden="true"> </span>'),Dp=k('<button type="button" class="hmm-th-button svelte-16k18c8"><span> </span> <!></button>'),Np=k("<span> </span>"),xp=k('<div class="hmm-th svelte-16k18c8" role="columnheader"><!></div>'),Cp=k('<div class="hmm-tf-spacer"></div>'),Pp=k('<input class="hmm-input hmm-tf-input svelte-16k18c8" type="search"/>'),Lp=k('<div class="hmm-tf svelte-16k18c8"><!></div>'),Mp=k('<div class="hmm-table-filters svelte-16k18c8"><!> <!></div>'),Op=k('<div class="hmm-table-empty svelte-16k18c8"> </div>'),Fp=k('<button type="button" class="hmm-expander svelte-16k18c8"> </button>'),Gp=k('<div class="hmm-td hmm-td-expander svelte-16k18c8"><!></div>'),Up=k('<div role="gridcell"><!></div>'),Vp=k('<div role="row" tabindex="-1"><!> <!></div>'),Bp=k('<div class="hmm-table-spacer svelte-16k18c8"><div class="hmm-table-rows svelte-16k18c8"></div></div>'),zp=k('<div class="hmm-table svelte-16k18c8"><!> <div class="hmm-table-grid svelte-16k18c8" role="grid" tabindex="0"><div class="hmm-table-head svelte-16k18c8" role="row"><!> <!></div> <!> <div class="hmm-table-body svelte-16k18c8"><!></div></div></div>');function Tr(r,e){$e(e,!0);let n=K(e,"subRows",3,void 0),a=K(e,"subColumns",3,void 0),s=K(e,"rowHeight",3,hp),i=K(e,"height",3,void 0),o=K(e,"overscan",3,6),l=K(e,"columnFilterRow",3,!0),d=K(e,"caption",3,void 0),h=K(e,"emptyText",3,""),g=K(e,"filterLabel",3,"Filter"),b=K(e,"toolbar",3,void 0),y=K(e,"toolbarLabel",3,void 0),S=K(e,"status",3,void 0),E=K(e,"countText",3,void 0),_=K(e,"selected",31,()=>xe([])),T=K(e,"expanded",31,()=>xe([])),I=K(e,"filter",11,""),w=K(e,"sort",15,void 0),D=K(e,"onactivate",3,void 0),P=K(e,"onrowcontextmenu",3,void 0),U=K(e,"cell",3,void 0),re=K(e,"testId",3,void 0),te=M(xe({})),oe=M(0),ue=M(0),x=M(0),X=M(0),$=M(void 0),ee=M(void 0);const W=v(()=>e.columns.filter(me=>me.hidden!==!0)),z=v(()=>(a()??e.columns).filter(me=>me.hidden!==!0)),ne=v(()=>n()!==void 0),ae=v(()=>Ep(e.columns,a(),t(ne))),J=v(()=>t(ae).template),q=v(()=>new Set(T())),V=v(()=>d()!==void 0||b()!==void 0||S()!==void 0||E()!==void 0),Y=v(()=>new Set(_())),he=v(()=>pp({rows:e.rows,columns:e.columns,getId:e.getId,children:n(),expanded:t(q),globalFilter:I(),columnFilters:t(te),sort:w(),subColumns:a(),subHeader:a()!==void 0})),Q=v(()=>i()??t(ue)),Ee=v(()=>gp(t(he).length,t(oe),t(Q),s(),o())),Ae=v(()=>t(he).slice(t(Ee).start,t(Ee).end));ot(()=>{const me=t(ee);if(!me)return;const Ie=()=>{i()===void 0&&m(ue,me.clientHeight,!0),m(X,me.offsetWidth-me.clientWidth)};Ie();const se=new ResizeObserver(Ie);return se.observe(me),()=>{se.disconnect()}});function j(me){$s(me)&&(w()?.key!==me.key?w({key:me.key,direction:"asc"}):w().direction==="asc"?w({key:me.key,direction:"desc"}):w(void 0))}function pe(me){T(t(q).has(me)?T().filter(Ie=>Ie!==me):[...T(),me])}function B(me,Ie){if(me.kind==="header")return;const se=yp(t(he),_(),t($),me.id,Ie);_(se.selected),m($,se.anchorId,!0),m(x,t(he).findIndex(we=>we.id===me.id),!0)}function ie(me,Ie){B(me,{ctrl:Ie.ctrlKey||Ie.metaKey,shift:Ie.shiftKey})}function be(me,Ie){!P()||me.kind==="header"||(Ie.preventDefault(),t(Y).has(me.id)||B(me,{}),P()(me.row,Ie))}function fe(){const me=t(ee);if(!me)return;const Ie=t(x)*s(),se=t(Q)===0?me.clientHeight:t(Q);Ie<me.scrollTop?me.scrollTop=Ie:Ie+s()>me.scrollTop+se&&(me.scrollTop=Ie+s()-se)}function le(me,Ie){if(t(he).length===0)return;const se=Math.min(t(he).length-1,Math.max(0,t(x)+me)),we=t(he)[se];we&&(m(x,se,!0),B(we,{shift:Ie}),fe())}function O(me){const Ie=t(he)[t(x)];switch(me.key){case"ArrowDown":me.preventDefault(),le(1,me.shiftKey);break;case"ArrowUp":me.preventDefault(),le(-1,me.shiftKey);break;case"Home":me.preventDefault(),le(-t(he).length,me.shiftKey);break;case"End":me.preventDefault(),le(t(he).length,me.shiftKey);break;case"ArrowRight":Ie?.hasChildren===!0&&!Ie.expanded&&(me.preventDefault(),pe(Ie.id));break;case"ArrowLeft":Ie?.hasChildren===!0&&Ie.expanded&&(me.preventDefault(),pe(Ie.id));break;case"Enter":Ie&&D()&&(me.preventDefault(),D()(Ie.row));break;case" ":Ie&&(me.preventDefault(),B(Ie,{ctrl:!0}));break}}var F=zp(),Z=A(F);{var ge=me=>{var Ie=kp(),se=A(Ie);{var we=ye=>{var Le=Ap(),Ge=f(Le,!0);N(()=>u(Ge,d())),p(ye,Le)};ve(se,ye=>{d()!==void 0&&ye(we)})}var et=c(se,2);{var Be=ye=>{var Le=Tp(),Ge=A(Le);Jn(Ge,b),N(()=>C(Le,"aria-label",y()??d()??g())),p(ye,Le)};ve(et,ye=>{b()&&ye(Be)})}var Ce=c(et,2),qe=A(Ce);{var Re=ye=>{var Le=lt(),Ge=ke(Le);Jn(Ge,S),p(ye,Le)};ve(qe,ye=>{S()&&ye(Re)})}var Te=c(qe,2);{var Pe=ye=>{var Le=wp(),Ge=f(Le,!0);N(()=>{C(Le,"data-testid",re()===void 0?void 0:`${re()}-count`),u(Ge,E())}),p(ye,Le)};ve(Te,ye=>{E()!==void 0&&ye(Pe)})}p(me,Ie)};ve(Z,me=>{t(V)&&me(ge)})}var de=c(Z,2),G=A(de);let R;var L=A(G);{var H=me=>{var Ie=Rp();p(me,Ie)};ve(L,me=>{t(ne)&&me(H)})}var _e=c(L,2);Ne(_e,17,()=>t(W),me=>me.key,(me,Ie)=>{var se=xp();let we;var et=A(se);{var Be=Re=>{var Te=Dp(),Pe=A(Te),ye=f(Pe,!0),Le=c(Pe,2);{var Ge=Fe=>{var We=Ip(),He=f(We,!0);N(()=>u(He,w().direction==="asc"?"▲":"▼")),p(Fe,We)};ve(Le,Fe=>{w()?.key===t(Ie).key&&Fe(Ge)})}N(()=>u(ye,t(Ie).label)),ce("click",Te,()=>j(t(Ie))),p(Re,Te)},Ce=v(()=>$s(t(Ie))),qe=Re=>{var Te=Np(),Pe=f(Te,!0);N(()=>u(Pe,t(Ie).label)),p(Re,Te)};ve(et,Re=>{t(Ce)?Re(Be):Re(qe,-1)})}N(()=>{C(se,"aria-sort",w()?.key===t(Ie).key?w().direction==="asc"?"ascending":"descending":"none"),we=qt(se,"",we,{"grid-column":t(ae).track[t(Ie).key],"text-align":t(Ie).align??"left"})}),p(me,se)});var Se=c(G,2);{var De=me=>{var Ie=Mp();let se;var we=A(Ie);{var et=Ce=>{var qe=Cp();p(Ce,qe)};ve(we,Ce=>{t(ne)&&Ce(et)})}var Be=c(we,2);Ne(Be,17,()=>t(W),Ce=>Ce.key,(Ce,qe)=>{var Re=Lp();let Te;var Pe=A(Re);{var ye=Ge=>{var Fe=Pp();N(()=>{C(Fe,"aria-label",`${g()}: ${t(qe).label}`),gt(Fe,t(te)[t(qe).key]??"")}),ce("input",Fe,We=>{m(te,{...t(te),[t(qe).key]:We.currentTarget.value},!0)}),p(Ge,Fe)},Le=v(()=>Id(t(qe)));ve(Pe,Ge=>{t(Le)&&Ge(ye)})}N(()=>Te=qt(Re,"",Te,{"grid-column":t(ae).track[t(qe).key]})),p(Ce,Re)}),N(()=>se=qt(Ie,"",se,{"grid-template-columns":t(J),"padding-right":`${t(X)}px`})),p(me,Ie)};ve(Se,me=>{l()&&me(De)})}var Oe=c(Se,2);let Ue;var Ve=A(Oe);{var Me=me=>{var Ie=Op(),se=f(Ie,!0);N(()=>u(se,h())),p(me,Ie)},je=me=>{var Ie=Bp();let se;var we=A(Ie);let et;Ne(we,23,()=>t(Ae),Be=>Be.key,(Be,Ce,qe)=>{var Re=Vp();let Te,Pe;var ye=A(Re);{var Le=Fe=>{var We=Gp(),He=A(We);{var Ze=st=>{var _t=Fp(),Ke=f(_t,!0);N(()=>{C(_t,"aria-expanded",t(Ce).expanded),C(_t,"aria-label",t(Ce).expanded?"Collapse row":"Expand row"),u(Ke,t(Ce).expanded?"−":"+")}),ce("click",_t,Ye=>{Ye.stopPropagation(),pe(t(Ce).id)}),p(st,_t)};ve(He,st=>{t(Ce).hasChildren&&st(Ze)})}p(Fe,We)};ve(ye,Fe=>{t(ne)&&Fe(Le)})}var Ge=c(ye,2);Ne(Ge,17,()=>t(Ce).depth>0?t(z):t(W),Fe=>Fe.key,(Fe,We)=>{var He=Up();let Ze,st;var _t=A(He);{var Ke=dt=>{var nt=Cn();N(()=>u(nt,t(We).label)),p(dt,nt)},Ye=dt=>{var nt=lt(),ct=ke(nt);Jn(ct,U,()=>t(Ce).row,()=>t(We),()=>t(Ce)),p(dt,nt)},tt=dt=>{var nt=Cn();N(ct=>u(nt,ct),[()=>qs(t(Ce).row,t(We))]),p(dt,nt)};ve(_t,dt=>{t(Ce).kind==="header"?dt(Ke):U()?dt(Ye,1):dt(tt,-1)})}N(()=>{Ze=ht(He,1,"hmm-td svelte-16k18c8",null,Ze,{"hmm-mono":t(We).mono===!0&&t(Ce).kind==="row"}),st=qt(He,"",st,{"grid-column":t(ae).track[t(We).key],"text-align":t(We).align??"left"})}),p(Fe,He)}),N((Fe,We)=>{Te=ht(Re,1,"hmm-tr svelte-16k18c8",null,Te,{"hmm-tr-even":(t(Ee).start+t(qe))%2===1,"hmm-tr-selected":Fe,"hmm-tr-child":t(Ce).depth>0&&t(Ce).kind==="row","hmm-tr-subhead":t(Ce).kind==="header"}),C(Re,"aria-selected",We),C(Re,"data-row-id",t(Ce).id),C(Re,"data-row-kind",t(Ce).kind),Pe=qt(Re,"",Pe,{"grid-template-columns":t(J),height:`${s()}px`})},[()=>t(Y).has(t(Ce).id),()=>t(Ce).kind==="header"?void 0:t(Y).has(t(Ce).id)]),ce("click",Re,Fe=>ie(t(Ce),Fe)),ce("dblclick",Re,()=>{t(Ce).kind==="row"&&D()?.(t(Ce).row)}),ce("contextmenu",Re,Fe=>be(t(Ce),Fe)),p(Be,Re)}),N(()=>{se=qt(Ie,"",se,{height:`${t(he).length*s()}px`}),et=qt(we,"",et,{transform:`translateY(${t(Ee).start*s()}px)`})}),p(me,Ie)};ve(Ve,me=>{t(he).length===0?me(Me):me(je,-1)})}Un(Oe,me=>m(ee,me),()=>t(ee)),N(()=>{C(F,"data-testid",re()),C(de,"aria-rowcount",t(he).length),C(de,"aria-colcount",t(W).length),R=qt(G,"",R,{"grid-template-columns":t(J),"padding-right":`${t(X)}px`}),Ue=qt(Oe,"",Ue,{height:i()===void 0?void 0:`${i()}px`})}),ce("keydown",de,O),Bn("scroll",Oe,me=>m(oe,me.currentTarget.scrollTop,!0)),p(r,F),Xe()}rt(["keydown","click","input","dblclick","contextmenu"]);var Hp=k('<img class="hmm-device-image svelte-rwoeeb"/>'),Wp=k('<span class="hmm-device-image hmm-device-image-fallback svelte-rwoeeb"> </span>');function Jr(r,e){$e(e,!0);let n=K(e,"deviceType",3,""),a=K(e,"src",3,void 0),s=K(e,"size",3,Rd),i=K(e,"title",3,void 0),o=K(e,"testId",3,void 0),l=M(!1);ot(()=>{a(),m(l,!1)});const d=v(()=>a()!==void 0&&a()!==""&&!t(l)),h=v(()=>n().replace(/^(HmIPW?|HM|HMW)-/i,"").replace(/[^A-Za-z0-9]/g,"").slice(0,2).toUpperCase());var g=lt(),b=ke(g);{var y=E=>{var _=Hp();N(()=>{C(_,"src",a()),C(_,"alt",n()),C(_,"title",i()??n()),C(_,"width",s()),C(_,"height",s()),C(_,"data-testid",o())}),Bn("error",_,()=>m(l,!0)),p(E,_)},S=E=>{var _=Wp();let T;var I=f(_,!0);N(w=>{C(_,"title",i()??n()),C(_,"aria-label",n()===""?void 0:n()),C(_,"role",n()===""?void 0:"img"),C(_,"data-testid",o()),T=qt(_,"",T,{width:`${s()}px`,height:`${s()}px`,"font-size":w}),u(I,t(h))},[()=>`${Math.max(6,Math.round(s()*.5))}px`]),p(E,_)};ve(b,E=>{t(d)?E(y):E(S,-1)})}p(r,g),Xe()}const Kp={UNREACH:{symbol:"✖",level:"error"},STICKY_UNREACH:{symbol:"✖",level:"error"},LOWBAT:{symbol:"▮",level:"warn"},LOW_BAT:{symbol:"▮",level:"warn"},ERROR:{symbol:"⚠",level:"error"},ERROR_CODE:{symbol:"⚠",level:"error"},SABOTAGE:{symbol:"⚠",level:"error"},CONFIG_PENDING:{symbol:"⚙",level:"warn"},UPDATE_PENDING:{symbol:"⇩",level:"warn"}};function ks(r,e,n=2){const a=[];for(const s of e){if(Ga(s.address)!==r)continue;const i=Kp[s.datapoint];if(!i)continue;const o={datapoint:s.datapoint,symbol:i.symbol,level:i.level,title:`${s.datapoint} ${s.address}`};i.level==="error"?a.unshift(o):a.push(o)}return a.slice(0,n)}function Dd(r,e){if(r==="CONFIG_PENDING")return e?"The configuration could not be transferred to the device":"A configuration is queued; the device takes it when it next wakes up"}function Yp(r,e){return e&&r==="CONFIG_PENDING"}const jp=["UP_TO_DATE","NEW_FIRMWARE_AVAILABLE","DELIVER_FIRMWARE_IMAGE","PERFORMING_UPDATE"];function qp(r,e={}){const n=r.FIRMWARE??"",a=r.AVAILABLE_FIRMWARE,s=e.busy===!0,i=r.FIRMWARE_UPDATE_STATE;if(i!==void 0&&i!==""){if(i==="READY_FOR_UPDATE")return{firmware:n,...a===void 0?{}:{available:a},...s?{}:{action:"install"},busy:s};if(jp.includes(i))return{firmware:n,status:i.toLowerCase().replace(/_/g," "),busy:s}}return e.updatePending===!0?{firmware:n,status:"update pending",busy:s}:a!==void 0&&a!==""&&a!==n?{firmware:n,available:a,...s?{}:{action:"update"},busy:s}:{firmware:n,busy:s}}var $p=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="add-link-stage"> </button> <button type="button" class="hmm-button" data-testid="add-link-create"> </button> <button type="button" class="hmm-button" data-testid="add-link-create-edit"> </button>',1),Xp=k('<span> </span> <input class="hmm-input" data-testid="add-link-name-all"/> <span class="hmm-add-link-roles svelte-w1ajeb"> </span> <span> </span> <input class="hmm-input" data-testid="add-link-description-all"/> <span></span>',1),Qp=k('<span></span> <span class="hmm-add-link-empty svelte-w1ajeb" data-testid="add-link-none"> </span> <span></span>',1),Zp=k('<tr><td class="hmm-mono svelte-w1ajeb"> </td><td class="hmm-mono svelte-w1ajeb"> </td><td class="svelte-w1ajeb"><input class="hmm-input svelte-w1ajeb"/></td><td class="svelte-w1ajeb"><input class="hmm-input svelte-w1ajeb"/></td></tr>'),Jp=k('<table class="hmm-pair-names svelte-w1ajeb" data-testid="add-link-pairs"><thead><tr><th class="svelte-w1ajeb"> </th><th class="svelte-w1ajeb"> </th><th class="svelte-w1ajeb"> </th><th class="svelte-w1ajeb"> </th></tr></thead><tbody></tbody></table>'),eg=k('<div class="hmm-add-link svelte-w1ajeb"><span> </span> <!> <span class="hmm-add-link-roles svelte-w1ajeb"> </span> <span> </span> <!> <span class="hmm-add-link-roles svelte-w1ajeb"> </span> <!> <!></div> <!>',1);function Nd(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"onedit",3,void 0),s=K(e,"presetSenders",19,()=>[]),i=K(e,"presetReceivers",19,()=>[]);const o=Et(),l=o.i18n.t;let d=M(xe([])),h=M(xe([])),g=M(!1),b=M(xe({})),y=M(""),S=M("");const E=v(()=>o.app.selectedInterface),_=v(()=>o.devices.index(t(E)));ot(()=>{n()&&(m(d,[...s()],!0),m(h,[...i()],!0),m(b,{},!0),m(y,""),m(S,""))});const T=v(()=>t(_)?oh(t(_)).map(x=>P(x)):[]),I=v(()=>{const x=t(_);if(!x||t(d).length===0)return[];const X=t(d).map($=>x.get($)).filter($=>$!==void 0);return x.channels().filter($=>X.every(ee=>ih(ee,$))).map($=>P($))}),w=v(()=>[...new Set(t(d).flatMap(x=>Tn(t(_)?.get(x)?.LINK_SOURCE_ROLES)))].join(" ")),D=v(()=>[...new Set(t(h).flatMap(x=>Tn(t(_)?.get(x)?.LINK_TARGET_ROLES)))].join(" "));function P(x){const X=o.names.name(x.ADDRESS);return{value:x.ADDRESS,label:X===void 0?`${x.ADDRESS} (${x.TYPE})`:`${X} — ${x.ADDRESS}`}}function U(){return t(d).flatMap(x=>t(h).map(X=>{const $=t(b)[re(x,X)],ee=$?.name.trim()===""||$===void 0?t(y).trim():$.name.trim(),W=$?.description.trim()===""||$===void 0?t(S).trim():$.description.trim();return{sender:x,receiver:X,...ee===""?{}:{name:ee},...W===""?{}:{description:W}}}))}function re(x,X){return`${x}>${X}`}function te(x,X,$,ee){const W=re(x,X),z=t(b)[W]??{name:"",description:""};m(b,{...t(b),[W]:{...z,[$]:ee}},!0)}function oe(){const x=U();x.length!==0&&(o.changeSet.stage({kind:"linkAdd",interfaceName:t(E),title:l("{count} links",{},x.length),pairs:x,calls:x.map(X=>`addLink(${X.sender}, ${X.receiver}, ${JSON.stringify(X.name??"")})`),lines:x.map(X=>({label:`${o.nameOf(X.sender)} → ${o.nameOf(X.receiver)}`,to:X.name??""}))}),n(!1))}async function ue(x){m(g,!0);const X=await o.links.addPairs(t(E),U());if(m(g,!1),X===0)return;n(!1);const $=t(d)[0],ee=t(h)[0];x&&$!==void 0&&ee!==void 0&&a()?.({sender:$,receiver:ee})}{const x=$=>{var ee=$p(),W=ke(ee),z=f(W,!0),ne=c(W,2),ae=f(ne,!0),J=c(ne,2),q=f(J,!0),V=c(J,2),Y=f(V,!0);N((he,Q,Ee,Ae)=>{u(z,he),ne.disabled=t(g)||t(h).length===0,u(ae,Q),J.disabled=t(g)||t(h).length===0,u(q,Ee),V.disabled=t(g)||t(h).length===0,u(Y,Ae)},[()=>l("Cancel"),()=>l("Add to pending changes"),()=>l("Create"),()=>l("Create and edit")]),ce("click",W,()=>n(!1)),ce("click",ne,oe),ce("click",J,()=>{ue(!1)}),ce("click",V,()=>{ue(!0)}),p($,ee)};let X=v(()=>l("Create link"));Vt(r,{get title(){return t(X)},width:"760px",testId:"add-link-dialog",get open(){return n()},set open($){n($)},buttons:x,children:($,ee)=>{var W=eg(),z=ke(W),ne=A(z),ae=f(ne,!0),J=c(ne,2);{let F=v(()=>l("Sender")),Z=v(()=>l("Select")),ge=v(()=>l("Filter")),de=v(()=>l("Check all")),G=v(()=>l("Uncheck all"));Qr(J,{get options(){return t(T)},get label(){return t(F)},get placeholder(){return t(Z)},get filterLabel(){return t(ge)},get checkAllLabel(){return t(de)},get uncheckAllLabel(){return t(G)},summary:R=>l("{count} channels selected",{},R.length),testId:"add-link-senders",get selected(){return t(d)},set selected(R){m(d,R,!0)}})}var q=c(J,2),V=f(q),Y=c(q,2),he=f(Y,!0),Q=c(Y,2);{let F=v(()=>t(d).length===0),Z=v(()=>l("Receiver")),ge=v(()=>t(d).length===0?l("Sender"):l("Select")),de=v(()=>l("Filter")),G=v(()=>l("Check all")),R=v(()=>l("Uncheck all"));Qr(Q,{get options(){return t(I)},get disabled(){return t(F)},get label(){return t(Z)},get placeholder(){return t(ge)},get filterLabel(){return t(de)},get checkAllLabel(){return t(G)},get uncheckAllLabel(){return t(R)},summary:L=>l("{count} channels selected",{},L.length),testId:"add-link-receivers",get selected(){return t(h)},set selected(L){m(h,L,!0)}})}var Ee=c(Q,2),Ae=f(Ee),j=c(Ee,2);{var pe=F=>{var Z=Xp(),ge=ke(Z),de=f(ge,!0),G=c(ge,2),R=c(G,2),L=f(R,!0),H=c(R,2),_e=f(H,!0),Se=c(H,2);N((De,Oe,Ue)=>{u(de,De),u(L,Oe),u(_e,Ue)},[()=>l("Name"),()=>l("Used for every pair without its own name"),()=>l("Description")]),Tt(G,()=>t(y),De=>m(y,De)),Tt(Se,()=>t(S),De=>m(S,De)),p(F,Z)},B=v(()=>U().length>0);ve(j,F=>{t(B)&&F(pe)})}var ie=c(j,2);{var be=F=>{var Z=Qp(),ge=c(ke(Z),2),de=f(ge,!0);N(G=>u(de,G),[()=>l("No channel can receive from this sender")]),p(F,Z)};ve(ie,F=>{t(d).length>0&&t(I).length===0&&F(be)})}var fe=c(z,2);{var le=F=>{var Z=Jp(),ge=A(Z),de=A(ge),G=A(de),R=f(G,!0),L=c(G),H=f(L,!0),_e=c(L),Se=f(_e,!0),De=c(_e),Oe=f(De,!0),Ue=c(ge);Ne(Ue,21,U,Ve=>re(Ve.sender,Ve.receiver),(Ve,Me)=>{var je=Zp(),me=A(je),Ie=f(me,!0),se=c(me),we=f(se,!0),et=c(se),Be=A(et),Ce=c(et),qe=A(Ce);N((Re,Te,Pe,ye,Le,Ge,Fe)=>{C(je,"data-testid",Re),u(Ie,Te),u(we,Pe),C(Be,"aria-label",ye),gt(Be,Le),C(Be,"placeholder",t(y)),C(qe,"aria-label",Ge),gt(qe,Fe),C(qe,"placeholder",t(S))},[()=>`add-link-pair-${re(t(Me).sender,t(Me).receiver)}`,()=>o.nameOf(t(Me).sender),()=>o.nameOf(t(Me).receiver),()=>`${l("Name")} ${t(Me).sender} ${t(Me).receiver}`,()=>t(b)[re(t(Me).sender,t(Me).receiver)]?.name??"",()=>`${l("Description")} ${t(Me).sender} ${t(Me).receiver}`,()=>t(b)[re(t(Me).sender,t(Me).receiver)]?.description??""]),ce("input",Be,Re=>te(t(Me).sender,t(Me).receiver,"name",Re.currentTarget.value)),ce("input",qe,Re=>te(t(Me).sender,t(Me).receiver,"description",Re.currentTarget.value)),p(Ve,je)}),N((Ve,Me,je,me)=>{u(R,Ve),u(H,Me),u(Se,je),u(Oe,me)},[()=>l("Sender"),()=>l("Receiver"),()=>l("Name"),()=>l("Description")]),p(F,Z)},O=v(()=>U().length>1);ve(fe,F=>{t(O)&&F(le)})}N((F,Z)=>{u(ae,F),u(V,`LINK_SOURCE_ROLES: ${t(w)??""}`),u(he,Z),u(Ae,`LINK_TARGET_ROLES: ${t(D)??""}`)},[()=>l("Sender"),()=>l("Receiver")]),p($,W)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click","input"]);var tg=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="team-apply"> </button>',1),ng=k('<p data-testid="team-none"> </p>'),rg=k("<option> </option>"),ag=k('<p class="hmm-team-members svelte-1ervkxt" data-testid="team-members"> </p>'),sg=k('<p class="hmm-team-empty svelte-1ervkxt" data-testid="team-empty"> </p>'),ig=k('<p><span class="hmm-mono"> </span> — TEAM_TAG <span class="hmm-mono"> </span></p> <label class="hmm-team-row svelte-1ervkxt"><span> </span> <select class="hmm-select" data-testid="team-select"><option> </option><!></select></label> <!> <!>',1);function og(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"address",3,"");const s=Et(),i=s.i18n.t;let o=M(xe([])),l=M(""),d=M(!1);const h=v(()=>s.app.selectedInterface),g=v(()=>s.devices.index(t(h))),b=v(()=>t(g)?.get(a())),y=v(()=>t(b)?.TEAM_TAG??""),S=v(()=>t(b)?.TEAM??""),E=v(()=>t(o).filter(I=>(I.TEAM_TAG??"")===t(y)));ot(()=>{!n()||t(h)===""||a()===""||(m(l,t(S),!0),s.devices.teams(t(h)).then(I=>{m(o,I,!0)}))});function _(I){const w=I.TEAM_CHANNELS??[];return w.length===0?i("No data"):w.map(D=>s.nameOf(D)).join(", ")}async function T(){m(d,!0);const I=await s.devices.setTeam(t(h),a(),t(l));m(d,!1),I&&n(!1)}{const I=D=>{var P=tg(),U=ke(P),re=f(U,!0),te=c(U,2),oe=f(te,!0);N((ue,x)=>{u(re,ue),te.disabled=t(d)||t(y)===""||t(l)===t(S),u(oe,x)},[()=>i("Cancel"),()=>i("Apply")]),ce("click",U,()=>n(!1)),ce("click",te,()=>{T()}),p(D,P)};let w=v(()=>i("Team"));Vt(r,{get title(){return t(w)},width:"560px",testId:"team-dialog",get open(){return n()},set open(D){n(D)},buttons:I,children:(D,P)=>{var U=lt(),re=ke(U);{var te=ue=>{var x=ng(),X=f(x,!0);N($=>u(X,$),[()=>i("This channel does not belong to a team")]),p(ue,x)},oe=ue=>{var x=ig(),X=ke(x),$=A(X),ee=f($,!0),W=c($,2),z=f(W,!0),ne=c(X,2),ae=A(ne),J=f(ae,!0),q=c(ae,2),V=A(q),Y=f(V,!0);V.value=V.__value="";var he=c(V);Ne(he,17,()=>t(E),pe=>pe.ADDRESS,(pe,B)=>{var ie=rg(),be=f(ie),fe={};N(le=>{u(be,`${le??""} (${t(B).ADDRESS??""})`),fe!==(fe=t(B).ADDRESS)&&(ie.value=(ie.__value=fe)??"")},[()=>s.nameOf(t(B).ADDRESS)]),p(pe,ie)}),St(q);var Q=c(ne,2);{var Ee=pe=>{const B=v(()=>t(E).find(le=>le.ADDRESS===t(l)));var ie=lt(),be=ke(ie);{var fe=le=>{var O=ag(),F=f(O);N((Z,ge)=>u(F,`${Z??""}: ${ge??""}`),[()=>i("Members"),()=>_(t(B))]),p(le,O)};ve(be,le=>{t(B)&&le(fe)})}p(pe,ie)};ve(Q,pe=>{t(l)!==""&&pe(Ee)})}var Ae=c(Q,2);{var j=pe=>{var B=sg(),ie=f(B,!0);N(be=>u(ie,be),[()=>i("The interface knows no other team yet")]),p(pe,B)};ve(Ae,pe=>{t(E).length===0&&pe(j)})}N((pe,B)=>{u(ee,a()),u(z,t(y)),u(J,pe),u(Y,B)},[()=>i("Team"),()=>i("Own team")]),dn(q,()=>t(l),pe=>m(l,pe)),p(ue,x)};ve(re,ue=>{t(y)===""?ue(te):ue(oe,-1)})}p(D,U)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click"]);function xd(r,e){return hd(e,r.pair)?.seconds}function lg(r,e){return xd(r,e)===r.notUsedSeconds}function Cd(r,e){const n=md(e,r.pair),a=pd(e,r.pair);if(!(!n||!a))return{values:a,exact:n.exact,seconds:n.seconds}}function dg(r,e){const n=[];for(const a of Si(r.description)){const s=r.description[a.unitParam],i=r.description[a.countParam];if(!s||!i||e.has(a.unitParam)||e.has(a.countParam))continue;const o=fd(i);n.push({pair:a,unitDescription:s,countDescription:i,writable:sn(s)&&sn(i),notUsedSeconds:o??gd(a),notUsedFromSpecial:o!==void 0})}if(n.length!==0)return{kind:"duration-pairs",id:"duration-pairs",covers:n.flatMap(a=>[a.pair.unitParam,a.pair.countParam]),pairs:n}}function ea(r){if(!Number.isFinite(r))return"—";if(r===0)return"0 s";if(r<1)return`${Math.round(r*1e3)} ms`;const e=[];let n=Math.round(r*10)/10;const a=Math.floor(n/3600);a>0&&(e.push(`${a} h`),n-=a*3600);const s=Math.floor(n/60);return s>0&&(e.push(`${s} min`),n-=s*60),n>0&&e.push(`${Math.round(n*10)/10} s`),e.join(" ")}const cg=["REFERENCE_RUNNING_TIME_TOP_BOTTOM","REFERENCE_RUNNING_TIME_BOTTOM_TOP","REFERENCE_RUNNING_TIME_SLATS"],ug=["CHANGE_OVER_DELAY","DELAY_COMPENSATION"],vg=["REFERENCE_RUN_COUNTER","ENDPOSITION_AUTO_DETECT"];function fg(r,e){if(r.source.kind==="seconds"){const i=e[r.source.param];return typeof i=="number"?i:void 0}const n=r.source.view,a=n.pair.units[Pd(n,e)],s=e[n.pair.countParam];if(!(a===void 0||typeof s!="number"))return Math.round(a.seconds*s*1e3)/1e3}function hg(r,e){if(r.source.kind==="seconds")return`${r.source.param} = ${String(e[r.source.param]??"—")}`;const n=r.source.view,a=n.pair.units[Pd(n,e)];return`${String(e[n.pair.countParam]??"—")} × ${a?.name??"—"}`}function mg(r,e){if(!(!Number.isFinite(e)||e<0)){if(r.source.kind==="seconds"){const n=Nt(r.source.description,"MAX");return n!==void 0&&e>n?void 0:{values:{[r.source.param]:e},exact:!0,seconds:e}}return Cd(r.source.view,e)}}function pg(r,e){const{description:n}=r,a=new Map(Si(n).map(d=>[d.name,d])),s=[],i=[];for(const d of cg){const h=n[d],g=a.get(d);if(h){s.push({id:d,source:{kind:"seconds",param:d,description:h},writable:sn(h)}),i.push(d);continue}const b=g&&n[g.unitParam],y=g&&n[g.countParam];if(!g||!b||!y)continue;const S=fd(y),E={pair:g,unitDescription:b,countDescription:y,writable:sn(b)&&sn(y),notUsedSeconds:S??gd(g),notUsedFromSpecial:S!==void 0};s.push({id:d,source:{kind:"pair",view:E},writable:E.writable}),i.push(g.unitParam,g.countParam)}if(s.length===0||i.some(d=>e.has(d)))return;const o=Co(n,ug),l=Co(n,vg);return{kind:"blind-calibration",id:"blind-calibration",covers:[...i,...o.map(d=>d.param),...l.map(d=>d.param)],runningTimes:s,delays:o,extras:l}}function Co(r,e){return e.flatMap(n=>{const a=r[n];return a?[{param:n,description:a}]:[]})}function Pd(r,e){const n=e[r.pair.unitParam];return typeof n=="number"?n:r.pair.units.findIndex(a=>a.name===n)}function gg(r,e,n){const a=[];for(const[s,i]of Object.entries(r.description)){const o=Ln(i);if(i.TYPE!=="ENUM"||!o||o.length===0||e.has(s))continue;const l=n.preset(s),d=l?_g(l.presets,o,n):bg(s,o,n);!d||d.length===0||a.push({param:s,description:i,options:d,writable:sn(i),...l===void 0?{}:{presetId:l.id}})}if(a.length!==0)return{kind:"enum-options",id:"enum-options",covers:a.map(s=>s.param),fields:a}}function _g(r,e,n){const a=[];for(const s of r){const i=typeof s.value=="number"?s.value:Number(s.value);if(!Number.isInteger(i))return;a.push({value:i,label:s.label??(s.labelKey===void 0?"":n.uiLabel(s.labelKey)),raw:e[i]??"",named:!0})}return a}function bg(r,e,n){const a=[];let s=!1;for(const[i,o]of e.entries()){const l=n.optionByName(r,o),d=n.optionByIndex(r,i);l===void 0&&d!==void 0?(s=!0,a.push({value:i,label:d,raw:o,named:!0})):a.push({value:i,label:l??o,raw:o,named:l!==void 0})}return s?a:void 0}function yn(r,e){return`${r}_WP_${e}`}const Eg=/^(\d+)_WP_(.+)$/,Po=["WEEKDAY","TIME","CONDITION","ASTRO_TYPE","ASTRO_OFFSET","LEVEL","LEVEL_2","DURATION","RAMP_TIME","OUTPUT_BEHAVIOUR","TARGET_CHANNELS"],Sg=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function yg(r,e){return typeof r=="number"&&(r&1<<e)!==0}function Ag(r,e,n){const a=typeof r=="number"?r:0;return n?a|1<<e:a&~(1<<e)}function Tg(r,e){const n=r[yn(e,"FIXED_HOUR")],a=r[yn(e,"FIXED_MINUTE")];return typeof n!="number"||typeof a!="number"?"":`${String(n).padStart(2,"0")}:${String(a).padStart(2,"0")}`}function wg(r,e){const n=/^(\d{1,2}):([0-5]\d)$/.exec(e.trim()),a=n?Number(n[1]):Number.NaN;if(!(!n||a>23))return{[yn(r,"FIXED_HOUR")]:a,[yn(r,"FIXED_MINUTE")]:Number(n[2])}}function kg(r,e){const n=r[yn(e,"WEEKDAY")];return typeof n!="number"||n===0}function Rg(r,e){const{description:n}=r,a=new Map,s=[];for(const _ of Object.keys(n)){const T=Eg.exec(_),I=T?.[1],w=T?.[2];if(!T||I===void 0||w===void 0)continue;let D=a.get(I);D||(D=new Set,a.set(I,D)),D.add(w),s.push(_)}const i=[...a.keys()].sort((_,T)=>Number(_)-Number(T)),o=i[0],l=o===void 0?void 0:a.get(o);if(o===void 0||!l||!l.has("WEEKDAY")||s.some(_=>e.has(_)))return;const d=[...l].sort().join(",");for(const _ of i)if([...a.get(_)??[]].sort().join(",")!==d)return;const h=new Map(Si(n).map(_=>[_.name,_])),g={},b=[],y=new Set,S=(_,T,I)=>{const w=n[yn(o,I[0]??"")];if(!(!w||I.some(D=>!l.has(D)))){b.push({id:_,kind:T,fields:I,description:w});for(const D of I)y.add(D)}};S("WEEKDAY","weekday",["WEEKDAY"]),S("TIME","time",["FIXED_HOUR","FIXED_MINUTE"]);for(const _ of[...l].sort()){if(y.has(_)||!_.endsWith("_BASE"))continue;const T=_.slice(0,-5);if(!l.has(`${T}_FACTOR`))continue;let I=!0;for(const w of i){const D=h.get(`${w}_WP_${T}`);if(!D){I=!1;break}g[`${w}:${T}`]=D}I&&S(T,"duration",[_,`${T}_FACTOR`])}for(const _ of[...l].sort())y.has(_)||S(_,n[yn(o,_)]?.TYPE==="ENUM"?"enum":"number",[_]);if(y.size!==l.size)return;b.sort((_,T)=>Lo(_.id)-Lo(T.id)||(_.id<T.id?-1:1));const E=n[yn(o,"WEEKDAY")];return{kind:"switch-week-profile",id:"switch-week-profile",covers:s,slots:i,columns:b,durations:g,writable:E!==void 0&&sn(E)}}function Lo(r){const e=Po.indexOf(r);return e===-1?Po.length:e}const Ra=["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"],Ig=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Mo=["ENDTIME","TIMEOUT"],Oo=["TEMPERATURE","TEMPERATUR"],Dg=/^(?:(P\d+)_)?([A-Z]+)_([A-Z]+)_(\d+)$/;function rn(r,e,n){return`${r}_${e}_${n}`}function Xs(r,e,n,a,s){return{endTime:Fo(e[rn(n.endTimePrefix,a,s)]),value:Fo(e[rn(n.valuePrefix,a,s)])}}function Ng(r,e){const n=[];for(const a of r.profiles)for(const s of r.days){let i=0,o=!1;for(let l=1;l<=r.slots;l+=1){const{endTime:d}=Xs(r,e,a,s,l);d!==void 0&&(o?d!==r.dayEnd&&n.push({profile:a.id,day:s,slot:l,code:"after-day-end"}):d<=i&&n.push({profile:a.id,day:s,slot:l,code:"not-increasing"}),d>=r.dayEnd&&(o=!0),i=d)}o||n.push({profile:a.id,day:s,slot:r.slots,code:"day-not-closed"})}return n}function xg(r,e,n,a,s){const i={};for(const o of s)if(!(o===a||!r.days.includes(o)))for(let l=1;l<=r.slots;l+=1)Ld(i,e,n,a,n,o,l);return i}function Cg(r,e,n,a){const s={};for(const i of a)if(i.id!==n.id)for(const o of r.days)for(let l=1;l<=r.slots;l+=1)Ld(s,e,n,o,i,o,l);return s}function Fr(r){if(r===void 0||!Number.isFinite(r)||r<0)return"";const e=Math.floor(r/60),n=Math.round(r%60);return`${String(e).padStart(2,"0")}:${String(n).padStart(2,"0")}`}function Pg(r){const e=/^(\d{1,2}):([0-5]\d)$/.exec(r.trim());if(!e)return;const n=Number(e[1])*60+Number(e[2]);return n>1440?void 0:n}function Lg(r,e){const{description:n}=r,a=[],s=new Map;let i=0;for(const E of Object.keys(n)){const _=Dg.exec(E),T=_?.[3],I=_?.[2];if(!_||!T||!I||!Ra.includes(T)||!Mo.includes(I)&&!Oo.includes(I))continue;const w=_[1]??"";a.push(E);let D=s.get(w);D||(D=new Set,s.set(w,D)),D.add(I),i=Math.max(i,Number(_[4]))}if(a.length===0||i===0)return;const o=[];let l="",d="";for(const[E,_]of[...s].sort(([T],[I])=>T<I?-1:1)){const T=[..._].find(D=>Mo.includes(D)),I=[..._].find(D=>Oo.includes(D));if(_.size!==2||T===void 0||I===void 0||l!==""&&(T!==l||I!==d))return;l=T,d=I;const w=E===""?"":`${E}_`;o.push({id:E,endTimePrefix:`${w}${T}`,valuePrefix:`${w}${I}`})}const h=[];for(const E of o)for(const _ of Ra)for(let T=1;T<=i;T+=1)h.push(rn(E.endTimePrefix,_,T),rn(E.valuePrefix,_,T));if(h.length!==a.length||h.some(E=>!(E in n)||e.has(E)))return;const g=o[0],b=g&&n[rn(g.endTimePrefix,"MONDAY",1)],y=g&&n[rn(g.valuePrefix,"MONDAY",1)],S=b===void 0?void 0:Nt(b,"MAX");if(!(!b||!y||S===void 0))return{kind:"week-profile",id:"week-profile",covers:h,profiles:o,days:Ra,slots:i,endTimeField:l,valueField:d,endTimeDescription:b,valueDescription:y,dayEnd:S,writable:sn(b)&&sn(y)}}function Ld(r,e,n,a,s,i,o){const l=e[rn(n.endTimePrefix,a,o)],d=e[rn(n.valuePrefix,a,o)];l!==void 0&&(r[rn(s.endTimePrefix,i,o)]=l),d!==void 0&&(r[rn(s.valuePrefix,i,o)]=d)}function Fo(r){return typeof r=="number"&&Number.isFinite(r)?r:void 0}const Mg={optionByName:()=>{},optionByIndex:()=>{},preset:()=>{},uiLabel:r=>r},Og=[Lg,Rg,pg,dg,gg];function Fg(r,e=Mg){const n=[],a=new Set;for(const s of Og){const i=s(r,a,e);if(i){n.push(i);for(const o of i.covers)a.add(o)}}return n}function Gg(r){return new Set(r.flatMap(e=>e.covers))}function Ug(r){switch(r.TYPE){case"BOOL":return"bool";case"ACTION":return"action";case"ENUM":return"enum";case"INTEGER":return"integer";case"FLOAT":return"float";case"STRING":return"string";default:return"unknown"}}function Md(r,e){const n=e?e.parameters.map(s=>s.name):dd(r),a=new Map((e?.parameters??[]).map(s=>[s.name,s]));return n.map(s=>{const i=r[s];if(!i)return;const o=$r(Nt(i,"MIN"),i),l=$r(Nt(i,"MAX"),i),d=a.get(s)?.preset,h=Ln(i);return{name:s,description:i,kind:Ug(i),writable:sn(i),unit:Va(i),step:i.TYPE==="FLOAT"?.1:1,special:i.SPECIAL??[],visible:a.get(s)?.visible??!0,...o===void 0?{}:{min:o},...l===void 0?{}:{max:l},...h===void 0?{}:{valueList:h},...d===void 0?{}:{preset:d}}}).filter(s=>s!==void 0)}function ur(r,e,n,a){const s=Gh(r,e,n,{enumAs:Nh(a.interfaceName),...a.writeAll===!0?{writeAll:!0}:{}});return{targets:[...a.targets],entries:s.changed.map(i=>({param:i,from:wr(r[i],n[i]),to:wr(s.values[i],n[i])})),values:s.values,skipped:s.skipped,problems:s.problems}}function wr(r,e){if(r===void 0)return"—";const n=typeof r=="object"&&r!==null&&"explicitDouble"in r?r.explicitDouble:r;return e?.TYPE==="ENUM"&&typeof n=="number"?Ln(e)?.[n]??String(n):typeof n=="boolean"?n?"true":"false":String(n)}function Od(r,e,n){return Object.keys(r).map(a=>{const s=wr(r[a],n[a]),i=wr(e[a],n[a]);return{param:a,sent:s,stored:i,differs:s!==i}})}var Vg=k('<span class="hmm-blind-warn svelte-6iyslx"> </span>'),Bg=k('<div class="hmm-blind-row svelte-6iyslx"><div class="hmm-blind-label svelte-6iyslx"><span> </span> <span class="hmm-blind-id svelte-6iyslx"> </span></div> <div class="hmm-blind-control svelte-6iyslx"><input class="hmm-input hmm-blind-number svelte-6iyslx" type="number" min="0" step="0.01"/> <span class="hmm-blind-unit svelte-6iyslx">s</span> <span class="hmm-blind-raw svelte-6iyslx"> </span></div> <div class="hmm-blind-meta svelte-6iyslx"><span> </span> <!></div></div>'),zg=k('<div class="hmm-blind-row svelte-6iyslx"><div class="hmm-blind-label svelte-6iyslx"><span> </span> <span class="hmm-blind-id svelte-6iyslx"> </span></div> <div class="hmm-blind-control svelte-6iyslx"><input class="hmm-input hmm-blind-number svelte-6iyslx" type="number" step="0.1"/> <span class="hmm-blind-unit svelte-6iyslx">s</span></div> <div class="hmm-blind-meta svelte-6iyslx"><span> </span></div></div>'),Hg=k('<input type="checkbox"/>'),Wg=k('<input class="hmm-input hmm-blind-number svelte-6iyslx" type="number" step="1"/>'),Kg=k('<div class="hmm-blind-row svelte-6iyslx"><div class="hmm-blind-label svelte-6iyslx"><span> </span> <span class="hmm-blind-id svelte-6iyslx"> </span></div> <div class="hmm-blind-control svelte-6iyslx"><!></div> <div class="hmm-blind-meta svelte-6iyslx"></div></div>'),Yg=k('<div class="hmm-editor svelte-6iyslx" data-testid="editor-blind-calibration"><h3 class="svelte-6iyslx"> </h3> <p class="hmm-editor-hint svelte-6iyslx"> </p> <!> <!> <!></div>');function jg(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(xe({}));function i(I){return n.meta.parameterLabel(I,e.channelType)}function o(I,w){if(w==="")return;const D=mg(I,Number(w));D&&(m(s,D.exact||D.seconds===Number(w)?Object.fromEntries(Object.entries(t(s)).filter(([P])=>P!==I.id)):{...t(s),[I.id]:D.seconds},!0),e.onchange(D.values))}function l(I,w){w===""||!Number.isFinite(Number(w))||d(I.param,Number(w))}function d(I,w){e.onchange({[I]:w})}var h=Yg(),g=A(h),b=f(g,!0),y=c(g,2),S=f(y,!0),E=c(y,2);Ne(E,17,()=>e.spec.runningTimes,I=>I.id,(I,w)=>{const D=v(()=>fg(t(w),e.values));var P=Bg(),U=A(P),re=A(U),te=f(re,!0),oe=c(re,2),ue=f(oe,!0),x=c(U,2),X=A(x),$=c(X,4),ee=f($,!0),W=c(x,2),z=A(W),ne=f(z,!0),ae=c(z,2);{var J=q=>{var V=Vg(),Y=f(V,!0);N(he=>{C(V,"data-testid",`blind-${t(w).id}-inexact`),u(Y,he)},[()=>a("The device can only do {seconds}",{seconds:ea(t(s)[t(w).id]??0)})]),p(q,V)};ve(ae,q=>{t(s)[t(w).id]!==void 0&&q(J)})}N((q,V,Y,he)=>{C(P,"data-testid",`blind-${t(w).id}`),u(te,q),u(ue,t(w).id),X.disabled=!t(w).writable,C(X,"aria-label",V),C(X,"data-testid",`blind-${t(w).id}-seconds`),gt(X,t(D)??""),C($,"data-testid",`blind-${t(w).id}-raw`),u(ee,Y),u(ne,he)},[()=>i(t(w).id),()=>i(t(w).id),()=>hg(t(w),e.values),()=>t(D)===void 0?"—":ea(t(D))]),ce("input",X,q=>o(t(w),q.currentTarget.value)),p(I,P)});var _=c(E,2);Ne(_,17,()=>e.spec.delays,I=>I.param,(I,w)=>{var D=zg(),P=A(D),U=A(P),re=f(U,!0),te=c(U,2),oe=f(te,!0),ue=c(P,2),x=A(ue),X=c(ue,2),$=A(X),ee=f($);N((W,z,ne,ae,J,q)=>{C(D,"data-testid",`blind-${t(w).param}`),u(re,W),u(oe,t(w).param),C(x,"min",z),C(x,"max",ne),C(x,"aria-label",ae),C(x,"data-testid",`blind-${t(w).param}-value`),gt(x,e.values[t(w).param]??""),u(ee,`${J??""} … ${q??""}`)},[()=>i(t(w).param),()=>Nt(t(w).description,"MIN"),()=>Nt(t(w).description,"MAX"),()=>i(t(w).param),()=>Nt(t(w).description,"MIN")??"−∞",()=>Nt(t(w).description,"MAX")??"∞"]),ce("input",x,W=>l(t(w),W.currentTarget.value)),p(I,D)});var T=c(_,2);Ne(T,17,()=>e.spec.extras,I=>I.param,(I,w)=>{var D=Kg(),P=A(D),U=A(P),re=f(U,!0),te=c(U,2),oe=f(te,!0),ue=c(P,2),x=A(ue);{var X=ee=>{var W=Hg();N(z=>{C(W,"aria-label",z),C(W,"data-testid",`blind-${t(w).param}-value`),zn(W,e.values[t(w).param]===!0)},[()=>i(t(w).param)]),ce("change",W,z=>d(t(w).param,z.currentTarget.checked)),p(ee,W)},$=ee=>{var W=Wg();N((z,ne,ae)=>{C(W,"min",z),C(W,"max",ne),C(W,"aria-label",ae),C(W,"data-testid",`blind-${t(w).param}-value`),gt(W,e.values[t(w).param]??"")},[()=>Nt(t(w).description,"MIN"),()=>Nt(t(w).description,"MAX"),()=>i(t(w).param)]),ce("input",W,z=>l(t(w),z.currentTarget.value)),p(ee,W)};ve(x,ee=>{t(w).description.TYPE==="BOOL"?ee(X):ee($,-1)})}N(ee=>{C(D,"data-testid",`blind-${t(w).param}`),u(re,ee),u(oe,t(w).param)},[()=>i(t(w).param)]),p(I,D)}),N((I,w)=>{u(b,I),u(S,w)},[()=>a("Blind calibration"),()=>a("The running times of a reference run, in plain seconds next to the value the device stores.")]),p(r,h),Xe()}rt(["input","change"]);var qg=k("<option> </option>"),Go=k('<span class="hmm-duration-broken svelte-1jozrc9"> </span>'),$g=k("<span> </span>"),Xg=k('<div class="hmm-duration svelte-1jozrc9"><div class="hmm-duration-label svelte-1jozrc9"><span> </span> <span class="hmm-duration-id svelte-1jozrc9"> </span></div> <div class="hmm-duration-control svelte-1jozrc9"><input class="hmm-input hmm-duration-seconds svelte-1jozrc9" type="number" min="0" step="0.1"/> <span class="hmm-duration-unit svelte-1jozrc9">s</span> <select class="hmm-select"></select> <input class="hmm-input hmm-duration-count svelte-1jozrc9" type="number" min="0" step="1"/> <label class="hmm-duration-notused svelte-1jozrc9"><input type="checkbox"/> <span> </span></label></div> <div class="hmm-duration-meta svelte-1jozrc9"><!> <!></div></div>'),Qg=k('<div class="hmm-editor svelte-1jozrc9" data-testid="editor-duration-pairs"><h3 class="svelte-1jozrc9"> </h3> <p class="hmm-editor-hint svelte-1jozrc9"> </p> <!></div>');function Zg(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(xe({}));function i(D){return n.meta.parameterLabel(D.pair.unitParam,e.channelType)}function o(D){return xd(D,e.values)}function l(D,P){const U=Cd(D,P);U&&(m(s,U.exact?Object.fromEntries(Object.entries(t(s)).filter(([re])=>re!==D.pair.name)):{...t(s),[D.pair.name]:U.seconds},!0),e.onchange(U.values))}function d(D,P){const U=Number(P);P===""||!Number.isFinite(U)||l(D,U)}function h(D,P){const U=Number(P),re=o(D),te=D.pair.units[U];if(te===void 0||re===void 0)return;const oe=Math.min(D.pair.maxCount,Math.max(0,Math.round(re/te.seconds)));b({[D.pair.unitParam]:U,[D.pair.countParam]:oe})}function g(D,P){const U=Number(P);P===""||!Number.isInteger(U)||b({[D.pair.countParam]:U})}function b(D){e.onchange(D)}function y(D){const P=e.values[D.pair.unitParam];return typeof P=="number"?P:D.pair.units.findIndex(U=>U.name===P)}var S=Qg(),E=A(S),_=f(E,!0),T=c(E,2),I=f(T,!0),w=c(T,2);Ne(w,17,()=>e.spec.pairs,D=>D.pair.name,(D,P)=>{const U=v(()=>o(t(P))),re=v(()=>lg(t(P),e.values));var te=Xg(),oe=A(te),ue=A(oe),x=f(ue,!0),X=c(ue,2),$=f(X),ee=c(oe,2),W=A(ee),z=c(W,4);Ne(z,23,()=>t(P).pair.units,B=>B.name,(B,ie,be)=>{var fe=qg(),le=f(fe,!0),O={};N(F=>{u(le,t(ie).name),O!==(O=F)&&(fe.value=(fe.__value=O)??"")},[()=>String(t(be))]),p(B,fe)});var ne;St(z);var ae=c(z,2),J=c(ae,2),q=A(J),V=c(q,2),Y=f(V,!0),he=c(ee,2),Q=A(he);{var Ee=B=>{var ie=Go(),be=f(ie,!0);N(fe=>u(be,fe),[()=>a("The device holds a value this pair cannot express")]),p(B,ie)},Ae=B=>{var ie=$g(),be=f(ie,!0);N(fe=>u(be,fe),[()=>ea(t(U))]),p(B,ie)};ve(Q,B=>{t(U)===void 0?B(Ee):B(Ae,-1)})}var j=c(Q,2);{var pe=B=>{var ie=Go(),be=f(ie,!0);N(fe=>{C(ie,"data-testid",`duration-${t(P).pair.name}-inexact`),u(be,fe)},[()=>a("The device can only do {seconds}",{seconds:ea(t(s)[t(P).pair.name]??0)})]),p(B,ie)};ve(j,B=>{t(s)[t(P).pair.name]!==void 0&&B(pe)})}N((B,ie,be,fe,le,O)=>{C(te,"data-testid",`duration-${t(P).pair.name}`),u(x,B),u($,`${t(P).pair.unitParam??""} / ${t(P).pair.countParam??""}`),W.disabled=!t(P).writable||t(re),C(W,"aria-label",ie),C(W,"data-testid",`duration-${t(P).pair.name}-seconds`),gt(W,t(U)??""),z.disabled=!t(P).writable,C(z,"aria-label",be),C(z,"data-testid",`duration-${t(P).pair.name}-unit`),ne!==(ne=fe)&&(z.value=(z.__value=ne)??"",Wt(z,ne)),C(ae,"max",t(P).pair.maxCount),ae.disabled=!t(P).writable,C(ae,"aria-label",le),C(ae,"data-testid",`duration-${t(P).pair.name}-count`),gt(ae,e.values[t(P).pair.countParam]??""),q.disabled=!t(P).writable,zn(q,t(re)),C(q,"data-testid",`duration-${t(P).pair.name}-not-used`),u(Y,O),C(he,"data-testid",`duration-${t(P).pair.name}-result`)},[()=>i(t(P)),()=>`${i(t(P))} ${a("seconds")}`,()=>`${i(t(P))} ${a("unit")}`,()=>String(y(t(P))),()=>`${i(t(P))} ${a("count")}`,()=>a("Not used / for ever")]),ce("input",W,B=>d(t(P),B.currentTarget.value)),ce("change",z,B=>h(t(P),B.currentTarget.value)),ce("input",ae,B=>g(t(P),B.currentTarget.value)),ce("change",q,B=>l(t(P),B.currentTarget.checked?t(P).notUsedSeconds:0)),p(D,te)}),N((D,P)=>{u(_,D),u(I,P)},[()=>a("Durations"),()=>a("A duration is stored as a unit and a count; both are shown next to the seconds.")]),p(r,S),Xe()}rt(["input","change"]);var Uo=k("<option> </option>"),Jg=k("<span> </span>"),e_=k('<div class="hmm-enum-row svelte-1d7xvi9"><div class="hmm-enum-label svelte-1d7xvi9"><span> </span> <span class="hmm-enum-id svelte-1d7xvi9"> </span></div> <div class="hmm-enum-control svelte-1d7xvi9"><select class="hmm-select"><!><!></select> <span class="hmm-enum-raw svelte-1d7xvi9"> </span></div> <div class="hmm-enum-meta svelte-1d7xvi9"><!></div></div>'),t_=k('<div class="hmm-editor svelte-1d7xvi9" data-testid="editor-enum-options"><h3 class="svelte-1d7xvi9"> </h3> <p class="hmm-editor-hint svelte-1d7xvi9"> </p> <!></div>');function n_(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;function s(E){return n.meta.parameterLabel(E,e.channelType)}function i(E){const _=e.values[E.param];return typeof _=="number"?_:E.options.find(T=>T.raw===_)?.value??-1}function o(E){const _=i(E);return _>=0&&!E.options.some(T=>T.value===_)?_:void 0}function l(E,_){return E.description.VALUE_LIST?.[_]??String(_)}var d=t_(),h=A(d),g=f(h,!0),b=c(h,2),y=f(b,!0),S=c(b,2);Ne(S,17,()=>e.spec.fields,E=>E.param,(E,_)=>{const T=v(()=>i(t(_))),I=v(()=>o(t(_)));var w=e_(),D=A(w),P=A(D),U=f(P,!0),re=c(P,2),te=f(re,!0),oe=c(D,2),ue=A(oe),x=A(ue);{var X=q=>{var V=Uo(),Y=f(V),he={};N((Q,Ee)=>{u(Y,`${Q??""} (${t(I)??""})`),he!==(he=Ee)&&(V.value=(V.__value=he)??"")},[()=>l(t(_),t(I)),()=>String(t(I))]),p(q,V)};ve(x,q=>{t(I)!==void 0&&q(X)})}var $=c(x);Ne($,17,()=>t(_).options,q=>q.value,(q,V)=>{var Y=Uo(),he=f(Y,!0),Q={};N(Ee=>{u(he,t(V).label),Q!==(Q=Ee)&&(Y.value=(Y.__value=Q)??"")},[()=>String(t(V).value)]),p(q,Y)});var ee;St(ue);var W=c(ue,2),z=f(W,!0),ne=c(oe,2),ae=A(ne);{var J=q=>{var V=Jg(),Y=f(V,!0);N(()=>{C(V,"data-testid",`enum-${t(_).param}-preset`),u(Y,t(_).presetId)}),p(q,V)};ve(ae,q=>{t(_).presetId!==void 0&&q(J)})}N((q,V,Y,he)=>{C(w,"data-testid",`enum-${t(_).param}`),u(U,q),u(te,t(_).param),ue.disabled=!t(_).writable,C(ue,"aria-label",V),C(ue,"data-testid",`enum-${t(_).param}-select`),ee!==(ee=Y)&&(ue.value=(ue.__value=ee)??"",Wt(ue,ee)),C(W,"data-testid",`enum-${t(_).param}-raw`),u(z,he)},[()=>s(t(_).param),()=>s(t(_).param),()=>String(t(T)),()=>t(T)<0?"—":`${l(t(_),t(T))} (${t(T)})`]),ce("change",ue,q=>e.onchange({[t(_).param]:Number(q.currentTarget.value)})),p(E,w)}),N((E,_)=>{u(g,E),u(y,_)},[()=>a("Named options"),()=>a("These values have names in the CCU string table that the description does not carry.")]),p(r,d),Xe()}rt(["change"]);var r_=k('<th class="svelte-hdzef5"> </th>'),a_=k('<label class="svelte-hdzef5"><input type="checkbox"/> <span> </span></label>'),s_=k('<div class="hmm-switch-days svelte-hdzef5"><!> <span class="hmm-switch-raw svelte-hdzef5"> </span></div>'),i_=k('<input class="hmm-input hmm-switch-time svelte-hdzef5" type="text" inputmode="numeric"/>'),o_=k('<input class="hmm-input hmm-switch-number svelte-hdzef5" type="number" min="0" step="0.1"/> <span class="hmm-switch-raw svelte-hdzef5"> </span>',1),l_=k("<option> </option>"),d_=k('<select class="hmm-select"></select>'),c_=k('<span class="hmm-switch-raw svelte-hdzef5"> </span>'),u_=k('<input class="hmm-input hmm-switch-number svelte-hdzef5" type="number"/> <!>',1),v_=k('<td class="svelte-hdzef5"><!></td>'),f_=k('<tr><td class="hmm-switch-index svelte-hdzef5"> </td><!></tr>'),h_=k('<div class="hmm-editor svelte-hdzef5" data-testid="editor-switch-week-profile"><h3 class="svelte-hdzef5"> </h3> <p class="hmm-editor-hint svelte-hdzef5"> </p> <label class="hmm-switch-option svelte-hdzef5"><input type="checkbox" data-testid="switch-show-unused"/> <span> </span></label> <div class="hmm-switch-scroll svelte-hdzef5"><table class="hmm-switch-table svelte-hdzef5"><thead><tr><th class="svelte-hdzef5"> </th><!></tr></thead><tbody></tbody></table></div></div>');function m_(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(!1);const i=v(()=>e.spec.slots.filter(W=>t(s)||!kg(e.values,W)));function o(W){return W.id==="TIME"?a("Time"):W.id==="WEEKDAY"?a("Weekdays"):n.meta.parameterLabel(W.id,e.channelType)}function l(W,z){return e.values[yn(W,z)]}function d(W,z,ne){e.onchange({[yn(W,z)]:ne})}function h(W,z){const ne=wg(W,z);ne&&e.onchange(ne)}function g(W,z){const ne=e.spec.durations[`${W}:${z.id}`];return ne===void 0?void 0:hd(e.values,ne)?.seconds}function b(W,z,ne){const ae=e.spec.durations[`${W}:${z.id}`],J=Number(ne);if(ae===void 0||ne===""||!Number.isFinite(J))return;const q=pd(J,ae);q&&e.onchange(q)}function y(W,z,ne){const ae=Number(ne);ne===""||!Number.isFinite(ae)||d(W,z,ae)}var S=h_(),E=A(S),_=f(E,!0),T=c(E,2),I=f(T,!0),w=c(T,2),D=A(w),P=c(D,2),U=f(P,!0),re=c(w,2),te=A(re),oe=A(te),ue=A(oe),x=A(ue),X=f(x,!0),$=c(x);Ne($,17,()=>e.spec.columns,W=>W.id,(W,z)=>{var ne=r_(),ae=f(ne,!0);N(J=>u(ae,J),[()=>o(t(z))]),p(W,ne)});var ee=c(oe);Ne(ee,20,()=>t(i),W=>W,(W,z)=>{var ne=f_(),ae=A(ne),J=f(ae,!0),q=c(ae);Ne(q,17,()=>e.spec.columns,V=>V.id,(V,Y)=>{var he=v_(),Q=A(he);{var Ee=ie=>{var be=s_(),fe=A(be);Ne(fe,18,()=>Sg,F=>F,(F,Z,ge)=>{var de=a_(),G=A(de),R=c(G,2),L=f(R,!0);N((H,_e,Se,De)=>{C(de,"title",H),G.disabled=!e.spec.writable,C(G,"aria-label",_e),C(G,"data-testid",`switch-${z}-day-${t(ge)}`),zn(G,Se),u(L,De)},[()=>a(Z),()=>a(Z),()=>yg(l(z,"WEEKDAY"),t(ge)),()=>a(Z).slice(0,2)]),ce("change",G,H=>d(z,"WEEKDAY",Ag(l(z,"WEEKDAY"),t(ge),H.currentTarget.checked))),p(F,de)});var le=c(fe,2),O=f(le,!0);N(F=>{C(le,"data-testid",`switch-${z}-mask`),u(O,F)},[()=>String(l(z,"WEEKDAY")??"—")]),p(ie,be)},Ae=ie=>{var be=i_();N((fe,le)=>{be.disabled=!e.spec.writable,C(be,"aria-label",fe),C(be,"data-testid",`switch-${z}-time`),gt(be,le)},[()=>`${a("Time")} ${z}`,()=>Tg(e.values,z)]),ce("change",be,fe=>h(z,fe.currentTarget.value)),p(ie,be)},j=ie=>{var be=o_(),fe=ke(be),le=c(fe,2),O=f(le,!0);N((F,Z,ge)=>{fe.disabled=!e.spec.writable,C(fe,"aria-label",F),C(fe,"data-testid",`switch-${z}-${t(Y).id}`),gt(fe,Z),C(le,"data-testid",`switch-${z}-${t(Y).id}-result`),u(O,ge)},[()=>`${o(t(Y))} ${z}`,()=>g(z,t(Y))??"",()=>ea(g(z,t(Y))??Number.NaN)]),ce("input",fe,F=>b(z,t(Y),F.currentTarget.value)),p(ie,be)},pe=ie=>{var be=d_();Ne(be,22,()=>Ln(t(Y).description)??[],le=>le,(le,O,F)=>{var Z=l_(),ge=f(Z,!0),de={};N((G,R)=>{u(ge,G),de!==(de=R)&&(Z.value=(Z.__value=de)??"")},[()=>n.meta.valueLabel(t(Y).id,O,e.channelType),()=>String(t(F))]),p(le,Z)});var fe;St(be),N((le,O)=>{be.disabled=!e.spec.writable,C(be,"aria-label",le),C(be,"data-testid",`switch-${z}-${t(Y).id}`),fe!==(fe=O)&&(be.value=(be.__value=fe)??"",Wt(be,fe))},[()=>`${o(t(Y))} ${z}`,()=>String(l(z,t(Y).id)??"")]),ce("change",be,le=>d(z,t(Y).id,Number(le.currentTarget.value))),p(ie,be)},B=ie=>{var be=u_(),fe=ke(be),le=c(fe,2);{var O=Z=>{var ge=c_(),de=f(ge,!0);N(G=>u(de,G),[()=>Va(t(Y).description)]),p(Z,ge)},F=v(()=>Va(t(Y).description)!=="");ve(le,Z=>{t(F)&&Z(O)})}N((Z,ge,de,G)=>{C(fe,"min",Z),C(fe,"max",ge),C(fe,"step",t(Y).description.TYPE==="FLOAT"?.01:1),fe.disabled=!e.spec.writable,C(fe,"aria-label",de),C(fe,"data-testid",`switch-${z}-${t(Y).id}`),gt(fe,G)},[()=>Nt(t(Y).description,"MIN"),()=>Nt(t(Y).description,"MAX"),()=>`${o(t(Y))} ${z}`,()=>l(z,t(Y).id)??""]),ce("input",fe,Z=>y(z,t(Y).id,Z.currentTarget.value)),p(ie,be)};ve(Q,ie=>{t(Y).kind==="weekday"?ie(Ee):t(Y).kind==="time"?ie(Ae,1):t(Y).kind==="duration"?ie(j,2):t(Y).kind==="enum"?ie(pe,3):ie(B,-1)})}p(V,he)}),N(()=>{C(ne,"data-testid",`switch-slot-${z}`),u(J,z)}),p(W,ne)}),N((W,z,ne,ae)=>{u(_,W),u(I,z),u(U,ne),u(X,ae)},[()=>a("Switching programme"),()=>a("No weekday chosen - the slot does nothing"),()=>a("Unused"),()=>a("Slot")]),nn(D,()=>t(s),W=>m(s,W)),p(r,S),Xe()}rt(["change","input"]);var Vo=k('<button type="button"> </button>'),Bo=k("<option> </option>"),p_=k('<div class="hmm-week-bar svelte-1du5x7x"><!> <span class="hmm-week-spacer svelte-1du5x7x"></span> <label class="hmm-week-copy svelte-1du5x7x"><span> </span> <select class="hmm-select" data-testid="week-copy-profile-target"><option>—</option><!></select></label> <button type="button" class="hmm-button" data-testid="week-copy-profile"> </button></div>'),g_=k('<span class="hmm-week-unit svelte-1du5x7x"> </span>'),__=k('<tr><td class="hmm-week-index svelte-1du5x7x"> </td><td class="hmm-week-from svelte-1du5x7x"> </td><td class="svelte-1du5x7x"><input class="hmm-input hmm-week-time svelte-1du5x7x" type="text" inputmode="numeric"/></td><td class="svelte-1du5x7x"><input class="hmm-input hmm-week-value svelte-1du5x7x" type="number" step="0.5"/> <!></td></tr>'),b_=k("<li> </li>"),E_=k('<ul class="hmm-week-problems svelte-1du5x7x" data-testid="week-problems"></ul>'),S_=k('<div class="hmm-editor svelte-1du5x7x" data-testid="editor-week-profile"><h3 class="svelte-1du5x7x"> </h3> <p class="hmm-editor-hint svelte-1du5x7x"> </p> <!> <div class="hmm-week-bar svelte-1du5x7x"><!> <span class="hmm-week-spacer svelte-1du5x7x"></span> <label class="hmm-week-copy svelte-1du5x7x"><span> </span> <select class="hmm-select" data-testid="week-copy-day-target"><option> </option><!></select></label> <button type="button" class="hmm-button" data-testid="week-copy-day"> </button></div> <table class="hmm-week-table svelte-1du5x7x"><thead><tr><th class="svelte-1du5x7x"> </th><th class="svelte-1du5x7x"> </th><th class="svelte-1du5x7x"> </th><th class="svelte-1du5x7x"> </th></tr></thead><tbody></tbody></table> <!></div>');function y_(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(0),i=M(xe(Ra[0]??"MONDAY")),o=M("*"),l=M("");const d=v(()=>e.spec.profiles[t(s)]??e.spec.profiles[0]),h=v(()=>Va(e.spec.valueDescription)),g=v(()=>Ng(e.spec,e.values)),b=v(()=>$r(Nt(e.spec.valueDescription,"MIN"),e.spec.valueDescription)),y=v(()=>$r(Nt(e.spec.valueDescription,"MAX"),e.spec.valueDescription)),S=v(()=>n.meta.parameterLabel(e.spec.valueField,e.channelType)),E=v(()=>t(g).filter(R=>R.profile===(t(d)?.id??"")));function _(R){const L=e.spec.days.indexOf(R),H=Ig[L];return H===void 0?R:a(H)}function T(R){return R===""?a("Week programme"):`${a("Profile")} ${R.slice(1)}`}function I(R){return!t(d)||R===1?Fr(0):Fr(Xs(e.spec,e.values,t(d),t(i),R-1).endTime??0)}function w(R,L){const H=Pg(L);H===void 0||!t(d)||e.onchange({[rn(t(d).endTimePrefix,t(i),R)]:H})}function D(R,L){const H=Number(L);L===""||!Number.isFinite(H)||!t(d)||e.onchange({[rn(t(d).valuePrefix,t(i),R)]:H})}function P(){if(!t(d))return;const R=t(o)==="*"?e.spec.days:[t(o)];e.onchange(xg(e.spec,e.values,t(d),t(i),R))}function U(){const R=e.spec.profiles.find(L=>L.id===t(l));!t(d)||!R||e.onchange(Cg(e.spec,e.values,t(d),[R]))}function re(R){const L={day:_(R.day),slot:String(R.slot),end:Fr(e.spec.dayEnd)};switch(R.code){case"not-increasing":return a("{day}: end time {slot} is not after the one before it",L);case"after-day-end":return a("{day}: end time {slot} comes after the day has ended",L);case"day-not-closed":return a("{day}: the last end time must be {end}",L)}}var te=S_(),oe=A(te),ue=f(oe,!0),x=c(oe,2),X=f(x,!0),$=c(x,2);{var ee=R=>{var L=p_(),H=A(L);Ne(H,19,()=>e.spec.profiles,me=>me.id,(me,Ie,se)=>{var we=Vo();let et;var Be=f(we,!0);N(Ce=>{et=ht(we,1,"hmm-button svelte-1du5x7x",null,et,{"hmm-week-active":t(se)===t(s)}),C(we,"data-testid",`week-profile-${t(Ie).id}`),u(Be,Ce)},[()=>T(t(Ie).id)]),ce("click",we,()=>m(s,t(se),!0)),p(me,we)});var _e=c(H,4),Se=A(_e),De=f(Se,!0),Oe=c(Se,2),Ue=A(Oe);Ue.value=Ue.__value="";var Ve=c(Ue);Ne(Ve,17,()=>e.spec.profiles,me=>me.id,(me,Ie)=>{var se=lt(),we=ke(se);{var et=Be=>{var Ce=Bo(),qe=f(Ce,!0),Re={};N(Te=>{u(qe,Te),Re!==(Re=t(Ie).id)&&(Ce.value=(Ce.__value=Re)??"")},[()=>T(t(Ie).id)]),p(Be,Ce)};ve(we,Be=>{t(Ie).id!==t(d)?.id&&Be(et)})}p(me,se)}),St(Oe);var Me=c(_e,2),je=f(Me,!0);N((me,Ie)=>{u(De,me),Me.disabled=!e.spec.writable||t(l)==="",u(je,Ie)},[()=>a("Copy profile to"),()=>a("Copy")]),dn(Oe,()=>t(l),me=>m(l,me)),ce("click",Me,U),p(R,L)};ve($,R=>{e.spec.profiles.length>1&&R(ee)})}var W=c($,2),z=A(W);Ne(z,16,()=>e.spec.days,R=>R,(R,L)=>{var H=Vo();let _e;var Se=f(H,!0);N(De=>{_e=ht(H,1,"hmm-button svelte-1du5x7x",null,_e,{"hmm-week-active":L===t(i)}),C(H,"data-testid",`week-day-${L}`),u(Se,De)},[()=>_(L)]),ce("click",H,()=>m(i,L,!0)),p(R,H)});var ne=c(z,4),ae=A(ne),J=f(ae,!0),q=c(ae,2),V=A(q),Y=f(V,!0);V.value=V.__value="*";var he=c(V);Ne(he,16,()=>e.spec.days,R=>R,(R,L)=>{var H=lt(),_e=ke(H);{var Se=De=>{var Oe=Bo(),Ue=f(Oe,!0),Ve={};N(Me=>{u(Ue,Me),Ve!==(Ve=L)&&(Oe.value=(Oe.__value=Ve)??"")},[()=>_(L)]),p(De,Oe)};ve(_e,De=>{L!==t(i)&&De(Se)})}p(R,H)}),St(q);var Q=c(ne,2),Ee=f(Q,!0),Ae=c(W,2),j=A(Ae),pe=A(j),B=A(pe),ie=f(B,!0),be=c(B),fe=f(be,!0),le=c(be),O=f(le,!0),F=c(le),Z=f(F,!0),ge=c(j);Ne(ge,20,()=>Array.from({length:e.spec.slots},(R,L)=>L+1),R=>R,(R,L)=>{const H=v(()=>t(d)?Xs(e.spec,e.values,t(d),t(i),L):void 0);var _e=__(),Se=A(_e),De=f(Se,!0),Oe=c(Se),Ue=f(Oe,!0),Ve=c(Oe),Me=A(Ve),je=c(Ve),me=A(je),Ie=c(me,2);{var se=we=>{var et=g_(),Be=f(et,!0);N(()=>u(Be,t(h))),p(we,et)};ve(Ie,we=>{t(h)!==""&&we(se)})}N((we,et,Be,Ce)=>{C(_e,"data-testid",`week-slot-${L}`),u(De,L),u(Ue,we),Me.disabled=!e.spec.writable,C(Me,"aria-label",et),C(Me,"data-testid",`week-slot-${L}-endtime`),gt(Me,Be),C(me,"min",t(b)),C(me,"max",t(y)),me.disabled=!e.spec.writable,C(me,"aria-label",Ce),C(me,"data-testid",`week-slot-${L}-value`),gt(me,t(H)?.value??"")},[()=>I(L),()=>`${a("until")} ${L}`,()=>Fr(t(H)?.endTime),()=>`${a("Value")} ${L}`]),ce("change",Me,we=>w(L,we.currentTarget.value)),ce("input",me,we=>D(L,we.currentTarget.value)),p(R,_e)});var de=c(Ae,2);{var G=R=>{var L=E_();Ne(L,21,()=>t(E),H=>`${H.day}-${H.slot}-${H.code}`,(H,_e)=>{var Se=b_(),De=f(Se,!0);N(Oe=>u(De,Oe),[()=>re(t(_e))]),p(H,Se)}),p(R,L)};ve(de,R=>{t(E).length>0&&R(G)})}N((R,L,H,_e,Se,De,Oe,Ue)=>{u(ue,R),u(X,L),u(J,H),u(Y,_e),Q.disabled=!e.spec.writable,u(Ee,Se),u(ie,De),u(fe,Oe),u(O,Ue),u(Z,t(S))},[()=>a("Week programme"),()=>a("The end times of a day rise until {end}, and the last one is {end}",{end:Fr(e.spec.dayEnd)}),()=>a("Copy day to"),()=>a("Weekdays"),()=>a("Copy"),()=>a("Slot"),()=>a("Time"),()=>a("until")]),dn(q,()=>t(o),R=>m(o,R)),ce("click",Q,P),p(r,te),Xe()}rt(["click","change","input"]);function A_(r,e){var n=lt(),a=ke(n);Ne(a,17,()=>e.specs,s=>s.id,(s,i)=>{var o=lt(),l=ke(o);{var d=S=>{jg(S,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})},h=S=>{Zg(S,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})},g=S=>{n_(S,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})},b=S=>{m_(S,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})},y=S=>{y_(S,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})};ve(l,S=>{t(i).kind==="blind-calibration"?S(d):t(i).kind==="duration-pairs"?S(h,1):t(i).kind==="enum-options"?S(g,2):t(i).kind==="switch-week-profile"?S(b,3):t(i).kind==="week-profile"&&S(y,4)})}p(s,o)}),p(r,n)}var T_=k('<input type="checkbox"/>'),Rs=k("<option> </option>"),w_=k('<select class="hmm-select"></select>'),k_=k('<select class="hmm-select hmm-param-special svelte-1qr2qb3"><option>—</option><!></select>'),R_=k('<select class="hmm-select hmm-param-preset svelte-1qr2qb3"><option>…</option><!></select>'),I_=k('<input class="hmm-input hmm-param-number svelte-1qr2qb3" type="number"/> <!> <!>',1),D_=k('<input class="hmm-input hmm-param-text svelte-1qr2qb3" type="text"/>'),N_=k('<span class="hmm-param-unit svelte-1qr2qb3"> </span>'),x_=k('<button type="button" class="hmm-button hmm-param-set svelte-1qr2qb3">setValue</button>'),C_=k('<span class="hmm-param-flag svelte-1qr2qb3">read-only</span>'),zo=k("<span> </span>"),P_=k('<p class="hmm-param-help svelte-1qr2qb3"> </p>'),L_=k('<div><div class="hmm-param-label svelte-1qr2qb3"><span> </span> <span class="hmm-param-id svelte-1qr2qb3"> </span></div> <div class="hmm-param-control svelte-1qr2qb3"><!> <!> <!></div> <div class="hmm-param-meta svelte-1qr2qb3"><!> <!> <!></div> <!></div>');function Qs(r,e){$e(e,!0);let n=K(e,"help",3,void 0),a=K(e,"valueLabel",3,void 0),s=K(e,"onset",3,void 0),i=K(e,"changed",3,!1),o=K(e,"disabled",3,!1);const l=v(()=>o()||!e.field.writable),d=v(()=>e.field.kind==="integer"||e.field.kind==="float"),h=v(()=>t(d)?$r(S(e.value),e.field.description):e.value),g=v(()=>t(h)===void 0||t(h)===null?"":String(t(h))),b=v(()=>S(e.value)??-1),y=v(()=>e.field.special.find(j=>j.VALUE===S(e.value)));function S(j){if(typeof j=="number")return j;if(typeof j=="string"&&j.trim()!==""&&Number.isFinite(Number(j)))return Number(j)}function E(j){if(j==="")return;const pe=_h(Number(j),e.field.description);pe!==void 0&&Number.isFinite(pe)&&e.onchange(pe)}function _(j){return a()?a()(j):j}var T=L_();let I;var w=A(T),D=A(w),P=f(D,!0),U=c(D,2),re=f(U,!0),te=c(w,2),oe=A(te);{var ue=j=>{var pe=T_();N(()=>{zn(pe,e.value===!0||e.value==="true"||e.value===1),pe.disabled=t(l),C(pe,"aria-label",e.label)}),ce("change",pe,B=>e.onchange(B.currentTarget.checked)),p(j,pe)},x=j=>{var pe=w_();Ne(pe,22,()=>e.field.valueList??[],ie=>ie,(ie,be,fe)=>{var le=Rs(),O=f(le,!0),F={};N((Z,ge)=>{u(O,Z),F!==(F=ge)&&(le.value=(le.__value=F)??"")},[()=>_(be),()=>String(t(fe))]),p(ie,le)});var B;St(pe),N(ie=>{pe.disabled=t(l),C(pe,"aria-label",e.label),B!==(B=ie)&&(pe.value=(pe.__value=B)??"",Wt(pe,B))},[()=>String(t(b))]),ce("change",pe,ie=>e.onchange(Number(ie.currentTarget.value))),p(j,pe)},X=j=>{var pe=I_(),B=ke(pe),ie=c(B,2);{var be=O=>{var F=k_(),Z=A(F);Z.value=Z.__value="";var ge=c(Z);Ne(ge,17,()=>e.field.special,G=>G.ID,(G,R)=>{var L=Rs(),H=f(L,!0),_e={};N(Se=>{u(H,Se),_e!==(_e=t(R).ID)&&(L.value=(L.__value=_e)??"")},[()=>_(t(R).ID)]),p(G,L)});var de;St(F),N(()=>{F.disabled=t(l),C(F,"aria-label",`${e.label} SPECIAL`),de!==(de=t(y)?.ID??"")&&(F.value=(F.__value=de)??"",Wt(F,de))}),ce("change",F,G=>{const R=e.field.special.find(L=>L.ID===G.currentTarget.value);e.onchange(R?R.VALUE:e.field.min??0)}),p(O,F)};ve(ie,O=>{e.field.special.length>0&&O(be)})}var fe=c(ie,2);{var le=O=>{var F=R_(),Z=A(F);Z.value=Z.__value="";var ge=c(Z);Ne(ge,17,()=>e.field.preset.presets,de=>String(de.value),(de,G)=>{var R=Rs(),L=f(R,!0),H={};N((_e,Se)=>{u(L,_e),H!==(H=Se)&&(R.value=(R.__value=H)??"")},[()=>t(G).label??_(t(G).labelKey??""),()=>String(t(G).value)]),p(de,R)}),F.value=F.__value="",N(()=>{F.disabled=t(l),C(F,"aria-label",`${e.label} presets`)}),ce("change",F,de=>{const G=e.field.preset?.presets.find(R=>String(R.value)===de.currentTarget.value);G!==void 0&&e.onchange(G.value)}),p(O,F)};ve(fe,O=>{e.field.preset&&O(le)})}N(()=>{C(B,"min",e.field.min),C(B,"max",e.field.max),C(B,"step",e.field.step),B.disabled=t(l)||t(y)!==void 0,C(B,"aria-label",e.label),gt(B,t(g))}),ce("input",B,O=>E(O.currentTarget.value)),p(j,pe)},$=j=>{var pe=D_();N(()=>{pe.disabled=t(l),C(pe,"aria-label",e.label),gt(pe,t(g))}),ce("input",pe,B=>e.onchange(B.currentTarget.value)),p(j,pe)};ve(oe,j=>{e.field.kind==="bool"||e.field.kind==="action"?j(ue):e.field.kind==="enum"?j(x,1):t(d)?j(X,2):j($,-1)})}var ee=c(oe,2);{var W=j=>{var pe=N_(),B=f(pe,!0);N(()=>u(B,e.field.unit)),p(j,pe)};ve(ee,j=>{e.field.unit!==""&&j(W)})}var z=c(ee,2);{var ne=j=>{var pe=x_();N(()=>{pe.disabled=t(l),C(pe,"data-testid",`set-${e.field.name}`)}),ce("click",pe,()=>s()()),p(j,pe)};ve(z,j=>{s()&&j(ne)})}var ae=c(te,2),J=A(ae);{var q=j=>{var pe=C_();p(j,pe)};ve(J,j=>{e.field.writable||j(q)})}var V=c(J,2);{var Y=j=>{var pe=zo(),B=f(pe);N(()=>u(B,`${e.field.min??"−∞"??""} … ${e.field.max??"∞"??""}`)),p(j,pe)};ve(V,j=>{(e.field.min!==void 0||e.field.max!==void 0)&&j(Y)})}var he=c(V,2);{var Q=j=>{var pe=zo(),B=f(pe);N(ie=>u(B,`default ${ie??""}`),[()=>String(e.field.description.DEFAULT)]),p(j,pe)};ve(he,j=>{e.field.description.DEFAULT!==void 0&&j(Q)})}var Ee=c(ae,2);{var Ae=j=>{var pe=P_(),B=f(pe,!0);N(()=>u(B,n())),p(j,pe)};ve(Ee,j=>{n()&&j(Ae)})}N(()=>{I=ht(T,1,"hmm-param svelte-1qr2qb3",null,I,{"hmm-param-changed":i()}),C(T,"data-testid",`param-${e.field.name}`),C(D,"title",e.field.name),u(P,e.label),u(re,e.field.name)}),p(r,T),Xe()}rt(["change","input","click"]);var M_=k('<button type="button" class="hmm-button" data-testid="write-stage"> </button>'),O_=k('<button type="button" class="hmm-button"> </button> <!> <button type="button" class="hmm-button" data-testid="write-confirm"> </button>',1),F_=k('<p class="hmm-preview-call svelte-1aaq6az">putParamset(<span class="hmm-mono"> </span>, <span class="hmm-mono"> </span>, <span class="hmm-mono"> </span>)</p>'),Ho=k("<li> </li>"),G_=k('<ul class="hmm-preview-warnings svelte-1aaq6az" data-testid="preview-warnings"></ul>'),U_=k('<p data-testid="preview-empty"> </p>'),V_=k('<tr><td class="hmm-mono svelte-1aaq6az"> </td><td class="svelte-1aaq6az"> </td><td class="hmm-preview-new svelte-1aaq6az"> </td></tr>'),B_=k('<table class="hmm-preview-table svelte-1aaq6az"><thead><tr><th class="svelte-1aaq6az"> </th><th class="svelte-1aaq6az"> </th><th class="svelte-1aaq6az"> </th></tr></thead><tbody></tbody></table> <p class="hmm-preview-count svelte-1aaq6az"> </p>',1),z_=k('<ul class="hmm-preview-problems svelte-1aaq6az" data-testid="preview-problems"></ul>'),H_=k('<tr><td class="hmm-mono svelte-1aaq6az"> </td><td class="svelte-1aaq6az"> </td><td class="svelte-1aaq6az"> </td></tr>'),W_=k('<p class="hmm-preview-warn svelte-1aaq6az" data-testid="readback-warning"> </p>'),K_=k('<table class="hmm-preview-table svelte-1aaq6az" data-testid="preview-readback"><thead><tr><th class="svelte-1aaq6az"> </th><th class="svelte-1aaq6az"> </th><th class="svelte-1aaq6az"> </th></tr></thead><tbody></tbody></table> <!>',1),Y_=k('<li><span class="hmm-mono"> </span> </li>'),j_=k('<ul class="hmm-preview-results svelte-1aaq6az" data-testid="preview-results"></ul>'),q_=k("<!> <!> <!> <!> <!> <!>",1);function Fd(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"preview",3,void 0),s=K(e,"paramset",3,"MASTER"),i=K(e,"warnings",19,()=>[]),o=K(e,"writing",3,!1),l=K(e,"results",19,()=>[]),d=K(e,"readBack",19,()=>[]),h=K(e,"onstage",3,void 0);const b=Et().i18n.t,y=v(()=>a()===void 0||a().entries.length===0);{const S=_=>{var T=O_(),I=ke(T),w=f(I,!0),D=c(I,2);{var P=te=>{var oe=M_(),ue=f(oe,!0);N(x=>{oe.disabled=o()||t(y),u(ue,x)},[()=>b("Add to pending changes")]),ce("click",oe,()=>h()()),p(te,oe)};ve(D,te=>{h()&&te(P)})}var U=c(D,2),re=f(U,!0);N((te,oe)=>{u(w,te),U.disabled=o()||t(y),u(re,oe)},[()=>b("Close"),()=>b("Write")]),ce("click",I,()=>n(!1)),ce("click",U,()=>e.onconfirm()),p(_,T)};let E=v(()=>b("Preview"));Vt(r,{get title(){return t(E)},width:"640px",testId:"write-preview",get open(){return n()},set open(_){n(_)},buttons:S,children:(_,T)=>{var I=lt(),w=ke(I);{var D=P=>{var U=q_(),re=ke(U);Ne(re,16,()=>a().targets,J=>J,(J,q)=>{var V=F_(),Y=c(A(V)),he=f(Y,!0),Q=c(Y,2),Ee=f(Q,!0),Ae=c(Q,2),j=f(Ae,!0);N(pe=>{C(V,"data-testid",`preview-call-${q}`),u(he,q),u(Ee,s()),u(j,pe)},[()=>JSON.stringify(a().values)]),p(J,V)});var te=c(re,2);{var oe=J=>{var q=G_();Ne(q,20,i,V=>V,(V,Y)=>{var he=Ho(),Q=f(he,!0);N(()=>u(Q,Y)),p(V,he)}),p(J,q)};ve(te,J=>{i().length>0&&J(oe)})}var ue=c(te,2);{var x=J=>{var q=U_(),V=f(q,!0);N(Y=>u(V,Y),[()=>b("Nothing has changed - nothing will be written")]),p(J,q)},X=J=>{var q=B_(),V=ke(q),Y=A(V),he=A(Y),Q=A(he),Ee=f(Q,!0),Ae=c(Q),j=f(Ae,!0),pe=c(Ae),B=f(pe,!0),ie=c(Y);Ne(ie,21,()=>a().entries,le=>le.param,(le,O)=>{var F=V_(),Z=A(F),ge=f(Z,!0),de=c(Z),G=f(de,!0),R=c(de),L=f(R,!0);N(()=>{C(F,"data-testid",`preview-${t(O).param}`),u(ge,t(O).param),u(G,t(O).from),u(L,t(O).to)}),p(le,F)});var be=c(V,2),fe=f(be);N((le,O,F,Z)=>{u(Ee,le),u(j,O),u(B,F),u(fe,`${Z??""} ×
11
- ${a().targets.length??""}`)},[()=>b("Parameter"),()=>b("Current value"),()=>b("New value"),()=>b("{count} parameters will be written",{},a().entries.length)]),p(J,q)};ve(ue,J=>{t(y)?J(x):J(X,-1)})}var $=c(ue,2);{var ee=J=>{var q=z_();Ne(q,21,()=>a().problems,V=>`${V.param}-${V.code}`,(V,Y)=>{var he=Ho(),Q=f(he);N(()=>u(Q,`${t(Y).param??""}: ${t(Y).message??""}`)),p(V,he)}),p(J,q)};ve($,J=>{a().problems.length>0&&J(ee)})}var W=c($,2);{var z=J=>{var q=K_(),V=ke(q),Y=A(V),he=A(Y),Q=A(he),Ee=f(Q,!0),Ae=c(Q),j=f(Ae,!0),pe=c(Ae),B=f(pe,!0),ie=c(Y);Ne(ie,21,d,O=>O.param,(O,F)=>{var Z=H_();let ge;var de=A(Z),G=f(de,!0),R=c(de),L=f(R,!0),H=c(R),_e=f(H,!0);N(()=>{C(Z,"data-testid",`readback-${t(F).param}`),ge=ht(Z,1,"svelte-1aaq6az",null,ge,{"hmm-preview-differs":t(F).differs}),u(G,t(F).param),u(L,t(F).sent),u(_e,t(F).stored)}),p(O,Z)});var be=c(V,2);{var fe=O=>{var F=W_(),Z=f(F,!0);N(ge=>u(Z,ge),[()=>b("The interface answered ok but stored something else")]),p(O,F)},le=v(()=>d().some(O=>O.differs));ve(be,O=>{t(le)&&O(fe)})}N((O,F,Z)=>{u(Ee,O),u(j,F),u(B,Z)},[()=>b("Parameter"),()=>b("What was sent"),()=>b("Read back")]),p(J,q)};ve(W,J=>{d().length>0&&J(z)})}var ne=c(W,2);{var ae=J=>{var q=j_();Ne(q,21,l,V=>`${V.address}-${V.paramset}`,(V,Y)=>{var he=Y_();let Q;var Ee=A(he),Ae=f(Ee,!0),j=c(Ee);N(()=>{Q=ht(he,1,"svelte-1aaq6az",null,Q,{"hmm-preview-failed":!t(Y).ok}),u(Ae,t(Y).address),u(j,` ${t(Y).ok?"✔":`✕ ${t(Y).faultString??""}`}`)}),p(V,he)}),p(J,q)};ve(ne,J=>{l().length>0&&J(ae)})}p(P,U)};ve(w,P=>{a()&&P(D)})}p(_,I)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click"]);var $_=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="paramset-preview"> </button>',1),X_=k("<p> </p>"),Q_=k('<p data-testid="paramset-failed"> </p>'),Z_=k('<label class="hmm-paramset-option svelte-onngst"><input type="checkbox" data-testid="paramset-show-covered"/> <span> </span></label>'),J_=k('<label class="hmm-paramset-option svelte-onngst"><input type="checkbox" data-testid="paramset-show-hidden"/> <span> </span></label>'),eb=k("<li> </li>"),tb=k('<ul class="hmm-paramset-warnings svelte-onngst" data-testid="paramset-warnings"></ul>'),nb=k('<li><span class="hmm-mono"> </span> </li>'),rb=k('<ul class="hmm-paramset-results svelte-onngst" data-testid="paramset-results"></ul>'),ab=k('<div class="hmm-paramset-top svelte-onngst"><!> <label class="hmm-paramset-option svelte-onngst"><input type="checkbox" data-testid="paramset-write-all"/> <span> </span></label> <!> <!></div> <!> <!> <div class="hmm-paramset-list svelte-onngst"></div> <!>',1),sb=k("<!> <!>",1);function ib(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"interfaceName",3,""),s=K(e,"address",3,""),i=K(e,"paramset",3,"MASTER");const o=Et(),l=o.i18n.t;let d=M(void 0),h=M(xe({})),g=M(xe({})),b=M(void 0),y=M(xe([])),S=M(!1),E=M(!1),_=M(!1),T=M(!1),I=M(void 0),w=M(xe([])),D=M(xe([])),P=0;const U=v(()=>o.devices.index(a())),re=v(()=>t(U)?.get(s())?.TYPE??""),te=v(()=>`${i()} — ${o.nameOf(s())} (${s()})`),oe=v(()=>t(d)?Md(t(d),t(b)):[]),ue=v(()=>({optionByName:(O,F)=>o.meta.valueLabelIfKnown(O,F,t(re)),optionByIndex:(O,F)=>o.meta.valueLabelIfKnown(O,String(F),t(re)),preset:O=>t(b)?.parameters.find(F=>F.name===O)?.preset,uiLabel:O=>o.meta.uiLabel(O)})),x=v(()=>t(d)?Fg({interfaceName:a(),address:s(),channelType:t(re),paramset:i(),description:t(d)},t(ue)):[]),X=v(()=>t(_)?new Set:Gg(t(x))),$=v(()=>t(oe).filter(O=>(t(E)||O.visible)&&!t(X).has(O.name))),ee=v(()=>i()==="VALUES"),W=v(()=>i()==="MASTER"),z=v(()=>{if(!t(W)||!t(U)||s()===""||!t(U).has(s()))return;const O=t(U).all().filter(F=>F.TYPE===t(re)&&F.ADDRESS!==s()).map(F=>F.ADDRESS);return Bh(t(U),s(),i(),O)}),ne=v(()=>t(z)?[...t(z).eligible.map(O=>({value:O,label:`${o.nameOf(O)} (${O})`})),...t(z).ineligible.filter(O=>O.reason==="different-identity").map(O=>({value:O.address,label:`${o.nameOf(O.address)} (${O.address}) — ${l("other firmware or device type")}`,disabled:!0}))]:[]),ae=v(()=>(t(b)?.problems??[]).map(O=>`${O.params.join(", ")}: ${o.meta.uiLabel(O.errorKey)}`));ot(()=>{if(!n()||a()===""||s()==="")return;const O=P+=1,F={interfaceName:a(),address:s(),paramset:i()};o.paramsets.open(F.interfaceName,F.address,F.paramset).then(Z=>{O===P&&(m(d,Z?.description,!0),m(h,Z?.values??{},!0),m(g,{},!0),m(w,[],!0),m(D,[],!0),m(y,[],!0),m(S,!1))})}),ot(()=>{const O=t(d);if(!n()||!O||i()!=="MASTER"||t(re)===""){m(b,void 0);return}const F=J();o.meta.masterView(t(re),O,F).then(Z=>{m(b,Z,!0)})});function J(){const O={...t(h)};for(const[F,Z]of Object.entries(t(g)))(typeof Z=="boolean"||typeof Z=="number"||typeof Z=="string")&&(O[F]=Z);return O}function q(O){return Object.prototype.hasOwnProperty.call(t(g),O.name)?t(g)[O.name]:t(h)[O.name]??O.description.DEFAULT}function V(O){return Object.prototype.hasOwnProperty.call(t(g),O.name)}function Y(O,F){m(g,{...t(g),[O.name]:F},!0)}function he(O){m(g,{...t(g),...O},!0)}function Q(O){return o.meta.parameterLabel(O.name,t(re))}function Ee(O){const F=o.meta.parameterHelp(O.name,t(re));return F===void 0?void 0:F.replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim()}function Ae(){t(d)&&(m(w,[],!0),m(D,[],!0),m(I,ur(t(h),t(g),t(d),{interfaceName:a(),targets:[s(),...t(y)],writeAll:t(S)}),!0),m(T,!0))}async function j(){const O=t(I);if(!O||!t(d))return;const F=await o.paramsets.put(a(),[...O.targets],i(),O.values,t(S)?{writeAll:!0}:void 0);m(w,F,!0);const Z=await o.paramsets.read(a(),s(),i());Z&&(m(D,Od(O.values,Z,t(d)),!0),m(h,Z,!0),m(g,{},!0)),F.length>0&&F.every(ge=>ge.ok)&&!t(D).some(ge=>ge.differs)&&m(T,!1)}function pe(){const O=t(I);!O||O.entries.length===0||(o.changeSet.stage({kind:"paramset",interfaceName:a(),title:`${i()} — ${o.nameOf(s())} (${s()})`,targets:[...O.targets],paramset:i(),values:O.values,writeAll:t(S),calls:O.targets.map(F=>`putParamset(${F}, ${i()}, ${JSON.stringify(O.values)})`),lines:O.entries.map(F=>({label:F.param,from:F.from,to:F.to}))}),m(T,!1),n(!1))}function B(O,F){if(O.kind==="enum"&&typeof F=="number"){const Z=O.valueList?.[F];if(Z!==void 0)return`${o.meta.valueLabel(O.name,Z,t(re))} (${F})`}return String(F)}async function ie(O){const F=q(O),Z=typeof F=="boolean"||typeof F=="number"||typeof F=="string"?F:!1;await o.paramsets.setValue(a(),s(),O.name,Z)&&(m(g,Object.fromEntries(Object.entries(t(g)).filter(([de])=>de!==O.name)),!0),m(h,{...t(h),[O.name]:Z},!0),o.notices.push("info",`setValue ${o.nameOf(s())} (${s()}) ${O.name} = ${B(O,Z)}`))}var be=sb(),fe=ke(be);Vt(fe,{get title(){return t(te)},width:"900px",height:"min(640px, calc(100vh - 32px))",minWidth:520,minHeight:320,testId:"paramset-dialog",get open(){return n()},set open(F){n(F)},buttons:F=>{var Z=$_(),ge=ke(Z),de=f(ge,!0),G=c(ge,2),R=f(G,!0);N((L,H)=>{u(de,L),G.disabled=!t(d),u(R,H)},[()=>l("Close"),()=>l("Preview")]),ce("click",ge,()=>n(!1)),ce("click",G,Ae),p(F,Z)},children:(F,Z)=>{var ge=lt(),de=ke(ge);{var G=H=>{var _e=X_(),Se=f(_e,!0);N(De=>u(Se,De),[()=>l("Loading Homematic Manager...")]),p(H,_e)},R=H=>{var _e=Q_(),Se=f(_e,!0);N(De=>u(Se,De),[()=>l("No data")]),p(H,_e)},L=H=>{var _e=ab(),Se=ke(_e),De=A(Se);{var Oe=ye=>{{let Le=v(()=>l("Please choose one or more channels")),Ge=v(()=>l("Please choose one or more channels")),Fe=v(()=>l("Filter")),We=v(()=>l("Check all")),He=v(()=>l("Uncheck all"));Qr(ye,{get options(){return t(ne)},get label(){return t(Le)},get placeholder(){return t(Ge)},get filterLabel(){return t(Fe)},get checkAllLabel(){return t(We)},get uncheckAllLabel(){return t(He)},summary:Ze=>l("{count} channels selected",{},Ze.length),testId:"paramset-targets",get selected(){return t(y)},set selected(Ze){m(y,Ze,!0)}})}};ve(De,ye=>{t(W)&&t(ne).length>0&&ye(Oe)})}var Ue=c(De,2),Ve=A(Ue),Me=c(Ve,2),je=f(Me,!0),me=c(Ue,2);{var Ie=ye=>{var Le=Z_(),Ge=A(Le),Fe=c(Ge,2),We=f(Fe,!0);N(He=>u(We,He),[()=>l("Show the raw parameters as well")]),nn(Ge,()=>t(_),He=>m(_,He)),p(ye,Le)};ve(me,ye=>{t(x).length>0&&ye(Ie)})}var se=c(me,2);{var we=ye=>{var Le=J_(),Ge=A(Le),Fe=c(Ge,2),We=f(Fe,!0);N(He=>u(We,He),[()=>l("Show hidden parameters")]),nn(Ge,()=>t(E),He=>m(E,He)),p(ye,Le)},et=v(()=>t(oe).some(ye=>!ye.visible));ve(se,ye=>{t(et)&&ye(we)})}var Be=c(Se,2);{var Ce=ye=>{var Le=tb();Ne(Le,20,()=>t(ae),Ge=>Ge,(Ge,Fe)=>{var We=eb(),He=f(We,!0);N(()=>u(He,Fe)),p(Ge,We)}),p(ye,Le)};ve(Be,ye=>{t(ae).length>0&&ye(Ce)})}var qe=c(Be,2);{let ye=v(J);A_(qe,{get specs(){return t(x)},get values(){return t(ye)},get channelType(){return t(re)},onchange:he})}var Re=c(qe,2);Ne(Re,21,()=>t($),ye=>ye.name,(ye,Le)=>{{let Ge=v(()=>q(t(Le))),Fe=v(()=>Q(t(Le))),We=v(()=>Ee(t(Le))),He=v(()=>V(t(Le))),Ze=v(()=>t(ee)&&t(Le).writable?()=>{ie(t(Le))}:void 0);Qs(ye,{get field(){return t(Le)},get value(){return t(Ge)},get label(){return t(Fe)},get help(){return t(We)},get changed(){return t(He)},valueLabel:st=>o.meta.valueLabel(t(Le).name,st,t(re)),onchange:st=>Y(t(Le),st),get onset(){return t(Ze)}})}});var Te=c(Re,2);{var Pe=ye=>{var Le=rb();Ne(Le,21,()=>t(w),Ge=>`${Ge.address}-${Ge.paramset}`,(Ge,Fe)=>{var We=nb();let He;var Ze=A(We),st=f(Ze,!0),_t=c(Ze);N(()=>{He=ht(We,1,"svelte-onngst",null,He,{"hmm-paramset-failed":!t(Fe).ok}),u(st,t(Fe).address),u(_t,` ${t(Fe).ok?"✔":`✕ ${t(Fe).faultString??""}`}`)}),p(Ge,We)}),p(ye,Le)};ve(Te,ye=>{t(w).length>0&&ye(Pe)})}N(ye=>u(je,ye),[()=>l("Write every parameter, not only the changed ones")]),nn(Ve,()=>t(S),ye=>m(S,ye)),p(H,_e)};ve(de,H=>{o.paramsets.loading&&!t(d)?H(G):t(d)?H(L,-1):H(R,1)})}p(F,ge)},$$slots:{buttons:!0,default:!0}});var le=c(fe,2);Fd(le,{get preview(){return t(I)},get paramset(){return i()},get warnings(){return t(ae)},get results(){return t(w)},get readBack(){return t(D)},get writing(){return o.paramsets.writing},onstage:pe,onconfirm:()=>{j()},get open(){return t(T)},set open(O){m(T,O,!0)}}),p(r,be),Xe()}rt(["click"]);const Ia=24,Gd=16;function ta(r){return r.replace(/[\s-]/g,"").toUpperCase()}function Kr(r){return new RegExp(`^[0-9A-F]{${String(Ia)}}$`).test(ta(r))}function Zs(r){return new RegExp(`^[0-9A-Z]{${String(Gd)}}$`).test(ta(r))}function ob(r){const e=/S:\s*([0-9A-Fa-f]{24}).*?K:\s*([0-9A-Za-z]{16})/.exec(r);if(e?.[1]&&e[2])return{sgtin:e[1].toUpperCase(),key:e[2].toUpperCase()};const n=ta(r);if(n.length===Ia+Gd){const a=n.slice(0,Ia),s=n.slice(Ia);if(Kr(a)&&Zs(s))return{sgtin:a,key:s}}if(Kr(n))return{sgtin:n,key:""}}const lb="modulepreload",db=function(r,e){return new URL(r,e).href},Wo={},cb=function(e,n,a){let s=Promise.resolve();if(n&&n.length>0){let h=function(g){return Promise.all(g.map(b=>Promise.resolve(b).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};const o=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),d=l?.nonce||l?.getAttribute("nonce");s=h(n.map(g=>{if(g=db(g,a),g in Wo)return;Wo[g]=!0;const b=g.endsWith(".css"),y=b?'[rel="stylesheet"]':"";if(a)for(let E=o.length-1;E>=0;E--){const _=o[E];if(_.href===g&&(!b||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${g}"]${y}`))return;const S=document.createElement("link");if(S.rel=b?"stylesheet":lb,b||(S.as="script"),S.crossOrigin="",S.href=g,d&&S.setAttribute("nonce",d),document.head.appendChild(S),b)return new Promise((E,_)=>{S.addEventListener("load",E),S.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${g}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return s.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return e().catch(i)})};var ub=k('<video class="hmm-qr svelte-1e4doc5" autoplay="" playsinline=""></video>',2);function vb(r,e){$e(e,!0);let n=K(e,"active",3,!1),a=K(e,"onerror",3,void 0),s=K(e,"createReader",3,void 0),i=K(e,"insecureContextMessage",3,"The camera needs https or localhost."),o=K(e,"testId",3,void 0),l=M(void 0),d;ot(()=>{if(!n()){b();return}const _=t(l);if(!_)return;if(!h()){a()?.(i());return}const T={cancelled:!1};return(async()=>{try{const w=await(s()?await s()():await g()).decodeFromVideoDevice(void 0,_,D=>{D&&e.onscan(D.getText())});T.cancelled?w.stop():d=w}catch(I){a()?.(I instanceof Error?I.message:String(I))}})(),()=>{T.cancelled=!0,b()}});function h(){return globalThis.navigator?.mediaDevices!==void 0&&globalThis.isSecureContext}async function g(){const{BrowserQRCodeReader:_}=await cb(async()=>{const{BrowserQRCodeReader:T}=await import("./index-BN6QZh6-.js");return{BrowserQRCodeReader:T}},[],import.meta.url);return new _}function b(){d?.stop(),d=void 0}Lv(b);var y=lt(),S=ke(y);{var E=_=>{var T=ub();T.muted=!0,Un(T,I=>m(l,I),()=>t(l)),N(()=>C(T,"data-testid",o())),p(_,T)};ve(S,_=>{n()&&_(E)})}p(r,y),Xe()}var fb=k('<button type="button" class="hmm-button"> </button>'),hb=k('<p> </p> <button type="button" class="hmm-button" data-testid="add-device-search">searchDevices</button>',1),mb=k('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf">KEY</span> <input data-testid="add-device-key"/></label>'),pb=k('<span class="hmm-add-error svelte-rkdrrf" data-testid="add-device-scan-error"> </span>'),gb=k('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <select class="hmm-select svelte-rkdrrf" data-testid="add-device-hmip-mode"><option> </option><option> </option></select></label> <label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf">SGTIN</span> <input data-testid="add-device-sgtin"/></label> <!> <div class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <div class="svelte-rkdrrf"><button type="button" class="hmm-button" data-testid="add-device-scan"> </button> <!></div></div> <!>',1),_b=k('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <select class="hmm-select svelte-rkdrrf" data-testid="add-device-mode"><option> </option><option> </option></select></label> <label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <span class="hmm-add-inline svelte-rkdrrf"><input class="hmm-input hmm-mono svelte-rkdrrf" data-testid="add-device-serial"/> <button type="button" class="hmm-button" data-testid="add-device-serial-start"> </button></span></label> <label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <input class="hmm-input hmm-mono svelte-rkdrrf" data-testid="add-device-temp-key"/></label>',1),bb=k('<span data-testid="add-device-countdown"> </span> <button type="button" class="hmm-button" data-testid="add-device-stop"> </button>',1),Eb=k('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <span class="svelte-rkdrrf"><input class="hmm-input hmm-add-seconds svelte-rkdrrf" type="number" min="10" max="300"/> s</span></label> <div class="hmm-add-actions svelte-rkdrrf"><button type="button" class="hmm-button" data-testid="add-device-start"> </button> <!></div>',1),Sb=k('<span data-testid="add-device-inbox-result"> </span>'),yb=k('<div class="hmm-add-actions svelte-rkdrrf"><button type="button" class="hmm-button" data-testid="add-device-confirm-inbox"> </button> <!></div>'),Ab=k('<label class="hmm-add-row svelte-rkdrrf"><span class="hmm-mono svelte-rkdrrf"> </span> <input class="hmm-input svelte-rkdrrf"/></label>'),Tb=k('<section class="hmm-add-paired svelte-rkdrrf" data-testid="add-device-paired"><h4 class="svelte-rkdrrf"> </h4> <!> <button type="button" class="hmm-button" data-testid="add-device-name-save"> </button></section>'),wb=k("<!> <!> <!> <!>",1);function kb(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"createReader",3,void 0);const s=Et(),i=s.i18n.t,o=1e3;let l=M(60),d=M(1),h=M(""),g=M(""),b=M("KEY"),y=M(""),S=M(""),E=M(!1),_=M(""),T=M(0),I=M(!1),w=M(xe([])),D=M(xe({})),P=M("");const U=v(()=>s.app.selectedInterface),re=v(()=>s.interfaces.typeOf(t(U))),te=v(()=>!t(re).startsWith("BidCos")&&t(re)!=="CUxD"),oe=v(()=>t(re)==="BidCos-Wired"),ue=v(()=>t(b)==="SGTIN"?Kr(t(y)):Kr(t(y))&&Zs(t(S)));ot(()=>{n()||(m(E,!1),m(T,0),m(w,[],!0),m(D,{},!0),m(P,""))}),ot(()=>{if(n())return s.transport.on("devices.changed",ne=>{if(ne.interfaceName!==t(U)||ne.kind!=="new")return;const ae=ne.addresses.filter(J=>!J.includes(":")&&!t(w).includes(J));ae.length>0&&m(w,[...t(w),...ae],!0)})}),ot(()=>{if(!n()||t(T)<=0)return;const ne=setInterval(()=>{s.devices.installModeSeconds(t(U)).then(ae=>{m(T,ae,!0)})},o);return()=>{clearInterval(ne)}});async function x(ne){m(I,!0);const ae=await s.devices.setInstallMode(t(U),!0,{seconds:t(l),...ne});m(I,!1),ae&&ne.address===void 0&&m(T,t(l),!0)}async function X(){await s.devices.setInstallMode(t(U),!1),m(T,0)}async function $(){m(I,!0),await s.console.call(t(U),"searchDevices",[""]),m(I,!1),await s.devices.load(t(U),{refresh:!0})}function ee(ne){const ae=ob(ne);if(!ae){m(_,i("That is not a HomematicIP device code"),!0);return}m(_,""),m(y,ae.sgtin,!0),ae.key!==""&&m(S,ae.key,!0),m(E,!1)}async function W(){m(I,!0);const ne=await s.devices.confirmRegaInbox();m(I,!1),m(P,ne.length===0?i("The ReGa inbox is empty"):`${i("Confirmed")}: ${ne.join(", ")}`,!0)}async function z(){const ne=t(w).filter(ae=>(t(D)[ae]??"").trim()!=="").map(ae=>({address:ae,name:(t(D)[ae]??"").trim()}));ne.length!==0&&await s.names.rename(ne)&&m(w,t(w).filter(ae=>(t(D)[ae]??"").trim()===""),!0)}{const ne=J=>{var q=fb(),V=f(q,!0);N(Y=>u(V,Y),[()=>i("Close")]),ce("click",q,()=>n(!1)),p(J,q)};let ae=v(()=>i("Add device"));Vt(r,{get title(){return t(ae)},width:"680px",testId:"add-device-dialog",get open(){return n()},set open(J){n(J)},buttons:ne,children:(J,q)=>{var V=wb(),Y=ke(V);{var he=fe=>{var le=hb(),O=ke(le),F=f(O,!0),Z=c(O,2);N(ge=>{u(F,ge),Z.disabled=t(I)},[()=>i("BidCos-Wired has no install mode; the interface searches its bus for new devices.")]),ce("click",Z,()=>{$()}),p(fe,le)},Q=fe=>{var le=gb(),O=ke(le),F=A(O),Z=f(F,!0),ge=c(F,2),de=A(ge),G=f(de,!0);de.value=de.__value="KEY";var R=c(de),L=f(R,!0);R.value=R.__value="SGTIN",St(ge);var H=c(O,2),_e=c(A(H),2);let Se;var De=c(H,2);{var Oe=Be=>{var Ce=mb(),qe=c(A(Ce),2);let Re;N(Te=>{Re=ht(qe,1,"hmm-input hmm-mono svelte-rkdrrf",null,Re,{"hmm-add-invalid":Te}),gt(qe,t(S))},[()=>t(S)!==""&&!Zs(t(S))]),ce("input",qe,Te=>m(S,ta(Te.currentTarget.value),!0)),p(Be,Ce)};ve(De,Be=>{t(b)==="KEY"&&Be(Oe)})}var Ue=c(De,2),Ve=A(Ue),Me=f(Ve,!0),je=c(Ve,2),me=A(je),Ie=f(me,!0),se=c(me,2);{var we=Be=>{var Ce=pb(),qe=f(Ce,!0);N(()=>u(qe,t(_))),p(Be,Ce)};ve(se,Be=>{t(_)!==""&&Be(we)})}var et=c(Ue,2);{let Be=v(()=>i("The camera is only available over https or on localhost. Open the page with its https address (the CCU serves it on its https port too, with a certificate warning) or type the key in by hand."));vb(et,{get active(){return t(E)},get createReader(){return a()},get insecureContextMessage(){return t(Be)},onscan:ee,onerror:Ce=>{m(_,Ce,!0),m(E,!1)},testId:"add-device-video"})}N((Be,Ce,qe,Re,Te,Pe)=>{u(Z,Be),u(G,Ce),u(L,qe),Se=ht(_e,1,"hmm-input hmm-mono svelte-rkdrrf",null,Se,{"hmm-add-invalid":Re}),gt(_e,t(y)),u(Me,Te),u(Ie,Pe)},[()=>i("Mode"),()=>i("With SGTIN and key"),()=>i("With SGTIN only (key server)"),()=>t(y)!==""&&!Kr(t(y)),()=>i("QR scanner"),()=>t(E)?i("Stop"):i("Scan")]),dn(ge,()=>t(b),Be=>m(b,Be)),ce("input",_e,Be=>m(y,ta(Be.currentTarget.value),!0)),ce("click",me,()=>{m(_,""),m(E,!t(E))}),p(fe,le)},Ee=fe=>{var le=_b(),O=ke(le),F=A(O),Z=f(F,!0),ge=c(F,2),de=A(ge),G=f(de,!0);de.value=de.__value=1;var R=c(de),L=f(R,!0);R.value=R.__value=2,St(ge);var H=c(O,2),_e=A(H),Se=f(_e,!0),De=c(_e,2),Oe=A(De),Ue=c(Oe,2),Ve=f(Ue,!0),Me=c(H,2),je=A(Me),me=f(je,!0),Ie=c(je,2);N((se,we,et,Be,Ce,qe,Re)=>{u(Z,se),u(G,we),u(L,et),u(Se,Be),Ue.disabled=Ce,u(Ve,qe),u(me,Re)},[()=>i("Mode"),()=>i("Normal install mode"),()=>i("Write the MASTER defaults and delete the existing links"),()=>i("Serial number"),()=>t(I)||t(h).trim()==="",()=>i("Add by serial number"),()=>i("Temporary key")]),dn(ge,()=>t(d),se=>m(d,se)),Tt(Oe,()=>t(h),se=>m(h,se)),ce("click",Ue,()=>{x({mode:t(d),address:t(h).trim(),...t(g).trim()===""?{}:{tempKey:t(g).trim()}})}),Tt(Ie,()=>t(g),se=>m(g,se)),p(fe,le)};ve(Y,fe=>{t(oe)?fe(he):t(te)?fe(Q,1):fe(Ee,-1)})}var Ae=c(Y,2);{var j=fe=>{var le=Eb(),O=ke(le),F=A(O),Z=f(F,!0),ge=c(F,2),de=A(ge),G=c(O,2),R=A(G),L=f(R,!0),H=c(R,2);{var _e=Se=>{var De=bb(),Oe=ke(De),Ue=f(Oe,!0),Ve=c(Oe,2),Me=f(Ve,!0);N((je,me)=>{u(Ue,je),u(Me,me)},[()=>i("{count} seconds left",{},t(T)),()=>i("Stop")]),ce("click",Ve,()=>{X()}),p(Se,De)};ve(H,Se=>{t(T)>0&&Se(_e)})}N((Se,De)=>{u(Z,Se),R.disabled=t(I)||t(te)&&!t(ue),u(L,De)},[()=>i("Duration"),()=>i("Start install mode")]),Tt(de,()=>t(l),Se=>m(l,Se)),ce("click",R,()=>{x(t(te)?{hmipKeyMode:t(b),hmipKey:{sgtin:t(y),key:t(b)==="SGTIN"?"":t(S)}}:{mode:t(d),...t(g).trim()===""?{}:{tempKey:t(g).trim()}})}),p(fe,le)};ve(Ae,fe=>{t(oe)||fe(j)})}var pe=c(Ae,2);{var B=fe=>{var le=yb(),O=A(le),F=f(O,!0),Z=c(O,2);{var ge=de=>{var G=Sb(),R=f(G,!0);N(()=>u(R,t(P))),p(de,G)};ve(Z,de=>{t(P)!==""&&de(ge)})}N(de=>{O.disabled=t(I),u(F,de)},[()=>i("Confirm the ReGa inbox")]),ce("click",O,()=>{W()}),p(fe,le)};ve(pe,fe=>{s.interfaces.rega?.enabled===!0&&fe(B)})}var ie=c(pe,2);{var be=fe=>{var le=Tb(),O=A(le),F=f(O,!0),Z=c(O,2);Ne(Z,16,()=>t(w),G=>G,(G,R)=>{var L=Ab(),H=A(L),_e=f(H,!0),Se=c(H,2);N((De,Oe)=>{u(_e,R),C(Se,"placeholder",De),C(Se,"aria-label",Oe),gt(Se,t(D)[R]??"")},[()=>i("Name"),()=>`${i("Name")} ${R}`]),ce("input",Se,De=>m(D,{...t(D),[R]:De.currentTarget.value},!0)),p(G,L)});var ge=c(Z,2),de=f(ge,!0);N((G,R)=>{u(F,G),u(de,R)},[()=>i("New"),()=>i("Apply")]),ce("click",ge,()=>{z()}),p(fe,le)};ve(ie,fe=>{t(w).length>0&&fe(be)})}p(J,V)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click","input"]);var Rb=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button hmm-danger svelte-y0v77l" data-testid="delete-device-confirm"> </button>',1),Ib=k('<h4 class="svelte-y0v77l"> </h4> <p class="hmm-delete-address svelte-y0v77l"> </p> <select class="hmm-select hmm-delete-select svelte-y0v77l"><option> </option><option> </option></select> <p> </p> <select class="hmm-select hmm-delete-select svelte-y0v77l"><option> </option><option> </option></select> <p class="hmm-delete-flags svelte-y0v77l"> </p>',1);function Db(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"address",3,"");const s=Et(),i=s.i18n.t;let o=M(1),l=M(4),d=M(!1);const h=v(()=>t(o)+t(l)),g=v(()=>s.names.nameOf(a()));ot(()=>{n()&&(m(o,1),m(l,4))});async function b(){m(d,!0);const y=await s.devices.remove(s.app.selectedInterface,a(),t(h));m(d,!1),y&&n(!1)}{const y=E=>{var _=Rb(),T=ke(_),I=f(T,!0),w=c(T,2),D=f(w,!0);N((P,U)=>{u(I,P),w.disabled=t(d),u(D,U)},[()=>i("Cancel"),()=>i("Delete")]),ce("click",T,()=>n(!1)),ce("click",w,()=>{b()}),p(E,_)};let S=v(()=>i("Delete device"));Vt(r,{get title(){return t(S)},width:"560px",testId:"delete-device-dialog",get open(){return n()},set open(E){n(E)},buttons:y,children:(E,_)=>{var T=Ib(),I=ke(T),w=f(I,!0),D=c(I,2),P=f(D,!0),U=c(D,2),re=A(U),te=f(re,!0);re.value=re.__value=1;var oe=c(re),ue=f(oe,!0);oe.value=oe.__value=0,St(U);var x=c(U,2),X=f(x,!0),$=c(x,2),ee=A($),W=f(ee,!0);ee.value=ee.__value=4;var z=c(ee),ne=f(z,!0);z.value=z.__value=2,St($);var ae=c($,2),J=f(ae);N((q,V,Y,he,Q,Ee,Ae,j)=>{u(w,q),u(P,a()),C(U,"aria-label",V),u(te,Y),u(ue,he),u(X,Q),C($,"aria-label",Ee),u(W,Ae),u(ne,j),u(J,`FLAGS = ${t(h)??""}`)},[()=>i("Do you really want to delete the device {name}?",{name:t(g)}),()=>i("Delete device"),()=>i("Unlearn and reset the device to factory defaults"),()=>i("Unlearn only (direct links are kept)"),()=>i("If the device cannot be reached:"),()=>i("If the device cannot be reached:"),()=>i("Delete at the next opportunity"),()=>i("Delete from the interface process only")]),dn(U,()=>t(o),q=>m(o,q)),dn($,()=>t(l),q=>m(l,q)),p(E,T)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click"]);var Nb=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="rename-save"> </button>',1),xb=k('<label class="hmm-rename-children svelte-111tkcw"><input type="checkbox" data-testid="rename-children"/> <span> </span></label>'),Cb=k('<p class="hmm-rename-address svelte-111tkcw"> </p> <input class="hmm-input hmm-rename-input svelte-111tkcw" data-testid="rename-input"/> <!>',1);function Pb(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"address",3,"");const s=Et(),i=s.i18n.t;let o=M(""),l=M(!1),d=M(!1);const h=v(()=>a()!==""&&wa(a())),g=v(()=>t(h)?s.devices.channels(s.app.selectedInterface,a()).map(S=>S.ADDRESS):[]);ot(()=>{n()&&(m(o,s.names.name(a())??"",!0),m(l,!1))});function b(){if(t(o).trim()==="")return[];if(!t(h))return[{address:a(),name:t(o)}];const S=[{address:a(),name:t(o)}];for(const E of t(g)){const _=Qf(E);_===0?S.push({address:E,name:`${t(o)}:0`}):t(l)&&_!==void 0&&S.push({address:E,name:`${t(o)}:${String(_)}`})}return S}async function y(){const S=b();if(S.length===0)return;m(d,!0);const E=await s.names.rename(S);m(d,!1),E&&n(!1)}{const S=_=>{var T=Nb(),I=ke(T),w=f(I,!0),D=c(I,2),P=f(D,!0);N((U,re,te)=>{u(w,U),D.disabled=re,u(P,te)},[()=>i("Cancel"),()=>t(d)||t(o).trim()==="",()=>i("Apply")]),ce("click",I,()=>n(!1)),ce("click",D,()=>{y()}),p(_,T)};let E=v(()=>i("Rename"));Vt(r,{get title(){return t(E)},width:"520px",testId:"rename-dialog",get open(){return n()},set open(_){n(_)},buttons:S,children:(_,T)=>{var I=Cb(),w=ke(I),D=f(w,!0),P=c(w,2),U=c(P,2);{var re=te=>{var oe=xb(),ue=A(oe),x=c(ue,2),X=f(x,!0);N($=>u(X,$),[()=>i("Overwrite channel names")]),nn(ue,()=>t(l),$=>m(l,$)),p(te,oe)};ve(U,te=>{t(h)&&te(re)})}N(te=>{u(D,a()),C(P,"aria-label",te)},[()=>i("Name")]),ce("keydown",P,te=>{te.key==="Enter"&&y()}),Tt(P,()=>t(o),te=>m(o,te)),p(_,I)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click","keydown"]);var Lb=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="repair-confirm"> </button>',1),Mb=k('<p class="hmm-repair-note svelte-g84sn7" data-testid="repair-bidcos-note"> </p>'),Ob=k("<p> </p>"),Fb=k('<p data-testid="repair-failed"> </p>'),Gb=k('→ <span class="hmm-mono" data-testid="repair-pending-after"> </span>',1),Ub=k('<li class="hmm-mono"> </li>'),Vb=k('<div class="hmm-repair-unrepairable svelte-g84sn7" data-testid="repair-unrepairable"><p> </p> <ul class="svelte-g84sn7"></ul></div>'),Bb=k('<tr><td class="hmm-mono svelte-g84sn7"> </td><td class="hmm-mono svelte-g84sn7"> </td><td class="svelte-g84sn7"> </td><td class="svelte-g84sn7"> </td><td class="svelte-g84sn7"> </td></tr>'),zb=k('<table class="hmm-repair-table svelte-g84sn7" data-testid="repair-corrections"><thead><tr><th class="svelte-g84sn7"> </th><th class="svelte-g84sn7"> </th><th class="svelte-g84sn7"> </th><th class="svelte-g84sn7"> </th><th class="svelte-g84sn7"> </th></tr></thead><tbody></tbody></table>'),Hb=k('<p data-testid="repair-nothing"> </p>'),Wb=k('<label class="hmm-repair-recovery svelte-g84sn7"><span> </span> <select class="hmm-select" data-testid="repair-recovery"><option>—</option><option>clearConfigCache</option><option>restoreConfigToDevice</option></select></label>'),Kb=k('<li><span class="hmm-mono"> </span> </li>'),Yb=k('<ul class="hmm-repair-results svelte-g84sn7" data-testid="repair-results"></ul>'),jb=k('<p>CONFIG_PENDING: <span class="hmm-mono"> </span> <!></p> <!> <!> <!> <!>',1),qb=k('<p class="hmm-repair-address svelte-g84sn7"> <span class="hmm-mono"> </span></p> <!> <!>',1);function $b(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"address",3,"");const s=Et(),i=s.i18n.t;let o=M(void 0),l=M(void 0),d=M(!1),h=M(!1),g=M("none"),b=0;const y=v(()=>s.app.selectedInterface),S=v(()=>!s.interfaces.typeOf(t(y)).startsWith("BidCos")),E=v(()=>t(l)??t(o)),_=v(()=>t(E)?.channels.flatMap(I=>I.corrected.map(w=>({channel:I,c:w})))??[]);ot(()=>{if(!n()||a()===""||t(y)==="")return;const I=b+=1;m(d,!0),m(l,void 0),m(g,"none"),s.devices.repairConfig(t(y),a(),{dryRun:!0}).then(w=>{I===b&&(m(o,w,!0),m(d,!1))})});async function T(){m(h,!0),m(l,await s.devices.repairConfig(t(y),a(),{...t(S)||t(g)==="none"?{}:{bidcosRecovery:t(g)}}),!0),m(h,!1),t(l)&&(await s.devices.load(t(y),{refresh:!0}),await s.serviceMessages.load())}{const I=D=>{var P=Lb(),U=ke(P),re=f(U,!0),te=c(U,2),oe=f(te,!0);N((ue,x)=>{u(re,ue),te.disabled=t(h)||t(E)===void 0||t(l)!==void 0,u(oe,x)},[()=>i("Close"),()=>i("Repair configuration")]),ce("click",U,()=>n(!1)),ce("click",te,()=>{T()}),p(D,P)};let w=v(()=>i("Repair configuration"));Vt(r,{get title(){return t(w)},width:"720px",testId:"repair-dialog",get open(){return n()},set open(D){n(D)},buttons:I,children:(D,P)=>{var U=qb(),re=ke(U),te=A(re),oe=c(te),ue=f(oe,!0),x=c(re,2);{var X=ne=>{var ae=Mb(),J=f(ae,!0);N(q=>u(J,q),[()=>i("On BidCos a pending configuration is normal: it is queued and the device takes it when it next wakes up.")]),p(ne,ae)};ve(x,ne=>{t(S)||ne(X)})}var $=c(x,2);{var ee=ne=>{var ae=Ob(),J=f(ae,!0);N(q=>u(J,q),[()=>i("Loading Homematic Manager...")]),p(ne,ae)},W=ne=>{var ae=Fb(),J=f(ae,!0);N(q=>u(J,q),[()=>i("No data")]),p(ne,ae)},z=ne=>{var ae=jb(),J=ke(ae),q=c(A(J)),V=f(q,!0),Y=c(q,2);{var he=le=>{var O=Gb(),F=c(ke(O)),Z=f(F,!0);N(ge=>u(Z,ge),[()=>String(t(l).configPendingAfter??"—")]),p(le,O)};ve(Y,le=>{t(l)&&le(he)})}var Q=c(J,2);{var Ee=le=>{var O=Vb(),F=A(O),Z=f(F,!0),ge=c(F,2);Ne(ge,20,()=>t(E).unrepairable,de=>de,(de,G)=>{var R=Ub(),L=f(R,!0);N(()=>u(L,G)),p(de,R)}),N(de=>u(Z,de),[()=>i("These channels store a parameter their description does not have. No RPC method removes it: the device has to be deleted and paired again, or a CCU backup from before the bad write restored.")]),p(le,O)};ve(Q,le=>{t(E).unrepairable.length>0&&le(Ee)})}var Ae=c(Q,2);{var j=le=>{var O=zb(),F=A(O),Z=A(F),ge=A(Z),de=f(ge,!0),G=c(ge),R=f(G,!0),L=c(G),H=f(L,!0),_e=c(L),Se=f(_e,!0),De=c(_e),Oe=f(De,!0),Ue=c(F);Ne(Ue,21,()=>t(_),Ve=>`${Ve.channel.address}-${Ve.c.parameter}`,(Ve,Me)=>{var je=Bb(),me=A(je),Ie=f(me,!0),se=c(me),we=f(se,!0),et=c(se),Be=f(et,!0),Ce=c(et),qe=f(Ce,!0),Re=c(Ce),Te=f(Re,!0);N((Pe,ye)=>{u(Ie,t(Me).channel.address),u(we,t(Me).c.parameter),u(Be,Pe),u(qe,ye),u(Te,t(Me).c.reason)},[()=>wr(t(Me).c.stored,void 0),()=>wr(t(Me).c.replacement,void 0)]),p(Ve,je)}),N((Ve,Me,je,me,Ie)=>{u(de,Ve),u(R,Me),u(H,je),u(Se,me),u(Oe,Ie)},[()=>i("Channel"),()=>i("Parameter"),()=>i("Current value"),()=>i("New value"),()=>i("Message")]),p(le,O)},pe=le=>{var O=Hb(),F=f(O,!0);N(Z=>u(F,Z),[()=>i("Nothing has to be corrected")]),p(le,O)};ve(Ae,le=>{t(_).length>0?le(j):le(pe,-1)})}var B=c(Ae,2);{var ie=le=>{var O=Wb(),F=A(O),Z=f(F,!0),ge=c(F,2),de=A(ge);de.value=de.__value="none";var G=c(de);G.value=G.__value="clearConfigCache";var R=c(G);R.value=R.__value="restoreConfigToDevice",St(ge),N(L=>u(Z,L),[()=>i("Additional BidCos recovery")]),dn(ge,()=>t(g),L=>m(g,L)),p(le,O)};ve(B,le=>{t(S)||le(ie)})}var be=c(B,2);{var fe=le=>{var O=Yb();Ne(O,21,()=>t(l).channels,F=>F.address,(F,Z)=>{var ge=Kb();let de;var G=A(ge),R=f(G,!0),L=c(G);N(()=>{de=ht(ge,1,"svelte-g84sn7",null,de,{"hmm-repair-failed":!t(Z).write.ok}),u(R,t(Z).address),u(L,` ${t(Z).write.ok?"✔":`✕ ${t(Z).write.faultString??""}`}`)}),p(F,ge)}),p(le,O)};ve(be,le=>{t(l)&&le(fe)})}N(le=>u(V,le),[()=>String(t(E).configPendingBefore??"—")]),p(ne,ae)};ve($,ne=>{t(d)?ne(ee):t(E)?ne(z,-1):ne(W,1)})}N(ne=>{u(te,`${ne??""} `),u(ue,a())},[()=>s.nameOf(a())]),p(D,U)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click"]);var Xb=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="replace-device-confirm"> </button>',1),Qb=k("<p> </p>"),Zb=k('<p data-testid="replace-none"> </p>'),Jb=k("<option> </option>"),eE=k('<select class="hmm-select hmm-replace-select svelte-novg4s"></select>'),tE=k('<h4 class="svelte-novg4s"> </h4> <p class="hmm-replace-new svelte-novg4s"> <span class="hmm-mono"> </span></p> <!>',1);function nE(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"address",3,"");const s=Et(),i=s.i18n.t;let o=M(xe([])),l=M(""),d=M(!1),h=M(!1);const g=v(()=>t(o).filter(y=>!y.ADDRESS.includes(":")));ot(()=>{if(!n()||a()==="")return;const y=a();m(d,!0),m(l,""),s.devices.replaceable(s.app.selectedInterface,y).then(S=>{m(o,S,!0),m(l,S.find(E=>!E.ADDRESS.includes(":"))?.ADDRESS??"",!0),m(d,!1)})});async function b(){m(h,!0);const y=await s.devices.replace(s.app.selectedInterface,t(l),a());m(h,!1),y&&n(!1)}{const y=E=>{var _=Xb(),T=ke(_),I=f(T,!0),w=c(T,2),D=f(w,!0);N((P,U)=>{u(I,P),w.disabled=t(h)||t(l)==="",u(D,U)},[()=>i("Cancel"),()=>i("Replace")]),ce("click",T,()=>n(!1)),ce("click",w,()=>{b()}),p(E,_)};let S=v(()=>i("Replace device"));Vt(r,{get title(){return t(S)},width:"560px",testId:"replace-device-dialog",get open(){return n()},set open(E){n(E)},buttons:y,children:(E,_)=>{var T=tE(),I=ke(T),w=f(I,!0),D=c(I,2),P=A(D),U=c(P),re=f(U,!0),te=c(D,2);{var oe=X=>{var $=Qb(),ee=f($,!0);N(W=>u(ee,W),[()=>i("Loading Homematic Manager...")]),p(X,$)},ue=X=>{var $=Zb(),ee=f($,!0);N(W=>u(ee,W),[()=>i("No suitable device available")]),p(X,$)},x=X=>{var $=eE();Ne($,21,()=>t(g),ee=>ee.ADDRESS,(ee,W)=>{var z=Jb(),ne=f(z),ae={};N(J=>{u(ne,`${J??""} (${t(W).ADDRESS??""})`),ae!==(ae=t(W).ADDRESS)&&(z.value=(z.__value=ae)??"")},[()=>s.nameOf(t(W).ADDRESS)]),p(ee,z)}),St($),N(ee=>C($,"aria-label",ee),[()=>i("Replace device")]),dn($,()=>t(l),ee=>m(l,ee)),p(X,$)};ve(te,X=>{t(d)?X(oe):t(g).length===0?X(ue,1):X(x,-1)})}N((X,$)=>{u(w,X),u(P,`${$??""}: `),u(re,a())},[()=>i("Which device do you want to replace?"),()=>i("New device")]),p(E,T)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click"]);var rE=k("<!> <!> <!> <!> <!> <!> <!> <!> <!> <!>",1),aE=k('<button type="button" class="hmm-inline-button svelte-1fmr35a">⚒</button>'),sE=k('<span role="img"> </span> <!>',1),Ko=k('<span class="hmm-firmware-status svelte-1fmr35a"> </span>'),Yo=k('<button type="button" class="hmm-inline-button svelte-1fmr35a"> </button>'),iE=k("<span> </span> <!>",1),oE=k('<span title="AES_ACTIVE" aria-label="AES_ACTIVE" role="img">🔑</span>'),lE=k('<div class="hmm-page svelte-1fmr35a"><div class="hmm-page-grid svelte-1fmr35a"><!></div></div> <!> <!> <!> <!> <!> <!> <!> <!> <!>',1);function dE(r,e){$e(e,!0);const n=Et(),a=n.i18n.t,s=1e4;let i=M(xe([])),o=M(xe([])),l=M(!1),d=M(0),h=M(0),g=M(""),b=M(!1),y=M(!1),S=M(!1),E=M(!1),_=M(!1),T=M(""),I=M(!1),w=M(xe([])),D=M(xe([])),P=M(!1),U=M(!1),re=M(""),te=M("MASTER");const oe=v(()=>n.app.selectedInterface),ue=v(()=>n.interfaces.typeOf(t(oe))),x=v(()=>n.devices.devices(t(oe))),X=v(()=>n.devices.index(t(oe))),$=v(()=>n.serviceMessages.of(t(oe)));ot(()=>{t(oe)!==""&&n.links.ensure(t(oe))});const ee=v(()=>n.devices.isLoading(t(oe))||t(X)===void 0?a("Loading Homematic Manager..."):a("No devices - the interface has not reported any yet")),W=v(()=>t(i).length===1?t(i)[0]??"":""),z=v(()=>t(W)!==""&&wa(t(W))?t(W):""),ne=v(()=>t(i).filter(se=>!wa(se)&&!Yn(se))),ae=v(()=>t(W)!==""&&!Yn(t(W))),J=v(()=>t(z)!==""&&ba(t(X)?.get(t(z))?.FLAGS).dontDelete),q=v(()=>t(z)!==""&&!t(J)),V=v(()=>t(ue).startsWith("BidCos"));function Y(se){switch(se){case"device":return a("Select a device");case"channel":return a("Select one or more channels");case"delete":return t(J)?a("This device carries the DontDelete flag"):a("Select a device");case"bidcos":return a("Only available on BidCos interfaces")}}const he=v(()=>[{key:"icon",label:"",width:Zr,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"name",label:a("Name"),width:170,value:se=>n.nameOf(se.ADDRESS)},{key:"ADDRESS",label:"ADDRESS",width:150,mono:!0},{key:"msgs",label:"Msgs",width:48,fixed:!0,align:"center",filterable:!1,sortable:!1,value:se=>ks(se.ADDRESS,t($)).map(we=>we.datapoint).join(" ")},{key:"TYPE",label:"TYPE",width:150},{key:"SUBTYPE",label:"SUBTYPE",width:90,hidden:t(ue)!=="HmIP-RF"},{key:"FIRMWARE",label:"FIRMWARE",width:170,value:se=>`${se.FIRMWARE??""} ${se.AVAILABLE_FIRMWARE??""}`.trim()},{key:"PARAMSETS",label:"PARAMSETS",width:150,sortable:!1,value:se=>(se.PARAMSETS??[]).join(" ")},{key:"FLAGS",label:"FLAGS",width:130,value:se=>ba(se.FLAGS).labels.join(" ")},{key:"RX_MODE",label:"RX_MODE",width:130,hidden:t(ue)==="BidCos-Wired",value:se=>Jf(se.RX_MODE).join(" ")}]),Q=v(()=>[{key:"name",label:a("Name"),width:170,value:se=>n.nameOf(se.ADDRESS)},{key:"ADDRESS",label:"ADDRESS",width:150,mono:!0},{key:"TYPE",label:"TYPE",width:150},{key:"DIRECTION",label:"DIRECTION",width:100,value:se=>th(se.DIRECTION)},{key:"PARAMSETS",label:"PARAMSETS",width:140,sortable:!1,value:se=>(se.PARAMSETS??[]).join(" ")},{key:"FLAGS",label:"FLAGS",width:130,value:se=>ba(se.FLAGS).labels.join(" ")},{key:"links",label:a("Links"),width:60,fixed:!0,align:"right",filterable:!1,value:se=>{const we=n.links.forAddress(t(oe),se.ADDRESS).length;return we===0?"":we}},{key:"AES_ACTIVE",label:"AES_ACTIVE",width:90,hidden:t(ue)!=="BidCos-RF",value:se=>se.AES_ACTIVE?"🔑":""}]);function Ee(se){const we=t(X)?.get(se);return{canSend:Tn(we?.LINK_SOURCE_ROLES).length>0,canReceive:Tn(we?.LINK_TARGET_ROLES).length>0,links:n.links.forAddress(t(oe),se).length}}function Ae(se){return n.devices.channels(t(oe),se.ADDRESS)}function j(se){return ks(se,t($),99).some(we=>we.datapoint==="UPDATE_PENDING")}function pe(se){return qp(se,{busy:n.devices.firmwareBusy.includes(se.ADDRESS),updatePending:j(se.ADDRESS)})}async function B(se){const we=pe(se);we.action==="install"?await n.devices.installFirmware(t(oe),se.ADDRESS):we.action==="update"&&await n.devices.updateFirmware(t(oe),[se.ADDRESS])}ot(()=>{const se=t(oe);if(se===""||!n.devices.firmwarePending(se))return;const we=setInterval(()=>{n.devices.load(se,{refresh:!0})},s);return()=>{clearInterval(we)}});function ie(se){m(T,se,!0),m(b,!0)}function be(se){m(T,se,!0),m(y,!0)}function fe(se){m(T,se,!0),m(S,!0)}function le(se){m(T,se,!0),m(E,!0)}async function O(se){const we=[...t(ne)];if(we.length===0)return;const et=await n.devices.reportValueUsage(t(oe),we,se);n.notices.push("info",a("reportValueUsage {value}: {count} datapoints on {channels} channels",{value:se,count:et,channels:we.length}))}function F(se,we){m(re,se,!0),m(te,we,!0),m(U,!0)}function Z(se,we){m(g,se.ADDRESS,!0),m(d,we.clientX,!0),m(h,we.clientY,!0),m(l,!0)}const ge=v(()=>wa(t(g))?[{id:"rename",label:a("Rename")},{id:"paramset:MASTER",label:a("MASTER Paramset")},{id:"paramset:SERVICE",label:a("SERVICE Paramset"),disabled:!(t(X)?.get(t(g))?.PARAMSETS??[]).includes("SERVICE")},{id:"sep1",separator:!0},{id:"restore",label:a("restoreConfigToDevice"),disabled:!t(V)},{id:"clear",label:a("clearConfigCache"),disabled:!t(V)},{id:"repair",label:a("Repair configuration")},{id:"sep2",separator:!0},{id:"replace",label:a("Replace"),disabled:de(t(g))},{id:"delete",label:a("Delete"),danger:!0,disabled:de(t(g))}]:[{id:"rename",label:a("Rename"),disabled:Yn(t(g))},{id:"usage1",label:"reportValueUsage 1",disabled:Yn(t(g))},{id:"usage0",label:"reportValueUsage 0",disabled:Yn(t(g))},{id:"sep1",separator:!0},{id:"paramset:MASTER",label:a("MASTER Paramset")},{id:"paramset:VALUES",label:a("VALUES Paramset")},{id:"sep2",separator:!0},{id:"link:sender",label:a("Create link as sender"),disabled:!Ee(t(g)).canSend},{id:"link:receiver",label:a("Create link as receiver"),disabled:!Ee(t(g)).canReceive},{id:"link:show",label:`${a("Show links")} (${String(Ee(t(g)).links)})`,disabled:Ee(t(g)).links===0},{id:"team",label:a("Team"),disabled:(t(X)?.get(t(g))?.TEAM_TAG??"")===""}]);function de(se){return ba(t(X)?.get(se)?.FLAGS).dontDelete}async function G(se){const we=t(g);if(se.startsWith("paramset:")){F(we,se.slice(9));return}switch(se){case"link:sender":m(w,[we],!0),m(D,[],!0),m(I,!0);break;case"link:receiver":m(w,[],!0),m(D,[we],!0),m(I,!0);break;case"team":m(T,we,!0),m(P,!0);break;case"link:show":n.app.linksFilter=we,n.app.setTab("links");break;case"rename":ie(we);break;case"restore":await n.devices.restoreConfig(t(oe),we);break;case"clear":await n.devices.clearConfigCache(t(oe),we);break;case"repair":le(we);break;case"replace":fe(we);break;case"delete":be(we);break;case"usage1":case"usage0":await n.devices.reportValueUsage(t(oe),[we],se==="usage1"?1:0);break}}var R=lE(),L=ke(R),H=A(L),_e=A(H);{const se=Re=>{var Te=rE(),Pe=ke(Te);{let Ke=v(()=>a("Add device"));mt(Pe,{get title(){return t(Ke)},icon:"+",testId:"devices-add",onclick:()=>m(_,!0)})}var ye=c(Pe,2);{let Ke=v(()=>a("Rename device")),Ye=v(()=>!t(ae)),tt=v(()=>Y("device"));mt(ye,{get title(){return t(Ke)},icon:"✎",get disabled(){return t(Ye)},get reason(){return t(tt)},testId:"devices-rename",onclick:()=>ie(t(W))})}var Le=c(ye,2);{let Ke=v(()=>t(ne).length===0),Ye=v(()=>Y("channel"));mt(Le,{title:"reportValueUsage 1",icon:"⇩",get disabled(){return t(Ke)},get reason(){return t(Ye)},testId:"devices-usage-1",onclick:()=>{O(1)}})}var Ge=c(Le,2);{let Ke=v(()=>t(ne).length===0),Ye=v(()=>Y("channel"));mt(Ge,{title:"reportValueUsage 0",icon:"⇧",get disabled(){return t(Ke)},get reason(){return t(Ye)},testId:"devices-usage-0",onclick:()=>{O(0)}})}var Fe=c(Ge,2);{let Ke=v(()=>a("restoreConfigToDevice")),Ye=v(()=>t(z)===""||!t(V)),tt=v(()=>t(V)?Y("device"):Y("bidcos"));mt(Fe,{get title(){return t(Ke)},icon:"⟲",get disabled(){return t(Ye)},get reason(){return t(tt)},testId:"devices-restore",onclick:()=>{n.devices.restoreConfig(t(oe),t(z))}})}var We=c(Fe,2);{let Ke=v(()=>a("clearConfigCache")),Ye=v(()=>t(z)===""||!t(V)),tt=v(()=>t(V)?Y("device"):Y("bidcos"));mt(We,{get title(){return t(Ke)},icon:"⌫",get disabled(){return t(Ye)},get reason(){return t(tt)},testId:"devices-clear",onclick:()=>{n.devices.clearConfigCache(t(oe),t(z))}})}var He=c(We,2);{let Ke=v(()=>a("Repair configuration")),Ye=v(()=>t(z)===""),tt=v(()=>Y("device"));mt(He,{get title(){return t(Ke)},icon:"⚒",get disabled(){return t(Ye)},get reason(){return t(tt)},testId:"devices-repair",onclick:()=>le(t(z))})}var Ze=c(He,2);{let Ke=v(()=>a("Replace device")),Ye=v(()=>!t(q)),tt=v(()=>Y("delete"));mt(Ze,{get title(){return t(Ke)},icon:"⇄",get disabled(){return t(Ye)},get reason(){return t(tt)},testId:"devices-replace",onclick:()=>fe(t(z))})}var st=c(Ze,2);{let Ke=v(()=>a("Delete device")),Ye=v(()=>!t(q)),tt=v(()=>Y("delete"));mt(st,{get title(){return t(Ke)},icon:"🗑",get disabled(){return t(Ye)},get reason(){return t(tt)},testId:"devices-delete",onclick:()=>be(t(z))})}var _t=c(st,2);{let Ke=v(()=>a("Refresh"));mt(_t,{get title(){return t(Ke)},icon:"⟳",testId:"devices-refresh",onclick:()=>{n.devices.load(t(oe),{refresh:!0})}})}p(Re,Te)},we=(Re,Te=fn,Pe=fn,ye=fn)=>{var Le=lt(),Ge=ke(Le);{var Fe=Ke=>{{let Ye=v(()=>n.host.deviceImageUrl(Te().TYPE)),tt=v(()=>`device-image-${Te().ADDRESS}`);Jr(Ke,{get deviceType(){return Te().TYPE},get src(){return t(Ye)},get testId(){return t(tt)}})}},We=Ke=>{var Ye=lt(),tt=ke(Ye);Ne(tt,17,()=>ks(Te().ADDRESS,t($)),dt=>dt.datapoint,(dt,nt)=>{const ct=v(()=>Dd(t(nt).datapoint,!t(V)));var Ot=sE(),Lt=ke(Ot);let mn;var Ft=f(Lt,!0),Dt=c(Lt,2);{var Xt=Zt=>{var wn=aE();N(Mn=>{C(wn,"data-testid",`repair-${Te().ADDRESS}`),C(wn,"title",Mn)},[()=>a("Repair configuration")]),ce("click",wn,Mn=>{Mn.stopPropagation(),le(Te().ADDRESS)}),p(Zt,wn)},Qt=v(()=>Yp(t(nt).datapoint,!t(V)));ve(Dt,Zt=>{t(Qt)&&Zt(Xt)})}N(Zt=>{mn=ht(Lt,1,"hmm-msg-mark svelte-1fmr35a",null,mn,{"hmm-msg-error":t(nt).level==="error","hmm-msg-warn":t(nt).level==="warn"}),C(Lt,"title",Zt),C(Lt,"aria-label",t(nt).datapoint),u(Ft,t(nt).symbol)},[()=>t(ct)===void 0?t(nt).title:`${t(nt).title} — ${a(t(ct))}`]),p(dt,Ot)}),p(Ke,Ye)},He=Ke=>{const Ye=v(()=>pe(Te()));var tt=iE(),dt=ke(tt),nt=f(dt,!0),ct=c(dt,2);{var Ot=Ft=>{var Dt=Ko(),Xt=f(Dt,!0);N(Qt=>u(Xt,Qt),[()=>a("in progress")]),p(Ft,Dt)},Lt=Ft=>{var Dt=Yo(),Xt=f(Dt);N((Qt,Zt)=>{C(Dt,"data-testid",`firmware-${Te().ADDRESS}`),C(Dt,"title",Qt),u(Xt,`${Zt??""} ${t(Ye).available??""??""}`)},[()=>a("Install firmware {version}",{version:t(Ye).available??""}),()=>a("install")]),ce("click",Dt,Qt=>{Qt.stopPropagation(),B(Te())}),p(Ft,Dt)},mn=Ft=>{var Dt=Ko(),Xt=f(Dt,!0);N(()=>u(Xt,t(Ye).status)),p(Ft,Dt)};ve(ct,Ft=>{t(Ye).busy?Ft(Ot):t(Ye).action?Ft(Lt,1):t(Ye).status&&Ft(mn,2)})}N(()=>u(nt,t(Ye).firmware)),p(Ke,tt)},Ze=Ke=>{var Ye=lt(),tt=ke(Ye);Ne(tt,16,()=>(Te().PARAMSETS??[]).filter(dt=>dt!=="LINK"),dt=>dt,(dt,nt)=>{var ct=Yo(),Ot=f(ct,!0);N(()=>{C(ct,"data-testid",`paramset-${Te().ADDRESS}-${nt}`),u(Ot,nt)}),ce("click",ct,Lt=>{Lt.stopPropagation(),F(Te().ADDRESS,nt)}),p(dt,ct)}),p(Ke,Ye)},st=Ke=>{var Ye=lt(),tt=ke(Ye);{var dt=nt=>{var ct=oE();p(nt,ct)};ve(tt,nt=>{Te().AES_ACTIVE&&nt(dt)})}p(Ke,Ye)},_t=Ke=>{var Ye=Cn();N(tt=>u(Ye,tt),[()=>Pe().value?Pe().value(Te())??"":Te()[Pe().key]??""]),p(Ke,Ye)};ve(Ge,Ke=>{Pe().key==="icon"?Ke(Fe):Pe().key==="msgs"&&ye().depth===0?Ke(We,1):Pe().key==="FIRMWARE"&&ye().depth===0?Ke(He,2):Pe().key==="PARAMSETS"?Ke(Ze,3):Pe().key==="AES_ACTIVE"?Ke(st,4):Ke(_t,-1)})}p(Re,Le)};let et=v(()=>a("Devices")),Be=v(()=>a("Filter")),Ce=v(()=>a("Devices")),qe=v(()=>a("{count} devices",{},t(x).length));Tr(_e,{get rows(){return t(x)},get columns(){return t(he)},get subColumns(){return t(Q)},getId:Re=>Re.ADDRESS,subRows:Ae,get caption(){return t(et)},get filterLabel(){return t(Be)},get emptyText(){return t(ee)},onrowcontextmenu:Z,get toolbarLabel(){return t(Ce)},get countText(){return t(qe)},testId:"devices-table",get selected(){return t(i)},set selected(Re){m(i,Re,!0)},get expanded(){return t(o)},set expanded(Re){m(o,Re,!0)},toolbar:se,cell:we,$$slots:{toolbar:!0,cell:!0}})}var Se=c(L,2);{let se=v(()=>a("Devices"));kd(Se,{get items(){return t(ge)},get x(){return t(d)},get y(){return t(h)},get label(){return t(se)},testId:"devices-menu",onselect:we=>{G(we)},get open(){return t(l)},set open(we){m(l,we,!0)}})}var De=c(Se,2);Pb(De,{get address(){return t(T)},get open(){return t(b)},set open(se){m(b,se,!0)}});var Oe=c(De,2);Db(Oe,{get address(){return t(T)},get open(){return t(y)},set open(se){m(y,se,!0)}});var Ue=c(Oe,2);nE(Ue,{get address(){return t(T)},get open(){return t(S)},set open(se){m(S,se,!0)}});var Ve=c(Ue,2);kb(Ve,{get open(){return t(_)},set open(se){m(_,se,!0)}});var Me=c(Ve,2);Nd(Me,{get presetSenders(){return t(w)},get presetReceivers(){return t(D)},get open(){return t(I)},set open(se){m(I,se,!0)}});var je=c(Me,2);og(je,{get address(){return t(T)},get open(){return t(P)},set open(se){m(P,se,!0)}});var me=c(je,2);$b(me,{get address(){return t(T)},get open(){return t(E)},set open(se){m(E,se,!0)}});var Ie=c(me,2);ib(Ie,{get interfaceName(){return t(oe)},get address(){return t(re)},get paramset(){return t(te)},get open(){return t(U)},set open(se){m(U,se,!0)}}),p(r,R),Xe()}rt(["click"]);var cE=k('<!> <!> <input class="hmm-input hmm-events-filter svelte-dzof1w" type="search" placeholder="ADDRESS" data-testid="events-filter-address"/> <input class="hmm-input hmm-events-filter svelte-dzof1w" type="search" placeholder="PARAM" data-testid="events-filter-datapoint"/>',1),uE=k('<span data-testid="events-paused"> </span>'),vE=k('<div class="hmm-page svelte-dzof1w"><div class="hmm-page-grid svelte-dzof1w"><!></div></div>');function fE(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(xe([])),i=M(""),o=M(""),l=M(!1),d=M(xe([]));const h=v(()=>n.app.selectedInterface),g=v(()=>({interfaceName:t(h),...t(i).trim()===""?{}:{address:t(i).trim()},...t(o).trim()===""?{}:{datapoint:t(o).trim()}})),b=v(()=>n.events.filtered(t(g))),y=v(()=>t(l)?t(d):t(b)),S=v(()=>[{key:"timestamp",label:a("Timestamp"),width:110,value:w=>gi(w.timestamp)},{key:"method",label:a("Method"),width:110},{key:"name",label:a("Name"),width:200,value:w=>w.address===void 0?"":n.nameOf(w.address)},{key:"address",label:"ADDRESS",width:150,mono:!0},{key:"datapoint",label:"PARAM",width:180},{key:"value",label:"VALUE",width:140,value:w=>pi(w.value??w.payload)},{key:"count",label:a("Events per device"),width:120,align:"right",filterable:!1,value:w=>w.address===void 0?"":n.events.countFor(w.address)}]);function E(){m(d,t(l)?[]:[...t(b)],!0),m(l,!t(l))}var _=vE(),T=A(_),I=A(T);{const w=ue=>{var x=cE(),X=ke(x);{let z=v(()=>a("Pause"));mt(X,{get title(){return t(z)},icon:"⏸",get pressed(){return t(l)},testId:"events-pause",onclick:()=>E()})}var $=c(X,2);{let z=v(()=>a("Clear"));mt($,{get title(){return t(z)},icon:"⌫",testId:"events-clear",onclick:()=>{n.events.clear()}})}var ee=c($,2),W=c(ee,2);N((z,ne)=>{C(ee,"aria-label",z),C(W,"aria-label",ne)},[()=>`${a("Filter")} ADDRESS`,()=>`${a("Filter")} PARAM`]),Tt(ee,()=>t(i),z=>m(i,z)),Tt(W,()=>t(o),z=>m(o,z)),p(ue,x)},D=ue=>{var x=lt(),X=ke(x);{var $=ee=>{var W=uE(),z=f(W,!0);N(ne=>u(z,ne),[()=>a("Pause")]),p(ee,W)};ve(X,ee=>{t(l)&&ee($)})}p(ue,x)};let P=v(()=>a("Events")),U=v(()=>a("Filter")),re=v(()=>a("No data")),te=v(()=>a("Events")),oe=v(()=>a("{count} events",{},t(y).length));Tr(I,{get rows(){return t(y)},get columns(){return t(S)},getId:ue=>String(ue.seq),get caption(){return t(P)},get filterLabel(){return t(U)},get emptyText(){return t(re)},get toolbarLabel(){return t(te)},get countText(){return t(oe)},testId:"events-table",get selected(){return t(s)},set selected(ue){m(s,ue,!0)},toolbar:w,status:D,$$slots:{toolbar:!0,status:!0}})}p(r,_),Xe()}const hE=[ka,"UI_TEMPLATE"];function jo(r,e={}){const n=e.expert===!0,a=n?{}:e.profile?.params??{},s=n?[]:e.metadata?.parameterOrder??[],i=n?{}:e.metadata?.optionPresets??{},o=e.presets??{},l=Md(r).filter(h=>!hE.includes(h.name)),d=new Map(s.map((h,g)=>[h,g]));return l.sort((h,g)=>(d.get(h.name)??Number.MAX_SAFE_INTEGER)-(d.get(g.name)??Number.MAX_SAFE_INTEGER)),l.map(h=>{const g=a[h.name],b=o[i[h.name]??""];return{...h,...b===void 0?{}:{preset:b},fixedByProfile:g?.kind==="fixed",...g?.kind==="list"?{allowed:g.values}:{},...g?.kind==="range"?{range:{min:g.min,max:g.max}}:{}}})}function qo(r,e){const n=r.name;return n[e]??n.en??n.de??r.key}function mE(r,e){const n=r.description;return n[e]??n.en??n.de??""}var pE=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="link-preview"> </button>',1),gE=k("<p> </p>"),_E=k('<p data-testid="link-paramset-failed"> </p>'),bE=k('<div class="hmm-link-targets svelte-1xlqelt"><!></div>'),EE=k('<div class="hmm-link-list svelte-1xlqelt" data-testid="link-sender-params"></div>'),$o=k("<option> </option>"),SE=k('<p class="hmm-link-profile-text svelte-1xlqelt" data-testid="link-profile-description"> </p>'),yE=k('<li><span class="hmm-mono"> </span> </li>'),AE=k('<ul class="hmm-link-results svelte-1xlqelt" data-testid="link-results"></ul>'),TE=k('<div class="hmm-link-info svelte-1xlqelt"><label class="svelte-1xlqelt"><span> </span> <input class="hmm-input" data-testid="link-name"/></label> <label class="svelte-1xlqelt"><span>DESCRIPTION</span> <input class="hmm-input" data-testid="link-description"/></label> <button type="button" class="hmm-button" data-testid="link-info-save"> </button></div> <!> <section class="hmm-link-section svelte-1xlqelt"><h4 class="svelte-1xlqelt"><button type="button" class="hmm-link-toggle svelte-1xlqelt" data-testid="link-sender-toggle"> </button> </h4> <!></section> <section class="hmm-link-section svelte-1xlqelt"><h4 class="svelte-1xlqelt"> </h4> <div class="hmm-link-profile svelte-1xlqelt"><div class="hmm-link-row svelte-1xlqelt"><label class="svelte-1xlqelt"><span> </span> <select class="hmm-select" data-testid="link-profile"></select></label> <label class="hmm-link-expert svelte-1xlqelt"><input type="checkbox" data-testid="link-expert"/> <span> </span></label></div> <!> <div class="hmm-link-row svelte-1xlqelt"><label class="svelte-1xlqelt"><span> </span> <select class="hmm-select" data-testid="link-template"><option> </option><!></select></label> <label class="svelte-1xlqelt"><span> </span> <input class="hmm-input" data-testid="link-template-name"/></label> <button type="button" class="hmm-button" data-testid="link-template-save"> </button> <button type="button" class="hmm-button" data-testid="link-template-delete"> </button></div></div> <div class="hmm-link-list svelte-1xlqelt" data-testid="link-receiver-params"></div></section> <!>',1),wE=k("<!> <!>",1);function kE(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"sender",3,""),s=K(e,"receiver",3,"");const i=Et(),o=i.i18n.t;let l=M(void 0),d=M(xe({})),h=M(void 0),g=M(xe({})),b=M(xe({})),y=M(xe({})),S=M(xe([])),E=M(void 0),_=M(xe(jn)),T=M(!1),I=M(!1),w=M(""),D=M(""),P=M(xe([])),U=M(!1),re=M(void 0),te=M(xe([])),oe=M(xe([])),ue=M(!1),x=0,X=M(""),$=M("");const ee=v(()=>i.app.selectedInterface),W=v(()=>i.devices.index(t(ee))),z=v(()=>t(W)?.get(a())?.TYPE??""),ne=v(()=>t(W)?.get(s())?.TYPE??""),ae=v(()=>`${i.nameOf(a())} → ${i.nameOf(s())} (${a()} ${s()})`),J=v(()=>t(S).find(G=>G.id===t(_))),q=v(()=>{const G=t(W),R=G?.get(s()),L=G?.get(a());if(!G||!R||!L)return"";const H=G.get(R.PARENT??""),_e=G.get(L.PARENT??"");return!H||!_e?"":[Ua(t(ee),R,"LINK",H),Ua(t(ee),L,"LINK",_e)].join("|")}),V=v(()=>i.links.templates.filter(G=>G.identity===t(q))),Y=v(()=>t(l)?jo(t(l),{metadata:t(E),presets:i.meta.presets,profile:t(J),expert:t(T)}):[]),he=v(()=>t(h)?jo(t(h),{expert:!0}):[]),Q=v(()=>i.links.of(t(ee)).filter(G=>!(G.SENDER===a()&&G.RECEIVER===s())&&(t(W)?.get(G.SENDER)?.TYPE??"")===t(z)&&(t(W)?.get(G.RECEIVER)?.TYPE??"")===t(ne)).map(G=>({value:`${G.SENDER};${G.RECEIVER}`,label:`${i.nameOf(G.SENDER)} → ${i.nameOf(G.RECEIVER)}`})));ot(()=>{if(!n()||t(ee)===""||a()===""||s()==="")return;const G=x+=1,R={interfaceName:t(ee),sender:a(),receiver:s()};m(ue,!0),(async()=>{const[L,H,_e,Se,De]=await Promise.all([i.paramsets.describe(R.interfaceName,R.receiver,"LINK"),i.paramsets.read(R.interfaceName,R.receiver,R.sender),i.paramsets.describe(R.interfaceName,R.sender,"LINK"),i.paramsets.read(R.interfaceName,R.sender,R.receiver),i.links.info(R.interfaceName,R.sender,R.receiver)]);G===x&&(m(l,L,!0),m(d,H??{},!0),m(h,_e,!0),m(g,Se??{},!0),m(w,De?.NAME??"",!0),m(D,De?.DESCRIPTION??"",!0),m(b,{},!0),m(y,{},!0),m(P,[],!0),m(te,[],!0),m(oe,[],!0),m(ue,!1))})()}),ot(()=>{!n()||t(ne)===""||t(z)===""||Promise.all([i.meta.profilesFor(t(ne),t(z)),i.meta.linkMetadataFor(t(ne),t(z)),i.meta.loadPresets()]).then(([G,R])=>{m(S,G,!0),m(E,R,!0)})});let Ee="";ot(()=>{const G=`${a()}|${s()}|${String(t(S).length)}`;if(t(S).length===0||t(l)===void 0||Ee===G)return;Ee=G;const R=i.meta.engine.detectProfile(t(d),t(S));m(_,R?.id??jn,!0),m(T,t(_)===jn)}),ot(()=>{const G=t(q);n()&&G!==""&&i.links.loadTemplates(G)});async function Ae(){const G=t(X).trim();if(G===""||t(q)===""||!t(l))return;const R=ur(t(d),t(b),t(l),{interfaceName:t(ee),targets:[s()],writeAll:!0}).values,L=t(h)?ur(t(g),t(y),t(h),{interfaceName:t(ee),targets:[a()],writeAll:!0}).values:{},H={name:G,identity:t(q),...t(J)===void 0?{}:{profileId:t(J).id,profileName:qo(t(J),i.i18n.language)},receiver:R,...Object.keys(L).length>0?{sender:L}:{},createdAt:Date.now()};await i.links.saveTemplate(H)&&(m(X,""),m($,G,!0),i.notices.push("info",`${o("Save as template")}: ${G}`))}function j(G){const R=t(V).find(L=>L.name===G);R&&(R.profileId!==void 0&&t(S).some(L=>L.id===R.profileId)&&(m(_,R.profileId,!0),m(T,t(_)===jn)),m(b,{...t(b),...R.receiver},!0),R.sender&&m(y,{...t(y),...R.sender},!0))}function pe(G){m(_,G,!0),m(T,G===jn);const R=t(S).find(H=>H.id===G);if(!R||!t(l))return;const L=i.meta.engine.applyProfile(R,B(),t(l));m(b,{...t(b),...L.values},!0);for(const H of L.problems)i.notices.push("warn",`${H.param}: ${H.message}`)}function B(){const G={...t(d)};for(const[R,L]of Object.entries(t(b)))(typeof L=="boolean"||typeof L=="number"||typeof L=="string")&&(G[R]=L);return G}function ie(G,R,L){return Object.prototype.hasOwnProperty.call(L,G.name)?L[G.name]:R[G.name]??G.description.DEFAULT}async function be(){await i.links.setInfo(t(ee),a(),s(),t(w),t(D))}function fe(){const G=t(P).map(R=>{const[L,H]=R.split(";");return{sender:L??"",receiver:H??""}});return[{sender:a(),receiver:s()},...G]}function le(){t(l)&&(m(te,[],!0),m(re,ur(t(d),t(b),t(l),{interfaceName:t(ee),targets:fe().map(G=>`${G.receiver}←${G.sender}`)}),!0),m(U,!0))}function O(){const G=t(re);if(!G)return;const R=t(h)?ur(t(g),t(y),t(h),{interfaceName:t(ee),targets:[a()]}).values:{},L={receiverToSender:G.values,...Object.keys(R).length>0?{senderToReceiver:R}:{}};if(Object.keys(G.values).length===0&&Object.keys(R).length===0)return;const H=fe();i.changeSet.stage({kind:"linkParamset",interfaceName:t(ee),title:`LINK — ${i.nameOf(a())} → ${i.nameOf(s())}`,links:H,values:L,calls:H.map(_e=>`putParamset(${_e.receiver}, ${_e.sender}, ${JSON.stringify(L.receiverToSender)})`),lines:G.entries.map(_e=>({label:_e.param,from:_e.from,to:_e.to}))}),m(U,!1),n(!1)}async function F(){const G=t(re);if(!G)return;const R=t(h)?ur(t(g),t(y),t(h),{interfaceName:t(ee),targets:[a()]}).values:{},L=await i.paramsets.putLink(t(ee),fe(),{receiverToSender:G.values,...Object.keys(R).length>0?{senderToReceiver:R}:{}});m(te,L,!0);const H=await i.paramsets.read(t(ee),s(),a());H&&t(l)&&(m(oe,Od(G.values,H,t(l)),!0),m(d,H,!0),m(b,{},!0),m(y,{},!0)),L.length>0&&L.every(_e=>_e.ok)&&!t(oe).some(_e=>_e.differs)&&m(U,!1)}var Z=wE(),ge=ke(Z);Vt(ge,{get title(){return t(ae)},width:"960px",height:"min(640px, calc(100vh - 32px))",minWidth:560,minHeight:320,testId:"link-paramset-dialog",get open(){return n()},set open(R){n(R)},buttons:R=>{var L=pE(),H=ke(L),_e=f(H,!0),Se=c(H,2),De=f(Se,!0);N((Oe,Ue)=>{u(_e,Oe),Se.disabled=!t(l),u(De,Ue)},[()=>o("Close"),()=>o("Preview")]),ce("click",H,()=>n(!1)),ce("click",Se,le),p(R,L)},children:(R,L)=>{var H=lt(),_e=ke(H);{var Se=Ue=>{var Ve=gE(),Me=f(Ve,!0);N(je=>u(Me,je),[()=>o("Loading Homematic Manager...")]),p(Ue,Ve)},De=Ue=>{var Ve=_E(),Me=f(Ve,!0);N(je=>u(Me,je),[()=>o("No data")]),p(Ue,Ve)},Oe=Ue=>{var Ve=TE(),Me=ke(Ve),je=A(Me),me=A(je),Ie=f(me,!0),se=c(me,2),we=c(je,2),et=c(A(we),2),Be=c(we,2),Ce=f(Be,!0),qe=c(Me,2);{var Re=Qe=>{var ut=bE(),pt=A(ut);{let bt=v(()=>o("Please choose one or more links")),yt=v(()=>o("Please choose one or more links")),Bt=v(()=>o("Filter")),Mt=v(()=>o("Check all")),pn=v(()=>o("Uncheck all"));Qr(pt,{get options(){return t(Q)},get label(){return t(bt)},get placeholder(){return t(yt)},get filterLabel(){return t(Bt)},get checkAllLabel(){return t(Mt)},get uncheckAllLabel(){return t(pn)},summary:jt=>o("{count} links",{},jt.length),testId:"link-targets",get selected(){return t(P)},set selected(jt){m(P,jt,!0)}})}p(Qe,ut)};ve(qe,Qe=>{t(Q).length>0&&Qe(Re)})}var Te=c(qe,2),Pe=A(Te),ye=A(Pe),Le=f(ye,!0),Ge=c(ye),Fe=c(Pe,2);{var We=Qe=>{var ut=EE();Ne(ut,21,()=>t(he),pt=>pt.name,(pt,bt)=>{{let yt=v(()=>ie(t(bt),t(g),t(y))),Bt=v(()=>i.meta.parameterLabel(t(bt).name,t(z))),Mt=v(()=>i.meta.parameterHelp(t(bt).name,t(z))),pn=v(()=>Object.prototype.hasOwnProperty.call(t(y),t(bt).name));Qs(pt,{get field(){return t(bt)},get value(){return t(yt)},get label(){return t(Bt)},get help(){return t(Mt)},get changed(){return t(pn)},valueLabel:jt=>i.meta.valueLabel(t(bt).name,jt,t(z)),onchange:jt=>m(y,{...t(y),[t(bt).name]:jt},!0)})}}),p(Qe,ut)};ve(Fe,Qe=>{t(I)&&Qe(We)})}var He=c(Te,2),Ze=A(He),st=f(Ze),_t=c(Ze,2),Ke=A(_t),Ye=A(Ke),tt=A(Ye),dt=f(tt,!0),nt=c(tt,2);Ne(nt,21,()=>t(S),Qe=>Qe.id,(Qe,ut)=>{var pt=$o(),bt=f(pt,!0),yt={};N((Bt,Mt)=>{u(bt,Bt),yt!==(yt=Mt)&&(pt.value=(pt.__value=yt)??"")},[()=>qo(t(ut),i.i18n.language),()=>String(t(ut).id)]),p(Qe,pt)});var ct;St(nt);var Ot=c(Ye,2),Lt=A(Ot),mn=c(Lt,2),Ft=f(mn,!0),Dt=c(Ke,2);{var Xt=Qe=>{var ut=SE(),pt=f(ut,!0);N(bt=>u(pt,bt),[()=>mE(t(J),i.i18n.language)]),p(Qe,ut)};ve(Dt,Qe=>{t(J)&&!t(T)&&Qe(Xt)})}var Qt=c(Dt,2),Zt=A(Qt),wn=A(Zt),Mn=f(wn,!0),kn=c(wn,2),rr=A(kn),qa=f(rr,!0);rr.value=rr.__value="";var ia=c(rr);Ne(ia,17,()=>t(V),Qe=>Qe.name,(Qe,ut)=>{var pt=$o(),bt=f(pt),yt={};N(()=>{u(bt,`${t(ut).name??""}${t(ut).profileName===void 0?"":` — ${t(ut).profileName}`}`),yt!==(yt=t(ut).name)&&(pt.value=(pt.__value=yt)??"")}),p(Qe,pt)});var ar;St(kn);var oa=c(Zt,2),Dr=A(oa),$a=f(Dr,!0),Xa=c(Dr,2),sr=c(oa,2),la=f(sr,!0),ir=c(sr,2),Qa=f(ir,!0),Za=c(_t,2);Ne(Za,21,()=>t(Y),Qe=>Qe.name,(Qe,ut)=>{{let pt=v(()=>ie(t(ut),t(d),t(b))),bt=v(()=>i.meta.parameterLabel(t(ut).name,t(ne))),yt=v(()=>i.meta.parameterHelp(t(ut).name,t(ne))),Bt=v(()=>Object.prototype.hasOwnProperty.call(t(b),t(ut).name));Qs(Qe,{get field(){return t(ut)},get value(){return t(pt)},get label(){return t(bt)},get help(){return t(yt)},get changed(){return t(Bt)},get disabled(){return t(ut).fixedByProfile},valueLabel:Mt=>i.meta.valueLabel(t(ut).name,Mt,t(ne)),onchange:Mt=>m(b,{...t(b),[t(ut).name]:Mt},!0)})}});var da=c(He,2);{var ca=Qe=>{var ut=AE();Ne(ut,21,()=>t(te),pt=>`${pt.address}-${pt.peer??""}`,(pt,bt)=>{var yt=yE();let Bt;var Mt=A(yt),pn=f(Mt,!0),jt=c(Mt);N(()=>{Bt=ht(yt,1,"svelte-1xlqelt",null,Bt,{"hmm-link-failed":!t(bt).ok}),u(pn,t(bt).address),u(jt,` ${t(bt).ok?"✔":`✕ ${t(bt).faultString??""}`}`)}),p(pt,yt)}),p(Qe,ut)};ve(da,Qe=>{t(te).length>0&&Qe(ca)})}N((Qe,ut,pt,bt,yt,Bt,Mt,pn,jt,Ja,ua,es,va,fa,ts)=>{u(Ie,Qe),u(Ce,ut),C(ye,"aria-expanded",t(I)),u(Le,t(I)?"−":"+"),u(Ge,` ${pt??""}: ${bt??""} (${a()??""})`),u(st,`${yt??""}: ${Bt??""} (${s()??""})`),u(dt,Mt),ct!==(ct=pn)&&(nt.value=(nt.__value=ct)??"",Wt(nt,ct)),u(Ft,jt),u(Mn,Ja),kn.disabled=t(V).length===0,u(qa,ua),ar!==(ar=t($))&&(kn.value=(kn.__value=ar)??"",Wt(kn,ar)),u($a,es),sr.disabled=va,u(la,fa),ir.disabled=t($)==="",u(Qa,ts)},[()=>o("Name"),()=>o("Apply"),()=>o("Sender"),()=>i.nameOf(a()),()=>o("Receiver"),()=>i.nameOf(s()),()=>o("Profile"),()=>String(t(_)),()=>o("Expert view"),()=>o("Template"),()=>t(V).length===0?o("No template for this pair of channel types"):o("Apply template"),()=>o("Template name"),()=>t(X).trim()===""||t(q)==="",()=>o("Save as template"),()=>o("Delete template")]),Tt(se,()=>t(w),Qe=>m(w,Qe)),Tt(et,()=>t(D),Qe=>m(D,Qe)),ce("click",Be,()=>{be()}),ce("click",ye,()=>m(I,!t(I))),ce("change",nt,Qe=>pe(Number(Qe.currentTarget.value))),nn(Lt,()=>t(T),Qe=>m(T,Qe)),ce("change",kn,Qe=>{m($,Qe.currentTarget.value,!0),j(t($))}),Tt(Xa,()=>t(X),Qe=>m(X,Qe)),ce("click",sr,()=>{Ae()}),ce("click",ir,()=>{const Qe=t($);m($,""),i.links.removeTemplate(Qe,t(q))}),p(Ue,Ve)};ve(_e,Ue=>{t(ue)&&!t(l)?Ue(Se):t(l)?Ue(Oe,-1):Ue(De,1)})}p(R,H)},$$slots:{buttons:!0,default:!0}});var de=c(ge,2);Fd(de,{get preview(){return t(re)},paramset:"LINK",get results(){return t(te)},get readBack(){return t(oe)},get writing(){return i.paramsets.writing},onstage:O,onconfirm:()=>{F()},get open(){return t(U)},set open(G){m(U,G,!0)}}),p(r,Z),Xe()}rt(["click","change"]);var RE=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="remove-link-stage"> </button> <button type="button" class="hmm-button hmm-danger svelte-1suervc" data-testid="remove-link-confirm"> </button>',1),IE=k('<li><span class="hmm-mono"> </span> → <span class="hmm-mono"> </span> <span class="hmm-remove-names svelte-1suervc"> </span></li>'),DE=k('<p> </p> <ul class="hmm-remove-links svelte-1suervc"></ul>',1);function NE(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"links",19,()=>[]);const s=Et(),i=s.i18n.t;let o=M(!1);function l(){const h=a().map(g=>({...g}));s.changeSet.stage({kind:"linkRemove",interfaceName:s.app.selectedInterface,title:i("{count} links",{},h.length),pairs:h,calls:h.map(g=>`removeLink(${g.sender}, ${g.receiver})`),lines:[]}),n(!1)}async function d(){m(o,!0);const h=await s.links.remove(s.app.selectedInterface,a());m(o,!1),h===a().length&&n(!1)}{const h=b=>{var y=RE(),S=ke(y),E=f(S,!0),_=c(S,2),T=f(_,!0),I=c(_,2),w=f(I,!0);N((D,P,U)=>{u(E,D),_.disabled=t(o)||a().length===0,u(T,P),I.disabled=t(o)||a().length===0,u(w,U)},[()=>i("Cancel"),()=>i("Add to pending changes"),()=>i("Delete")]),ce("click",S,()=>n(!1)),ce("click",_,l),ce("click",I,()=>{d()}),p(b,y)};let g=v(()=>i("Delete link"));Vt(r,{get title(){return t(g)},width:"620px",testId:"remove-link-dialog",get open(){return n()},set open(b){n(b)},buttons:h,children:(b,y)=>{var S=DE(),E=ke(S),_=f(E,!0),T=c(E,2);Ne(T,21,a,I=>`${I.sender}->${I.receiver}`,(I,w)=>{var D=IE(),P=A(D),U=f(P,!0),re=c(P,2),te=f(re,!0),oe=c(re,2),ue=f(oe);N((x,X)=>{u(U,t(w).sender),u(te,t(w).receiver),u(ue,`${x??""} → ${X??""}`)},[()=>s.nameOf(t(w).sender),()=>s.nameOf(t(w).receiver)]),p(I,D)}),N(I=>u(_,I),[()=>i("{count} links",{},a().length)]),p(b,S)},$$slots:{buttons:!0,default:!0}})}Xe()}rt(["click"]);var Xo=k("<!> <!>",1),xE=k("<!> <!> <!> <!> <!>",1),CE=k('<button type="button" class="hmm-links-handover svelte-1pum174" data-testid="links-filter-handover"> </button>'),PE=k('<span class="hmm-links-defective svelte-1pum174" data-testid="links-defective"> </span>'),LE=k('<span class="hmm-link-broken svelte-1pum174" role="img">⚠</span>'),ME=k('<div class="hmm-page svelte-1pum174"><div class="hmm-page-grid svelte-1pum174"><!></div></div> <!> <!> <!> <!>',1);function OE(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(xe([])),i=M(!1),o=M(0),l=M(0),d=M(void 0),h=M(""),g=M(!1),b=M(!1),y=M(!1),S=M(""),E=M("");const _=v(()=>n.app.selectedInterface),T=v(()=>n.interfaces.typeOf(t(_)));ot(()=>{const V=n.app.linksFilter;V!==""&&(m(h,V,!0),n.app.linksFilter="")});const I=v(()=>n.links.of(t(_))),w=v(()=>n.links.defective(t(_)).length),D=v(()=>t(T)==="BidCos-RF"),P=v(()=>t(s).map(V=>{const[Y,he]=V.split("->");return Y===void 0||he===void 0?void 0:{sender:Y,receiver:he}}).filter(V=>V!==void 0)),U=v(()=>t(P).length===1?t(P)[0]:void 0),re=v(()=>[{key:"senderIcon",label:"",width:Zr,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"senderName",label:`${a("Sender")} ${a("Name")}`,width:170,value:V=>n.nameOf(V.SENDER)},{key:"SENDER",label:"SENDER",width:140,mono:!0},{key:"senderType",label:"TYPE",width:130,value:V=>n.devices.index(t(_))?.get(V.SENDER)?.TYPE??""},{key:"receiverIcon",label:"",width:Zr,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"receiverName",label:`${a("Receiver")} ${a("Name")}`,width:170,value:V=>n.nameOf(V.RECEIVER)},{key:"RECEIVER",label:"RECEIVER",width:140,mono:!0},{key:"receiverType",label:"TYPE",width:130,value:V=>n.devices.index(t(_))?.get(V.RECEIVER)?.TYPE??""},{key:"FLAGS",label:"FLAGS",width:48,fixed:!0,align:"center",sortable:!1,value:V=>Hs(V.FLAGS).broken?"broken":""},{key:"NAME",label:"NAME",width:180},{key:"DESCRIPTION",label:"DESCRIPTION"}]);function te(V){const Y=n.devices.index(t(_));return Y?.parentOf(V)?.TYPE??Y?.get(V)?.TYPE??""}function oe(V){m(S,V.sender,!0),m(E,V.receiver,!0),m(y,!0)}function ue(V,Y){m(d,{sender:V.SENDER,receiver:V.RECEIVER},!0),m(o,Y.clientX,!0),m(l,Y.clientY,!0),m(i,!0)}const x=v(()=>[{id:"edit",label:a("Edit link")},{id:"short",label:a("Activate short"),disabled:!t(D)},{id:"long",label:a("Activate long"),disabled:!t(D)},{id:"sep",separator:!0},{id:"delete",label:a("Delete link"),danger:!0}]);async function X(V){const Y=t(d);if(Y)switch(V){case"edit":oe(Y);break;case"short":await n.links.activate(t(_),Y.receiver,Y.sender,!1);break;case"long":await n.links.activate(t(_),Y.receiver,Y.sender,!0);break;case"delete":m(s,[`${Y.sender}->${Y.receiver}`],!0),m(b,!0);break}}var $=ME(),ee=ke($),W=A(ee),z=A(W);{const V=B=>{var ie=xE(),be=ke(ie);{let ge=v(()=>a("Create link"));mt(be,{get title(){return t(ge)},icon:"+",testId:"links-add",onclick:()=>m(g,!0)})}var fe=c(be,2);{let ge=v(()=>a("Edit link")),de=v(()=>t(U)===void 0),G=v(()=>a("Select one link"));mt(fe,{get title(){return t(ge)},icon:"⚙",get disabled(){return t(de)},get reason(){return t(G)},testId:"links-edit",onclick:()=>t(U)&&oe(t(U))})}var le=c(fe,2);{var O=ge=>{var de=Xo(),G=ke(de);{let L=v(()=>a("Activate short")),H=v(()=>t(U)===void 0),_e=v(()=>a("Select one link"));mt(G,{get title(){return t(L)},icon:"▸",get disabled(){return t(H)},get reason(){return t(_e)},testId:"links-play-short",onclick:()=>t(U)&&void n.links.activate(t(_),t(U).receiver,t(U).sender,!1)})}var R=c(G,2);{let L=v(()=>a("Activate long")),H=v(()=>t(U)===void 0),_e=v(()=>a("Select one link"));mt(R,{get title(){return t(L)},icon:"▸▸",get disabled(){return t(H)},get reason(){return t(_e)},testId:"links-play-long",onclick:()=>t(U)&&void n.links.activate(t(_),t(U).receiver,t(U).sender,!0)})}p(ge,de)};ve(le,ge=>{t(D)&&ge(O)})}var F=c(le,2);{let ge=v(()=>a("Delete link")),de=v(()=>t(P).length===0),G=v(()=>a("Please choose one or more links"));mt(F,{get title(){return t(ge)},icon:"🗑",get disabled(){return t(de)},get reason(){return t(G)},testId:"links-delete",onclick:()=>m(b,!0)})}var Z=c(F,2);{let ge=v(()=>a("Refresh"));mt(Z,{get title(){return t(ge)},icon:"⟳",testId:"links-refresh",onclick:()=>{n.links.load(t(_))}})}p(B,ie)},Y=B=>{var ie=Xo(),be=ke(ie);{var fe=F=>{var Z=CE(),ge=f(Z);N(de=>{C(Z,"title",de),u(ge,`${t(h)??""} ✕`)},[()=>a("Filter")]),ce("click",Z,()=>m(h,"")),p(F,Z)};ve(be,F=>{t(h)!==""&&F(fe)})}var le=c(be,2);{var O=F=>{var Z=PE(),ge=f(Z,!0);N(de=>u(ge,de),[()=>a("{count} defective links",{},t(w))]),p(F,Z)};ve(le,F=>{t(w)>0&&F(O)})}p(B,ie)},he=(B,ie=fn,be=fn)=>{var fe=lt(),le=ke(fe);{var O=de=>{{let G=v(()=>te(ie().SENDER)),R=v(()=>n.host.deviceImageUrl(te(ie().SENDER)));Jr(de,{get deviceType(){return t(G)},get src(){return t(R)}})}},F=de=>{{let G=v(()=>te(ie().RECEIVER)),R=v(()=>n.host.deviceImageUrl(te(ie().RECEIVER)));Jr(de,{get deviceType(){return t(G)},get src(){return t(R)}})}},Z=de=>{const G=v(()=>Hs(ie().FLAGS));var R=lt(),L=ke(R);{var H=_e=>{var Se=LE();N((De,Oe)=>{C(Se,"aria-label",De),C(Se,"title",Oe)},[()=>a("Defective link"),()=>`${t(G).senderBroken?"SENDER_BROKEN ":""}${t(G).receiverBroken?"RECEIVER_BROKEN":""}`.trim()]),p(_e,Se)};ve(L,_e=>{t(G).broken&&_e(H)})}p(de,R)},ge=de=>{var G=Cn();N(R=>u(G,R),[()=>be().value?be().value(ie())??"":ie()[be().key]??""]),p(de,G)};ve(le,de=>{be().key==="senderIcon"?de(O):be().key==="receiverIcon"?de(F,1):be().key==="FLAGS"?de(Z,2):de(ge,-1)})}p(B,fe)};let Q=v(()=>a("Links")),Ee=v(()=>a("Filter")),Ae=v(()=>a("No data")),j=v(()=>a("Links")),pe=v(()=>a("{count} links",{},t(I).length));Tr(z,{get rows(){return t(I)},get columns(){return t(re)},getId:B=>`${B.SENDER}->${B.RECEIVER}`,get caption(){return t(Q)},get filterLabel(){return t(Ee)},get emptyText(){return t(Ae)},onactivate:B=>oe({sender:B.SENDER,receiver:B.RECEIVER}),onrowcontextmenu:ue,get toolbarLabel(){return t(j)},get countText(){return t(pe)},testId:"links-table",get selected(){return t(s)},set selected(B){m(s,B,!0)},get filter(){return t(h)},set filter(B){m(h,B,!0)},toolbar:V,status:Y,cell:he,$$slots:{toolbar:!0,status:!0,cell:!0}})}var ne=c(ee,2);{let V=v(()=>a("Links"));kd(ne,{get items(){return t(x)},get x(){return t(o)},get y(){return t(l)},get label(){return t(V)},testId:"links-menu",onselect:Y=>{X(Y)},get open(){return t(i)},set open(Y){m(i,Y,!0)}})}var ae=c(ne,2);Nd(ae,{onedit:V=>oe(V),get open(){return t(g)},set open(V){m(g,V,!0)}});var J=c(ae,2);NE(J,{get links(){return t(P)},get open(){return t(b)},set open(V){m(b,V,!0)}});var q=c(J,2);kE(q,{get sender(){return t(S)},get receiver(){return t(E)},get open(){return t(y)},set open(V){m(y,V,!0)}}),p(r,$),Xe()}rt(["click"]);var FE=k("<span> </span>");function Ha(r,e){$e(e,!0);let n=K(e,"value",3,void 0),a=K(e,"testId",3,void 0);const s=v(()=>tm(n()));var i=FE();let o;var l=f(i,!0);N(()=>{o=ht(i,1,"hmm-rssi svelte-1wk3r6l",null,o,{"hmm-rssi-good":t(s)==="good","hmm-rssi-medium":t(s)==="medium","hmm-rssi-bad":t(s)==="bad","hmm-rssi-unknown":t(s)==="unknown"}),C(i,"data-rssi",t(s)),C(i,"data-testid",a()),u(l,n()===void 0?"—":`${n()} dBm`)}),p(r,i),Xe()}var GE=k('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="set-interface-confirm"> </button>',1),UE=k("<option> </option>"),VE=k('<tr><td class="hmm-mono svelte-1s1hrfj"> </td><td class="svelte-1s1hrfj"><!></td><td class="svelte-1s1hrfj"><!></td></tr>'),BE=k('<p class="hmm-set-interface-best-note svelte-1s1hrfj" data-testid="set-interface-best"> </p>'),zE=k('<table class="hmm-set-interface-table svelte-1s1hrfj"><thead><tr><th class="svelte-1s1hrfj"> </th><th class="svelte-1s1hrfj">← dBm</th><th class="svelte-1s1hrfj">→ dBm</th></tr></thead><tbody></tbody></table> <!>',1),HE=k('<p class="hmm-set-interface-device svelte-1s1hrfj"> <span class="hmm-mono"> </span></p> <p class="hmm-set-interface-current svelte-1s1hrfj"> <span class="hmm-mono" data-testid="set-interface-current"> </span></p> <label class="hmm-set-interface-row svelte-1s1hrfj"><span> </span> <select class="hmm-select" data-testid="set-interface-select"></select></label> <label class="hmm-set-interface-row svelte-1s1hrfj"><span>ROAMING</span> <input type="checkbox" data-testid="set-interface-roaming"/></label> <!>',1);function WE(r,e){$e(e,!0);let n=K(e,"open",15,!1),a=K(e,"address",3,"");const s=Et(),i=s.i18n.t;let o=M(""),l=M(!1),d=M(!1);const h=v(()=>s.app.selectedInterface),g=v(()=>s.devices.index(t(h))?.get(a())),b=v(()=>s.radio.gateways(t(h))),y=v(()=>s.radio.bestGatewayFor(t(h),a()));ot(()=>{n()&&(m(o,t(g)?.INTERFACE??t(b)[0]?.ADDRESS??"",!0),m(l,t(g)?.ROAMING===!0||t(g)?.ROAMING===1,!0))});async function S(){m(d,!0);const E=await s.radio.setBidcosInterface(t(h),a(),t(o),t(l));E&&await s.devices.load(t(h),{refresh:!0}),m(d,!1),E&&n(!1)}Vt(r,{title:"setBidcosInterface",width:"560px",testId:"set-interface-dialog",get open(){return n()},set open(_){n(_)},buttons:_=>{var T=GE(),I=ke(T),w=f(I,!0),D=c(I,2),P=f(D,!0);N((U,re)=>{u(w,U),D.disabled=t(d)||t(o)==="",u(P,re)},[()=>i("Cancel"),()=>i("Apply")]),ce("click",I,()=>n(!1)),ce("click",D,()=>{S()}),p(_,T)},children:(_,T)=>{var I=HE(),w=ke(I),D=A(w),P=c(D),U=f(P,!0),re=c(w,2),te=A(re),oe=c(te),ue=f(oe,!0),x=c(re,2),X=A(x),$=f(X,!0),ee=c(X,2);Ne(ee,21,()=>t(b),J=>J.ADDRESS,(J,q)=>{var V=UE(),Y=f(V),he={};N(()=>{u(Y,`${t(q).ADDRESS??""}
12
- ${t(q).DESCRIPTION??t(q).TYPE??""}`),he!==(he=t(q).ADDRESS)&&(V.value=(V.__value=he)??"")}),p(J,V)}),St(ee);var W=c(x,2),z=c(A(W),2),ne=c(W,2);{var ae=J=>{var q=zE(),V=ke(q),Y=A(V),he=A(Y),Q=A(he),Ee=f(Q,!0),Ae=c(Y);Ne(Ae,21,()=>t(b),B=>B.ADDRESS,(B,ie)=>{const be=v(()=>s.radio.pair(t(h),a(),t(ie).ADDRESS));var fe=VE();let le;var O=A(fe),F=f(O,!0),Z=c(O),ge=A(Z);{let R=v(()=>t(be)?.rx);Ha(ge,{get value(){return t(R)}})}var de=c(Z),G=A(de);{let R=v(()=>t(be)?.tx),L=v(()=>`set-interface-tx-${t(ie).ADDRESS}`);Ha(G,{get value(){return t(R)},get testId(){return t(L)}})}N(()=>{le=ht(fe,1,"svelte-1s1hrfj",null,le,{"hmm-set-interface-best":t(y)?.address===t(ie).ADDRESS}),u(F,t(ie).ADDRESS)}),p(B,fe)});var j=c(V,2);{var pe=B=>{var ie=BE(),be=f(ie,!0);N(fe=>u(be,fe),[()=>i("Heard best by {address}",{address:t(y).address})]),p(B,ie)};ve(j,B=>{t(y)&&B(pe)})}N(B=>u(Ee,B),[()=>i("Interface")]),p(J,q)};ve(ne,J=>{t(b).length>0&&J(ae)})}N((J,q,V)=>{u(D,`${J??""} `),u(U,a()),u(te,`${q??""}: `),u(ue,t(g)?.INTERFACE??"—"),u($,V)},[()=>s.nameOf(a()),()=>i("Interface"),()=>i("Interface")]),dn(ee,()=>t(o),J=>m(o,J)),nn(z,()=>t(l),J=>m(l,J)),p(_,I)},$$slots:{buttons:!0,default:!0}}),Xe()}rt(["click"]);var KE=k("<!> <!> <!>",1),YE=k('<div class="hmm-page svelte-7f5yr6"><div class="hmm-radio-gateways svelte-7f5yr6"><!></div> <div class="hmm-page-grid svelte-7f5yr6"><!></div></div> <!>',1);function jE(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(xe([])),i=M(xe([])),o=M(xe([])),l=M(!1),d=M("");const h=v(()=>n.app.selectedInterface),g=v(()=>n.radio.gateways(t(h))),b=v(()=>n.devices.devices(t(h))),y=v(()=>t(i).length===1?t(i)[0]??"":""),S=[{key:"ADDRESS",label:"ADDRESS",width:180,mono:!0},{key:"DESCRIPTION",label:"DESCRIPTION",width:220},{key:"TYPE",label:"TYPE",width:130},{key:"FIRMWARE_VERSION",label:"FIRMWARE_VERSION",width:150},{key:"CONNECTED",label:"CONNECTED",width:110,align:"center",value:x=>x.CONNECTED===!0?"✔":"✕"},{key:"DEFAULT",label:"DEFAULT",width:90,align:"center",value:x=>x.DEFAULT===!0?"✔":""},{key:"DUTY_CYCLE",label:"DUTY_CYCLE",width:100,align:"right",value:x=>x.DUTY_CYCLE===void 0?"":`${x.DUTY_CYCLE} %`},{key:"CARRIER_SENSE_LEVEL",label:"CARRIER_SENSE_LEVEL",align:"right"}],E=v(()=>[{key:"icon",label:"",width:Zr,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"name",label:a("Name"),width:180,value:x=>n.nameOf(x.ADDRESS)},{key:"ADDRESS",label:"ADDRESS",width:140,mono:!0},{key:"TYPE",label:"TYPE",width:150},{key:"INTERFACE",label:"INTERFACE",width:140,mono:!0},{key:"RF_ADDRESS",label:"RF_ADDRESS",width:100,align:"right",value:x=>x.RF_ADDRESS===void 0?"":x.RF_ADDRESS.toString(16).toUpperCase()},{key:"ROAMING",label:"ROAMING",width:90,align:"center",value:x=>x.ROAMING===!0||x.ROAMING===1?"✔":""},{key:"unreach",label:a("Unreach"),width:90,align:"right",filterable:!1,value:x=>{const X=n.unreach.countOf(t(h),x.ADDRESS);return X===0?"":X}},...t(g).flatMap(x=>[{key:`rx:${x.ADDRESS}`,label:`← dBm ${x.ADDRESS}`,width:120,align:"right",filterable:!1,value:X=>n.radio.pair(t(h),X.ADDRESS,x.ADDRESS)?.rx??""},{key:`tx:${x.ADDRESS}`,label:`→ dBm ${x.ADDRESS}`,width:120,align:"right",filterable:!1,value:X=>n.radio.pair(t(h),X.ADDRESS,x.ADDRESS)?.tx??""}])]),_=v(()=>[{key:"name",label:a("Name"),width:180,value:x=>n.nameOf(x.ADDRESS)},{key:"ADDRESS",label:a("Peer"),width:200,mono:!0},{key:"rx",label:"← dBm",width:120,align:"right",filterable:!1,value:()=>""},{key:"tx",label:"→ dBm",width:120,align:"right",filterable:!1,value:()=>""}]);function T(x){const X=n.devices.index(t(h));return n.radio.peersOf(t(h),x.ADDRESS).map($=>X?.get($)??{ADDRESS:$,TYPE:"",PARENT:x.ADDRESS}).map($=>({...$,PARENT:x.ADDRESS}))}function I(x){return n.devices.index(t(h))?.get(x)?.ADDRESS??x}async function w(){await Promise.all([n.radio.load(t(h)),n.interfaces.load(),n.unreach.load()])}ot(()=>{const x=t(h);x!==""&&n.radio.gateways(x).length===0&&!n.radio.loading&&n.radio.load(x)}),ot(()=>{n.unreach.counters.length===0&&n.unreach.load()});var D=YE(),P=ke(D),U=A(P),re=A(U);{let x=v(()=>a("Interfaces")),X=v(()=>a("Filter")),$=v(()=>a("No data"));Tr(re,{get rows(){return t(g)},get columns(){return S},getId:ee=>ee.ADDRESS,height:110,columnFilterRow:!1,get caption(){return t(x)},get filterLabel(){return t(X)},get emptyText(){return t($)},testId:"radio-gateways",get selected(){return t(s)},set selected(ee){m(s,ee,!0)}})}var te=c(U,2),oe=A(te);{const x=ae=>{var J=KE(),q=ke(J);{let he=v(()=>a("Refresh"));mt(q,{get title(){return t(he)},icon:"⟳",testId:"radio-refresh",onclick:()=>{w()}})}var V=c(q,2);{let he=v(()=>t(y)===""),Q=v(()=>a("Select a device"));mt(V,{title:"setBidcosInterface",icon:"⇄",get disabled(){return t(he)},get reason(){return t(Q)},testId:"radio-set-interface",onclick:()=>{m(d,t(y),!0),m(l,!0)}})}var Y=c(V,2);{let he=v(()=>a("Reset the unreach counters")),Q=v(()=>n.unreach.of(t(h)).length===0),Ee=v(()=>a("No data"));mt(Y,{get title(){return t(he)},icon:"⟲",get disabled(){return t(Q)},get reason(){return t(Ee)},testId:"radio-reset-unreach",onclick:()=>{n.unreach.reset(t(h))}})}p(ae,J)},X=(ae,J=fn,q=fn,V=fn)=>{var Y=lt(),he=ke(Y);{var Q=B=>{{let ie=v(()=>n.host.deviceImageUrl(J().TYPE));Jr(B,{get deviceType(){return J().TYPE},get src(){return t(ie)}})}},Ee=B=>{const ie=v(()=>n.radio.pair(t(h),I(V().rootId),J().ADDRESS));{let be=v(()=>q().key==="rx"?t(ie)?.rx:t(ie)?.tx),fe=v(()=>`rssi-${V().rootId}-${J().ADDRESS}-${q().key}`);Ha(B,{get value(){return t(be)},get testId(){return t(fe)}})}},Ae=B=>{const ie=v(()=>q().key.slice(3)),be=v(()=>n.radio.pair(t(h),J().ADDRESS,t(ie)));{let fe=v(()=>q().key.startsWith("rx:")?t(be)?.rx:t(be)?.tx),le=v(()=>`rssi-${J().ADDRESS}-${t(ie)}-${q().key.slice(0,2)}`);Ha(B,{get value(){return t(fe)},get testId(){return t(le)}})}},j=v(()=>q().key.startsWith("rx:")||q().key.startsWith("tx:")),pe=B=>{var ie=Cn();N(be=>u(ie,be),[()=>q().value?q().value(J())??"":J()[q().key]??""]),p(B,ie)};ve(he,B=>{q().key==="icon"?B(Q):V().depth>0&&(q().key==="rx"||q().key==="tx")?B(Ee,1):t(j)?B(Ae,2):B(pe,-1)})}p(ae,Y)};let $=v(()=>a("RSSI")),ee=v(()=>a("Filter")),W=v(()=>a("No data")),z=v(()=>a("RSSI")),ne=v(()=>a("{count} devices",{},t(b).length));Tr(oe,{get rows(){return t(b)},get columns(){return t(E)},get subColumns(){return t(_)},getId:ae=>ae.ADDRESS,subRows:T,get caption(){return t($)},get filterLabel(){return t(ee)},get emptyText(){return t(W)},onactivate:ae=>{m(d,ae.ADDRESS,!0),m(l,!0)},get toolbarLabel(){return t(z)},get countText(){return t(ne)},testId:"radio-table",get selected(){return t(i)},set selected(ae){m(i,ae,!0)},get expanded(){return t(o)},set expanded(ae){m(o,ae,!0)},toolbar:x,cell:X,$$slots:{toolbar:!0,cell:!0}})}var ue=c(P,2);WE(ue,{get address(){return t(d)},get open(){return t(l)},set open(x){m(l,x,!0)}}),p(r,D),Xe()}var qE=k("<!> <!> <!> <!>",1),$E=k('<span data-testid="messages-quiet-hint"> </span>'),XE=k("<span> </span>"),QE=k('<div class="hmm-page svelte-u6ol56"><div class="hmm-page-grid svelte-u6ol56"><!></div></div>');function ZE(r,e){$e(e,!0);const n=Et(),a=n.i18n.t;let s=M(xe([])),i=M(!1);const o=v(()=>n.app.selectedInterface),l=v(()=>n.interfaces.typeOf(t(o)).startsWith("BidCos")),d=v(()=>n.serviceMessages.of(t(o))),h=v(()=>n.serviceMessages.acknowledgeable(t(o))),g=v(()=>t(d).filter(D=>t(s).includes(y(D)))),b=v(()=>t(g).filter(D=>Ba(D.datapoint)));function y(D){return`${D.address}/${D.datapoint}`}function S(D){return n.devices.index(t(o))?.get(Ga(D))?.TYPE??""}const E=v(()=>[{key:"icon",label:"",width:Zr,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"name",label:a("Name"),width:220,value:D=>n.nameOf(D.address)},{key:"address",label:"ADDRESS",width:160,mono:!0},{key:"device",label:`${a("Device")} ADDRESS`,width:140,mono:!0,value:D=>Ga(D.address)},{key:"datapoint",label:a("Message"),width:180},{key:"value",label:a("Value"),width:90,value:D=>pi(D.value)},{key:"explanation",label:"",sortable:!1,value:D=>{const P=Dd(D.datapoint,!t(l));return P===void 0?"":a(P)}},{key:"since",label:a("Since"),width:170,value:D=>nf(D.since)}]);async function _(D){m(i,!0);const P=await n.serviceMessages.acknowledgeMany(D);m(i,!1),n.notices.push("info",a("{count} service messages",{},P))}var T=QE(),I=A(T),w=A(I);{const D=X=>{var $=qE(),ee=ke($);{let ae=v(()=>a("Refresh"));mt(ee,{get title(){return t(ae)},icon:"⟳",testId:"messages-refresh",onclick:()=>{n.serviceMessages.load()}})}var W=c(ee,2);{let ae=v(()=>a("Acknowledge service messages")),J=v(()=>t(i)||t(b).length===0),q=v(()=>a("Only STICKY_UNREACH and SABOTAGE can be acknowledged"));mt(W,{get title(){return t(ae)},icon:"✔",get disabled(){return t(J)},get reason(){return t(q)},testId:"messages-ack",onclick:()=>{_(t(b))}})}var z=c(W,2);{let ae=v(()=>a("Acknowledge all service messages")),J=v(()=>t(i)||t(h).length===0),q=v(()=>a("Only STICKY_UNREACH and SABOTAGE can be acknowledged"));mt(z,{get title(){return t(ae)},icon:"✔✔",get disabled(){return t(J)},get reason(){return t(q)},testId:"messages-ack-all",onclick:()=>{_(t(h))}})}var ne=c(z,2);{let ae=v(()=>a("Quiet mode"));mt(ne,{get title(){return t(ae)},icon:"🔕",get pressed(){return n.serviceMessages.quiet},testId:"messages-quiet",onclick:()=>n.serviceMessages.setQuiet(!n.serviceMessages.quiet)})}p(X,$)},P=X=>{var $=lt(),ee=ke($);{var W=z=>{var ne=$E(),ae=f(ne,!0);N(J=>u(ae,J),[()=>a("Quiet mode")]),p(z,ne)};ve(ee,z=>{n.serviceMessages.quiet&&z(W)})}p(X,$)},U=(X,$=fn,ee=fn)=>{var W=lt(),z=ke(W);{var ne=q=>{{let V=v(()=>S($().address)),Y=v(()=>n.host.deviceImageUrl(S($().address)));Jr(q,{get deviceType(){return t(V)},get src(){return t(Y)}})}},ae=q=>{var V=XE();let Y;var he=f(V,!0);N(Q=>{Y=ht(V,1,"hmm-msg-name svelte-u6ol56",null,Y,{"hmm-msg-ackable":Q}),C(V,"data-testid",`message-${$().address}-${$().datapoint}`),u(he,$().datapoint)},[()=>Ba($().datapoint)]),p(q,V)},J=q=>{var V=Cn();N(Y=>u(V,Y),[()=>ee().value?ee().value($())??"":$()[ee().key]??""]),p(q,V)};ve(z,q=>{ee().key==="icon"?q(ne):ee().key==="datapoint"?q(ae,1):q(J,-1)})}p(X,W)};let re=v(()=>a("Service messages")),te=v(()=>a("Filter")),oe=v(()=>a("No data")),ue=v(()=>a("Service messages")),x=v(()=>a("{count} service messages",{},t(d).length));Tr(w,{get rows(){return t(d)},get columns(){return t(E)},getId:y,get caption(){return t(re)},get filterLabel(){return t(te)},get emptyText(){return t(oe)},get toolbarLabel(){return t(ue)},get countText(){return t(x)},testId:"messages-table",get selected(){return t(s)},set selected(X){m(s,X,!0)},toolbar:D,status:P,cell:U,$$slots:{toolbar:!0,status:!0,cell:!0}})}p(r,T),Xe()}var JE=k('<span class="hmm-header-user svelte-1n46o8q" data-testid="session-user"> </span> <a class="hmm-header-logout svelte-1n46o8q" href="logout" data-testid="session-logout"> </a>',1),e1=k('<button type="button" class="hmm-button hmm-header-changes" data-testid="change-set-open"> </button>'),t1=k('<p class="hmm-empty svelte-1n46o8q"> </p>'),n1=k('<div class="hmm-app svelte-1n46o8q" data-testid="app"><header class="hmm-header svelte-1n46o8q"><!> <!> <div class="hmm-header-actions svelte-1n46o8q"><!> <!> <!> <!> <!> <!></div></header> <!> <main class="hmm-main svelte-1n46o8q"><div class="hmm-panel svelte-1n46o8q" role="tabpanel"><!></div></main> <!> <!> <!> <!> <!> <!></div>');function r1(r,e){$e(e,!0);const n="https://github.com/hobbyquaker/homematic-manager";Lf(Hn(()=>e.stores));let a=M(!1);const s=v(()=>e.stores.i18n.t),i=v(()=>e.stores.app),o={devices:"Devices",links:"Links",rssi:"RSSI",console:"RPC Console",messages:"Service messages",events:"Events"},l=v(()=>e.stores.tabs.map(Q=>({id:Q,label:t(s)(o[Q]),...Q==="messages"?{badge:e.stores.serviceMessages.countOf(t(i).selectedInterface)}:{}}))),d=v(()=>Object.fromEntries(e.stores.interfaces.states.map(Q=>{const Ee=e.stores.devices.index(Q.name),Ae=e.stores.radio.gateways(Q.name).map(j=>j.DUTY_CYCLE).filter(j=>typeof j=="number");return[Q.name,{...Ee===void 0?{}:{devices:Ee.devices().length},...Ae.length===0?{}:{dutyCycle:Math.max(...Ae)}}]})));ot(()=>{document.documentElement.lang=e.stores.i18n.language}),ot(()=>{const Q=document.documentElement;t(i).theme==="system"?Q.removeAttribute("data-theme"):Q.setAttribute("data-theme",t(i).theme),e.stores.host.setTheme(t(i).theme)}),ot(()=>e.stores.host.onMenuAction(()=>{t(i).configDialogOpen=!0}));var h=n1(),g=A(h),b=A(g);{let Q=v(()=>t(s)("Select an interface")),Ee=v(()=>t(s)("Interfaces")),Ae=v(()=>t(s)("Connected")),j=v(()=>t(s)("Not connected")),pe=v(()=>t(s)("Not present")),B=v(()=>t(s)("Subscribing")),ie=v(()=>t(s)("All interfaces are connected")),be=v(()=>t(s)("Not every interface is connected")),fe=v(()=>t(s)("Port"));Kv(b,{get interfaces(){return e.stores.interfaces.states},get selected(){return t(i).selectedInterface},get host(){return t(i).host},get backendConnected(){return t(i).connected},get details(){return t(d)},get label(){return t(Q)},get listLabel(){return t(Ee)},get connectedText(){return t(Ae)},get notConnectedText(){return t(j)},get notPresentText(){return t(pe)},get subscribingText(){return t(B)},get allConnectedText(){return t(ie)},get someNotConnectedText(){return t(be)},get portLabel(){return t(fe)},devicesLabel:le=>t(s)("{count} devices",{count:le},le),dutyCycleLabel:le=>t(s)("Duty cycle {value} %",{value:le}),testId:"interface-select",onselect:le=>{e.stores.selectInterface(le)}})}var y=c(b,2);{let Q=v(()=>t(s)("Devices"));kf(y,{get tabs(){return t(l)},get active(){return t(i).tab},get label(){return t(Q)},onselect:Ee=>t(i).setTab(Ee)})}var S=c(y,2),E=A(S);{var _=Q=>{var Ee=JE(),Ae=ke(Ee),j=f(Ae,!0),pe=c(Ae,2),B=f(pe,!0);N((ie,be)=>{C(Ae,"title",ie),u(j,t(i).session.user),u(B,be)},[()=>t(s)("Logged in as {user}",{user:t(i).session.user}),()=>t(s)("Log out")]),p(Q,Ee)};ve(E,Q=>{t(i).session&&Q(_)})}var T=c(E,2);{var I=Q=>{var Ee=e1(),Ae=f(Ee);N(j=>u(Ae,`${j??""} (${e.stores.changeSet.count??""})`),[()=>t(s)("Pending changes")]),ce("click",Ee,()=>m(a,!0)),p(Q,Ee)};ve(T,Q=>{e.stores.changeSet.count>0&&Q(I)})}var w=c(T,2);{let Q=v(()=>t(s)("RPC log"));mt(w,{get title(){return t(Q)},icon:"≣",get pressed(){return t(i).rpcLogOpen},testId:"rpclog-toggle",onclick:()=>t(i).rpcLogOpen=!t(i).rpcLogOpen})}var D=c(w,2);If(D,{get theme(){return t(i).theme},labelFor:Q=>t(s)(`Theme: ${Q}`),testId:"theme-switch",onclick:()=>t(i).cycleTheme()});var P=c(D,2);{let Q=v(()=>t(s)("Settings"));mt(P,{get title(){return t(Q)},icon:"⚙",testId:"settings-button",onclick:()=>t(i).configDialogOpen=!0})}var U=c(P,2);{let Q=v(()=>t(s)("Homematic Manager on GitHub"));Fv(U,{href:n,get label(){return t(Q)},openExternal:Ee=>e.stores.host.openExternal(Ee),testId:"github-link"})}var re=c(g,2);{let Q=v(()=>({available:t(s)("A new version is available"),downloading:t(s)("Downloading"),downloaded:t(s)("The update is ready and will be installed when you quit"),installOnQuit:t(s)("The update will be installed when you quit"),download:t(s)("Download"),install:t(s)("Install on quit"),dismiss:t(s)("Dismiss")}));Cf(re,{get state(){return e.stores.host.updateNotice},get labels(){return t(Q)},testId:"update-notice",ondownload:()=>{e.stores.host.downloadUpdate()},oninstall:()=>{e.stores.host.installUpdateOnQuit()},ondismiss:()=>{e.stores.host.dismissUpdate()}})}var te=c(re,2),oe=A(te),ue=A(oe);{var x=Q=>{var Ee=t1(),Ae=f(Ee,!0);N(j=>u(Ae,j),[()=>t(s)("Select an interface")]),p(Q,Ee)},X=Q=>{dE(Q,{})},$=Q=>{OE(Q,{})},ee=Q=>{jE(Q,{})},W=Q=>{dp(Q,{})},z=Q=>{ZE(Q,{})},ne=Q=>{fE(Q,{})};ve(ue,Q=>{t(i).selectedInterface===""?Q(x):t(i).tab==="devices"?Q(X,1):t(i).tab==="links"?Q($,2):t(i).tab==="rssi"?Q(ee,3):t(i).tab==="console"?Q(W,4):t(i).tab==="messages"?Q(z,5):Q(ne,-1)})}var ae=c(te,2);{let Q=v(()=>t(s)("RPC log")),Ee=v(()=>t(s)("No RPC calls yet")),Ae=v(()=>t(s)("in progress")),j=v(()=>t(s)("Clear")),pe=v(()=>t(s)("Close")),B=v(()=>t(s)("Resize the RPC log"));mf(ae,{get entries(){return e.stores.writeLog.newestFirst},get pending(){return e.stores.writeLog.pending},get title(){return t(Q)},get emptyText(){return t(Ee)},get pendingText(){return t(Ae)},get clearLabel(){return t(j)},get closeLabel(){return t(pe)},get resizeLabel(){return t(B)},testId:"rpclog",onclear:()=>{e.stores.writeLog.clear()},get open(){return t(i).rpcLogOpen},set open(ie){t(i).rpcLogOpen=ie}})}var J=c(ae,2);{let Q=v(()=>t(s)("Dismiss")),Ee=v(()=>t(s)("Show fewer"));tf(J,{get notices(){return e.stores.notices.items},get dismissLabel(){return t(Q)},moreLabel:Ae=>t(s)("{count} more",{},Ae),get lessLabel(){return t(Ee)},testId:"notices",ondismiss:Ae=>e.stores.notices.dismiss(Ae)})}var q=c(J,2);{let Q=v(()=>t(s)("RPC execution")),Ee=v(()=>t(s)("Cancel"));rd(q,{get progress(){return e.stores.writeLog.progress},get title(){return t(Q)},get cancelLabel(){return t(Ee)},testId:"rpc-progress",oncancel:()=>{e.stores.writeLog.cancel()}})}var V=c(q,2);Cm(V,{get open(){return t(i).configDialogOpen},set open(Q){t(i).configDialogOpen=Q}});var Y=c(V,2);Wf(Y,{get open(){return t(a)},set open(Q){m(a,Q,!0)}});var he=c(Y,2);{let Q=v(()=>t(s)("Loading Homematic Manager..."));jv(he,{get visible(){return t(i).loading},get text(){return t(Q)},testId:"loader"})}N(()=>{C(oe,"id",`panel-${t(i).tab}`),C(oe,"aria-labelledby",`tab-${t(i).tab}`)}),p(r,h),Xe()}rt(["click"]);const Ud=["devices","links","rssi","console","messages","events"],Vd="devices";function a1(r){return Ud.includes(r)}function s1(r){const e=r.replace(/^#/,"").split("/"),n=decodeURIComponent(e[1]??""),a=decodeURIComponent(e[2]??"");return{interfaceName:n,tab:a1(a)?a:Vd}}function i1(r,e){return r===""?"":`#/${encodeURIComponent(r)}/${e}`}function o1(r){switch(r){case"BidCos-Wired":return["devices","links","console","events"];case"CUxD":return["devices","console","events"];case"BidCos-RF":return[...Ud];default:return["devices","links","console","messages","events"]}}const Is=["system","light","dark"],Qo="hmm.theme",Ds="hmm.language";function l1(){return typeof window>"u"?{hash:""}:window.location}function d1(r){return typeof window>"u"?()=>{}:(window.addEventListener("hashchange",r),()=>{window.removeEventListener("hashchange",r)})}function Bd(){try{return typeof localStorage>"u"?void 0:localStorage}catch{return}}class c1{#e=M(void 0);get config(){return t(this.#e)}set config(e){m(this.#e,e,!0)}#r=M(!0);get loading(){return t(this.#r)}set loading(e){m(this.#r,e,!0)}#n=M(!1);get connected(){return t(this.#n)}set connected(e){m(this.#n,e,!0)}#t=M("");get selectedInterface(){return t(this.#t)}set selectedInterface(e){m(this.#t,e,!0)}#a=M(xe(Vd));get tab(){return t(this.#a)}set tab(e){m(this.#a,e,!0)}#s=M("");get linksFilter(){return t(this.#s)}set linksFilter(e){m(this.#s,e,!0)}#i=M("en");get language(){return t(this.#i)}set language(e){m(this.#i,e,!0)}#o=M("auto");get languageChoice(){return t(this.#o)}set languageChoice(e){m(this.#o,e,!0)}#l=M("system");get theme(){return t(this.#l)}set theme(e){m(this.#l,e,!0)}#u=M(null);get session(){return t(this.#u)}set session(e){m(this.#u,e,!0)}#d=M(!1);get configDialogOpen(){return t(this.#d)}set configDialogOpen(e){m(this.#d,e,!0)}#v=M(!1);get rpcLogOpen(){return t(this.#v)}set rpcLogOpen(e){m(this.#v,e,!0)}#f;#h;#c;#m;#_;#g=[];constructor(e,n,a={}){this.#f=e,this.#h=n,this.#c=a.location??l1(),this.#m=a.storage===void 0?Bd():a.storage,this.#_=a.languages;const s=this.#m?.getItem(Qo);(s==="light"||s==="dark"||s==="system")&&(this.theme=s);const i=this.#m?.getItem(Ds);(i==="de"||i==="en"||i==="auto")&&(this.languageChoice=i),this.#b(),this.readRoute(),this.connected=e.connected,this.#g.push(e.onConnectionChange(o=>{this.connected=o}),e.on("config.changed",o=>{this.config=o}),(a.onHashChange??d1)(()=>{this.readRoute()}))}readRoute(){const e=s1(this.#c.hash);e.interfaceName!==""&&(this.selectedInterface=e.interfaceName),this.tab=e.tab}writeRoute(){const e=i1(this.selectedInterface,this.tab);this.#c.hash!==e&&(this.#c.hash=e)}setTab(e){this.tab=e,this.writeRoute()}setInterface(e){this.selectedInterface=e,this.writeRoute()}setLanguage(e){this.languageChoice=e,this.#b(),this.#m?.setItem(Ds,e)}#b(){this.language=mm(this.languageChoice,this.#_)}setTheme(e){this.theme=e,this.#m?.setItem(Qo,e)}cycleTheme(){const e=Is.indexOf(this.theme);this.setTheme(Is[(e+1)%Is.length]??"system")}get configuredInterfaces(){return this.config?.connection.interfaces??[]}get host(){return this.config?.connection.host??""}async load(){try{const e=await this.#f.request("config.get");this.applyConfig(e)}catch(e){this.#h.fromError(e,"config.get")}finally{this.loading=!1}await this.loadSession()}async loadSession(){try{this.session=await this.#f.request("session.info")}catch{this.session=null}}async save(e){try{return this.applyConfig(await this.#f.request("config.set",e)),this.configDialogOpen=!1,!0}catch(n){return this.#h.fromError(n,"config.set"),!1}}async discover(){try{const e=await this.#f.request("config.discover");this.config&&(this.config={...this.config,discovered:e})}catch(e){this.#h.fromError(e,"config.discover")}}async clearCaches(){try{await this.#f.request("config.clearCaches")}catch(e){this.#h.fromError(e,"config.clearCaches")}}applyConfig(e){this.config=e,this.#m?.getItem(Ds)==null&&(this.languageChoice=e.connection.language??"auto",this.#b()),(this.selectedInterface===""||!e.connection.interfaces.includes(this.selectedInterface))&&(this.selectedInterface=e.connection.interfaces[0]??""),this.writeRoute(),e.connection.host===""&&(this.configDialogOpen=!0)}dispose(){for(const e of this.#g)e();this.#g.length=0}}class u1{#e=M(xe([]));get changes(){return t(this.#e)}set changes(e){m(this.#e,e,!0)}#r=M(xe([]));get outcomes(){return t(this.#r)}set outcomes(e){m(this.#r,e,!0)}#n=M(!1);get applying(){return t(this.#n)}set applying(e){m(this.#n,e,!0)}#t=M(0);get applied(){return t(this.#t)}set applied(e){m(this.#t,e,!0)}#a=0;#s=1;#i;#o;#l;constructor(e,n,a){this.#i=e,this.#o=n,this.#l=a}get count(){return this.changes.length}get empty(){return this.changes.length===0}get interfaces(){const e=[];for(const n of this.changes)e.includes(n.interfaceName)||e.push(n.interfaceName);return e}stage(e){const n=`c${String(this.#s)}`;return this.#s+=1,this.changes=[...this.changes,{...e,id:n}],this.outcomes=[],n}remove(e){this.changes=this.changes.filter(n=>n.id!==e),this.outcomes=this.outcomes.filter(n=>n.id!==e)}clear(){this.changes=[],this.outcomes=[],this.applied=0}outcome(e){return this.outcomes.find(n=>n.id===e)}async apply(){if(this.applying||this.empty)return 0;this.applying=!0;const e=this.#a+=1;this.applied=0,this.outcomes=[];const n=[];try{for(const a of this.changes){if(this.#a!==e)break;const s=await this.#u(a);this.outcomes=[...this.outcomes,s],this.applied+=1,s.ok&&n.push(a.id)}}finally{this.applying=!1,this.changes=this.changes.filter(a=>!n.includes(a.id))}return n.length}async cancel(){return this.#a+=1,this.#l.cancel()}async#u(e){try{switch(e.kind){case"paramset":{const n=await this.#i.request("paramset.put",e.interfaceName,[...e.targets],e.paramset,e.values,e.writeAll?{writeAll:!0}:void 0);return this.#d(e.id,n)}case"linkParamset":{const n=await this.#i.request("paramset.putLink",e.interfaceName,e.links.map(a=>({...a})),e.values);return this.#d(e.id,n)}case"linkAdd":{for(const n of e.pairs)await this.#i.request("links.add",e.interfaceName,n.sender,n.receiver,n.name,n.description);return{id:e.id,ok:!0,results:[]}}case"linkRemove":{for(const n of e.pairs)await this.#i.request("links.remove",e.interfaceName,n.sender,n.receiver);return{id:e.id,ok:!0,results:[]}}}}catch(n){return this.#o.fromError(n,e.title),{id:e.id,ok:!1,results:[],error:Jl(n).message}}}#d(e,n){const a=n.filter(s=>!s.ok);return{id:e,ok:n.length>0&&a.length===0,results:n,...a.length===0?{}:{error:a.map(s=>`${s.address}: ${s.faultString??"failed"}`).join(", ")}}}}class v1{#e=M(xe({}));get methods(){return t(this.#e)}set methods(e){m(this.#e,e,!0)}#r=M(xe([]));get history(){return t(this.#r)}set history(e){m(this.#r,e,!0)}#n=M(!1);get running(){return t(this.#n)}set running(e){m(this.#n,e,!0)}#t;#a;#s;#i;#o=1;constructor(e,n,a={}){this.#t=e,this.#a=n,this.#s=a.max??50,this.#i=a.now??(()=>Date.now())}of(e){return this.methods[e]??[]}method(e,n){return this.of(e).find(a=>a.name===n)}async load(e){if(!(e===""||this.methods[e]))try{this.methods={...this.methods,[e]:await this.#t.request("rpc.methods",e)}}catch(n){this.#a.fromError(n,`rpc.methods ${e}`)}}async call(e,n,a){this.running=!0;const s=this.#i(),i=this.#o;this.#o+=1;let o;try{const d=await this.#t.request("rpc.call",e,n,a);o={id:i,timestamp:s,interfaceName:e,method:n,params:a,ok:!0,result:d,durationMs:this.#i()-s}}catch(d){const h=d;o={id:i,timestamp:s,interfaceName:e,method:n,params:a,ok:!1,error:h.message??String(d),...h.faultCode===void 0?{}:{faultCode:h.faultCode},durationMs:this.#i()-s}}finally{this.running=!1}const l=[o,...this.history];return this.history=l.length>this.#s?l.slice(0,this.#s):l,o}clear(){this.history=[]}}class f1{#e=M(xe({}));get indexes(){return t(this.#e)}set indexes(e){m(this.#e,e,!0)}#r=M(xe({}));get loading(){return t(this.#r)}set loading(e){m(this.#r,e,!0)}#n=M(xe([]));get firmwareBusy(){return t(this.#n)}set firmwareBusy(e){m(this.#n,e,!0)}#t;#a;#s=[];constructor(e,n){this.#t=e,this.#a=n,this.#s.push(e.on("devices.changed",a=>{this.indexes[a.interfaceName]&&this.load(a.interfaceName,{refresh:!1})}))}index(e){return this.indexes[e]}devices(e){return this.indexes[e]?.devices()??[]}channels(e,n){return this.indexes[e]?.childrenOf(n)??[]}isLoading(e){return this.loading[e]===!0}async load(e,n={}){if(e!==""){this.loading={...this.loading,[e]:!0};try{const a=await this.#t.request("devices.list",e,{refresh:n.refresh??!1});this.indexes={...this.indexes,[e]:new rh(e,a)},this.settleFirmware(e)}catch(a){this.#a.fromError(a,`devices.list ${e}`)}finally{this.loading={...this.loading,[e]:!1}}}}async teams(e){try{return await this.#t.request("teams.list",e)}catch(n){return this.#a.fromError(n,`listTeams ${e}`),[]}}async setTeam(e,n,a){try{return await this.#t.request("teams.set",e,n,a),await this.load(e,{refresh:!0}),!0}catch(s){return this.#a.fromError(s,`setTeam ${n}`),!1}}async confirmRegaInbox(){try{return await this.#t.request("rega.confirmInbox")}catch(e){return this.#a.fromError(e,"rega.confirmInbox"),[]}}async ensure(e){e===""||this.indexes[e]||this.isLoading(e)||await this.load(e)}firmwarePending(e){return this.firmwareBusy.length>0?!0:this.devices(e).some(n=>["DELIVER_FIRMWARE_IMAGE","PERFORMING_UPDATE","READY_FOR_UPDATE"].includes(n.FIRMWARE_UPDATE_STATE??""))}async updateFirmware(e,n){if(n.length===0)return[];this.firmwareBusy=[...this.firmwareBusy,...n.filter(a=>!this.firmwareBusy.includes(a))];try{const a=await this.#t.request("devices.updateFirmware",e,n);return await this.load(e,{refresh:!0}),a}catch(a){return this.#a.fromError(a,`devices.updateFirmware ${n.join(" ")}`),this.firmwareBusy=this.firmwareBusy.filter(s=>!n.includes(s)),[]}}async installFirmware(e,n){this.firmwareBusy=this.firmwareBusy.includes(n)?this.firmwareBusy:[...this.firmwareBusy,n];try{const a=await this.#t.request("devices.installFirmware",e,n);return await this.load(e,{refresh:!0}),a}catch(a){return this.#a.fromError(a,`devices.installFirmware ${n}`),this.firmwareBusy=this.firmwareBusy.filter(s=>s!==n),!1}}settleFirmware(e){const n=this.indexes[e];if(!n)return;const a=this.firmwareBusy.filter(s=>{const i=n.get(s);return i!==void 0&&(i.AVAILABLE_FIRMWARE===void 0||i.AVAILABLE_FIRMWARE===i.FIRMWARE)});a.length>0&&(this.firmwareBusy=this.firmwareBusy.filter(s=>!a.includes(s)))}async remove(e,n,a){try{return await this.#t.request("devices.delete",e,n,a),await this.load(e,{refresh:!0}),!0}catch(s){return this.#a.fromError(s,`deleteDevice ${n}`),!1}}async replaceable(e,n){try{return await this.#t.request("devices.replaceable",e,n)}catch(a){return this.#a.fromError(a,`devices.replaceable ${n}`),[]}}async replace(e,n,a){try{const s=await this.#t.request("devices.replace",e,n,a);return await this.load(e,{refresh:!0}),s}catch(s){return this.#a.fromError(s,`replaceDevice ${n} ${a}`),!1}}async repairConfig(e,n,a){try{return await this.#t.request("devices.repairConfig",e,n,a)}catch(s){this.#a.fromError(s,`devices.repairConfig ${n}`);return}}async restoreConfig(e,n){try{return await this.#t.request("devices.restoreConfig",e,n),!0}catch(a){return this.#a.fromError(a,`restoreConfigToDevice ${n}`),!1}}async clearConfigCache(e,n){try{return await this.#t.request("devices.clearConfigCache",e,n),!0}catch(a){return this.#a.fromError(a,`clearConfigCache ${n}`),!1}}async reportValueUsage(e,n,a){let s=0;for(const i of n){let o;try{o=await this.#t.request("paramset.description",e,i,"VALUES")}catch(l){this.#a.fromError(l,`getParamsetDescription ${i} VALUES`);continue}for(const l of Object.keys(o))try{await this.#t.request("devices.reportValueUsage",e,i,l,a),s+=1}catch(d){this.#a.fromError(d,`reportValueUsage ${i} ${l}`);break}}return s}async setInstallMode(e,n,a){try{return await this.#t.request("devices.installMode.set",e,n,a),!0}catch(s){return this.#a.fromError(s,"setInstallMode"),!1}}async installModeSeconds(e){try{return await this.#t.request("devices.installMode.get",e)}catch(n){return this.#a.fromError(n,"getInstallMode"),0}}forget(e){if(e===void 0){this.indexes={};return}this.indexes=Object.fromEntries(Object.entries(this.indexes).filter(([n])=>n!==e))}dispose(){for(const e of this.#s)e();this.#s.length=0}}class h1{buffer;#e=M(0);#r=0;#n=v(()=>(t(this.#e),this.buffer.toArray().reverse()));get records(){return t(this.#n)}set records(e){m(this.#n,e)}#t;#a;#s;constructor(e,n,a={}){this.buffer=new am(a.capacity??Ad),this.#t=e,this.#a=n,this.#s=e.on("rpc.event",s=>{this.push(s)})}get size(){return t(this.#e),this.buffer.size}push(e){this.buffer.push({...e,seq:this.#r}),this.#r+=1,m(this.#e,t(this.#e)+1)}filtered(e){return t(this.#e),im(this.buffer,e).reverse()}countFor(e){return t(this.#e),this.buffer.filter(n=>n.address===e).length}async load(e,n){try{const a=await this.#t.request("events.recent",e,n);for(const s of a)this.buffer.push({...s,seq:this.#r}),this.#r+=1;m(this.#e,t(this.#e)+1)}catch(a){this.#a.fromError(a,"events.recent")}}async clear(){this.buffer.clear(),m(this.#e,t(this.#e)+1);try{await this.#t.request("events.clear")}catch(e){this.#a.fromError(e,"events.clear")}}dispose(){this.#s()}}const m1="__HMM_HOST__";function p1(r){if(typeof r!="object"||r===null)return!1;const e=r,n=e.update;return typeof e.info=="function"&&typeof e.deviceImageUrl=="function"&&typeof e.setTheme=="function"&&typeof e.onSystemTheme=="function"&&typeof e.onMenuAction=="function"&&typeof n=="object"&&n!==null&&typeof n.state=="function"&&typeof n.check=="function"&&typeof n.download=="function"&&typeof n.installOnQuit=="function"&&typeof n.dismiss=="function"&&typeof n.on=="function"}function g1(r=globalThis){const e=r[m1];return p1(e)?e:void 0}class _1{#e=M(void 0);get info(){return t(this.#e)}set info(e){m(this.#e,e,!0)}#r=M(void 0);get update(){return t(this.#r)}set update(e){m(this.#r,e,!0)}#n=M(!1);get systemDark(){return t(this.#n)}set systemDark(e){m(this.#n,e,!0)}#t;#a=[];constructor(e={}){this.#t=e.bridge??g1(e.scope??globalThis),this.#t&&this.#a.push(this.#t.onSystemTheme(n=>{this.systemDark=n}),this.#t.update.on(n=>{this.update=n}))}get available(){return this.#t!==void 0}get updateNotice(){const e=this.update;if(!(!e||e.dismissed))return["available","downloading","downloaded","installOnQuit"].includes(e.phase)?e:void 0}deviceImageUrl(e){if(e!=="")return this.#t?this.#t.deviceImageUrl(e):`images/${encodeURIComponent(e)}`}async load(){if(!this.#t)return;const[e,n]=await Promise.all([this.#t.info(),this.#t.update.state()]);this.info=e,this.update=n}async setTheme(e){await this.#t?.setTheme(e)}onMenuAction(e){return this.#t?.onMenuAction(e)??(()=>{})}async openExternal(e){const n=this.#t;return n?.openExternal?(await n.openExternal(e),!0):!1}async checkForUpdate(){this.update=await this.#t?.update.check()}async downloadUpdate(){this.update=await this.#t?.update.download()}async installUpdateOnQuit(){this.update=await this.#t?.update.installOnQuit()}async dismissUpdate(){this.update=await this.#t?.update.dismiss()}dispose(){for(const e of this.#a)e();this.#a.length=0}}class b1{#e=M(xe([]));get states(){return t(this.#e)}set states(e){m(this.#e,e,!0)}#r=M(void 0);get rega(){return t(this.#r)}set rega(e){m(this.#r,e,!0)}#n=M(!1);get loading(){return t(this.#n)}set loading(e){m(this.#n,e,!0)}#t;#a;#s=[];constructor(e,n){this.#t=e,this.#a=n,this.#s.push(e.on("interfaces.changed",a=>{this.states=a}),e.on("rega.changed",a=>{this.rega=a}))}get(e){return this.states.find(n=>n.name===e)}typeOf(e){return this.get(e)?.type??""}isConnected(e){return this.get(e)?.connected===!0}get allConnected(){const e=this.states.filter(n=>n.absent!==!0);return e.length>0&&e.every(n=>n.connected)}async load(){this.loading=!0;try{this.states=await this.#t.request("interfaces.list")}catch(e){this.#a.fromError(e,"interfaces.list")}finally{this.loading=!1}try{this.rega=await this.#t.request("rega.state")}catch(e){this.rega={enabled:!0,reachable:!1,names:0,error:String(e)}}}async reconnect(e){try{await this.#t.request("interfaces.reconnect",e)}catch(n){this.#a.fromError(n,"interfaces.reconnect")}}dispose(){for(const e of this.#s)e();this.#s.length=0}}class E1{#e;#r=new Map;constructor(e){this.#e=e}get requested(){return[...this.#r.keys()]}async#n(e){let n=this.#r.get(e);return n===void 0&&(n=this.#e.request("data.file",`data/${e}`).catch(()=>{}),this.#r.set(e,n)),await n}manifest(){return this.#n(Fn.manifest)}receiverProfiles(e){return this.#n(Fn.profiles(e))}async receiverTypeAliases(){return await this.#n(Fn.receiverTypeAliases)??{}}async masterMetadata(){return await this.#n(Fn.masterMetadata)??{}}async optionPresets(){return await this.#n(Fn.optionPresets)??{}}async crossValidations(){return await this.#n(Fn.crossValidations)??[]}translations(e){return this.#n(Fn.translations(e))}async deviceIcons(){return await this.#n(Fn.deviceIcons)??{}}}class S1{#e=M(xe(new To));get lookup(){return t(this.#e)}set lookup(e){m(this.#e,e,!0)}#r=M(void 0);get manifest(){return t(this.#r)}set manifest(e){m(this.#r,e,!0)}#n=M(!1);get available(){return t(this.#n)}set available(e){m(this.#n,e,!0)}#t=M(xe({}));get presets(){return t(this.#t)}set presets(e){m(this.#t,e,!0)}source;engine;#a;#s;constructor(e,n={}){this.source=n.source??new E1(e),this.engine=new Hh(this.source)}async setLanguage(e){if(this.#a===e){await this.#s;return}this.#a=e;const n=(async()=>{const s=[e,...["en","de"].filter(d=>d!==e)],i=await Promise.all(s.map(d=>this.source.translations(d))),[o,...l]=i;this.lookup=new To(o,...l),this.available=i.some(d=>d!==void 0),this.manifest=await this.source.manifest()})();this.#s=n,await n}async loadPresets(){return Object.keys(this.presets).length===0&&(this.presets=await this.source.optionPresets()),this.presets}masterView(e,n,a={}){return this.engine.masterMetadataFor(e,n,a)}profilesFor(e,n){return this.engine.profilesFor(e,n)}linkMetadataFor(e,n){return this.engine.linkMetadataFor(e,n)}parameterLabel(e,n){return this.lookup.parameter(e,n)}parameterHelp(e,n){return this.lookup.parameterHelp(e,n)}valueLabel(e,n,a){return this.lookup.parameterValue(e,n,a)}valueLabelIfKnown(e,n,a){const s=this.lookup.parameterValue(e,n,a);return s===n?void 0:s}channelTypeLabel(e){return this.lookup.channelType(e)}deviceModelLabel(e){return this.lookup.deviceModel(e)}uiLabel(e){return this.lookup.uiLabel(e)}}class y1{#e=M(xe({}));get links(){return t(this.#e)}set links(e){m(this.#e,e,!0)}#r=M(xe({}));get loading(){return t(this.#r)}set loading(e){m(this.#r,e,!0)}#n;#t;constructor(e,n){this.#n=e,this.#t=n}of(e){return this.links[e]??[]}isLoading(e){return this.loading[e]===!0}forAddress(e,n){return this.of(e).filter(a=>a.SENDER===n||a.RECEIVER===n)}async load(e){if(e!==""){this.loading={...this.loading,[e]:!0};try{this.links={...this.links,[e]:await this.#n.request("links.list",e)}}catch(n){this.#t.fromError(n,`links.list ${e}`)}finally{this.loading={...this.loading,[e]:!1}}}}defective(e){return this.of(e).filter(n=>Hs(n.FLAGS).broken)}async add(e,n,a,s,i){const o=n.flatMap(l=>a.map(d=>({sender:l,receiver:d,...s===void 0?{}:{name:s},...i===void 0?{}:{description:i}})));return this.addPairs(e,o)}async addPairs(e,n){let a=0;for(const s of n)try{await this.#n.request("links.add",e,s.sender,s.receiver,s.name,s.description),a+=1}catch(i){this.#t.fromError(i,`addLink ${s.sender} ${s.receiver}`)}return a>0&&await this.load(e),a}async remove(e,n){let a=0;for(const s of n)try{await this.#n.request("links.remove",e,s.sender,s.receiver),a+=1}catch(i){this.#t.fromError(i,`removeLink ${s.sender} ${s.receiver}`)}return a>0&&await this.load(e),a}async info(e,n,a){try{return await this.#n.request("links.info.get",e,n,a)}catch(s){this.#t.fromError(s,`getLinkInfo ${n} ${a}`);return}}async setInfo(e,n,a,s,i){try{return await this.#n.request("links.info.set",e,n,a,s,i),await this.load(e),!0}catch(o){return this.#t.fromError(o,`setLinkInfo ${n} ${a}`),!1}}async activate(e,n,a,s){try{return await this.#n.request("links.activate",e,n,a,s),!0}catch(i){return this.#t.fromError(i,`activateLinkParamset ${n} ${a}`),!1}}#a=M(xe([]));get templates(){return t(this.#a)}set templates(e){m(this.#a,e,!0)}async loadTemplates(e){try{this.templates=await this.#n.request("linkTemplates.list",e)}catch(n){this.#t.fromError(n,"linkTemplates.list"),this.templates=[]}return this.templates}async saveTemplate(e){try{return await this.#n.request("linkTemplates.save",e),await this.loadTemplates(e.identity),!0}catch(n){return this.#t.fromError(n,"linkTemplates.save"),!1}}async removeTemplate(e,n){try{return await this.#n.request("linkTemplates.remove",e),await this.loadTemplates(n),!0}catch(a){return this.#t.fromError(a,"linkTemplates.remove"),!1}}async ensure(e){e===""||this.links[e]||this.isLoading(e)||await this.load(e)}forget(e){if(e===void 0){this.links={};return}this.links=Object.fromEntries(Object.entries(this.links).filter(([n])=>n!==e))}}class A1{#e=M(xe({}));get names(){return t(this.#e)}set names(e){m(this.#e,e,!0)}#r;#n;#t;constructor(e,n){this.#r=e,this.#n=n,this.#t=e.on("names.changed",a=>{this.names=a})}name(e){return this.names[e]}nameOf(e){return this.names[e]??e}get size(){return Object.keys(this.names).length}async load(){try{this.names=await this.#r.request("names.get")}catch(e){this.#n.fromError(e,"names.get")}}async rename(e){try{return this.names=await this.#r.request("names.set",e),!0}catch(n){return this.#n.fromError(n,"names.set"),!1}}dispose(){this.#t()}}function Zo(r,e,n){return`${r}|${e}|${n}`}class T1{#e=M(xe({}));get descriptions(){return t(this.#e)}set descriptions(e){m(this.#e,e,!0)}#r=M(!1);get loading(){return t(this.#r)}set loading(e){m(this.#r,e,!0)}#n=M(xe([]));get results(){return t(this.#n)}set results(e){m(this.#n,e,!0)}#t=M(!1);get writing(){return t(this.#t)}set writing(e){m(this.#t,e,!0)}#a;#s;constructor(e,n){this.#a=e,this.#s=n}description(e,n,a){return this.descriptions[Zo(e,n,a)]}async describe(e,n,a){const s=Zo(e,n,a),i=this.descriptions[s];if(i)return i;try{const o=await this.#a.request("paramset.description",e,n,a);return this.descriptions={...this.descriptions,[s]:o},o}catch(o){this.#s.fromError(o,`getParamsetDescription ${n} ${a}`);return}}async read(e,n,a){try{return await this.#a.request("paramset.get",e,n,a)}catch(s){this.#s.fromError(s,`getParamset ${n} ${a}`);return}}async open(e,n,a){this.loading=!0;try{const[s,i]=await Promise.all([this.describe(e,n,a),this.read(e,n,a)]);return s?{description:s,values:i??{}}:void 0}finally{this.loading=!1}}async put(e,n,a,s,i){this.writing=!0;try{const o=await this.#a.request("paramset.put",e,n,a,s,i);return this.results=o,o}catch(o){return this.#s.fromError(o,`putParamset ${a}`),this.results=[],[]}finally{this.writing=!1}}async putLink(e,n,a,s){this.writing=!0;try{const i=await this.#a.request("paramset.putLink",e,n,a,s);return this.results=i,i}catch(i){return this.#s.fromError(i,"putParamset LINK"),this.results=[],[]}finally{this.writing=!1}}async setValue(e,n,a,s){try{return await this.#a.request("value.set",e,n,a,s),!0}catch(i){return this.#s.fromError(i,`setValue ${n} ${a}`),!1}}async getValue(e,n,a){try{return await this.#a.request("value.get",e,n,a)}catch(s){this.#s.fromError(s,`getValue ${n} ${a}`);return}}clearResults(){this.results=[]}}class w1{#e=M(xe({}));get interfaces(){return t(this.#e)}set interfaces(e){m(this.#e,e,!0)}#r=M(!1);get loading(){return t(this.#r)}set loading(e){m(this.#r,e,!0)}#n=M(0);#t={};#a;#s;#i;constructor(e,n){this.#a=e,this.#s=n,this.#i=e.on("rpc.event",a=>{if(a.address===void 0||a.datapoint===void 0||a.value===void 0)return;const s=a.value;if(typeof s!="boolean"&&typeof s!="number"&&typeof s!="string")return;this.#t[a.interfaceName]?.applyHmipValue(Ga(a.address),a.datapoint,s)===!0&&m(this.#n,t(this.#n)+1)})}#o(e){const n=this.#t[e]??new nm;return this.#t[e]=n,n}gateways(e){return this.interfaces[e]??[]}gatewayAddresses(e){return this.gateways(e).map(n=>n.ADDRESS)}pair(e,n,a){return t(this.#n),this.#t[e]?.get(n,a)}peersOf(e,n){return t(this.#n),this.#t[e]?.peersOf(n)??[]}bestGatewayFor(e,n){return t(this.#n),this.#t[e]?.bestInterfaceFor(n,this.gatewayAddresses(e))}async load(e){if(e!==""){this.loading=!0;try{const n=await this.#a.request("bidcos.interfaces",e);this.interfaces={...this.interfaces,[e]:n};const a=n.find(s=>s.DEFAULT===!0)??n[0];a&&this.#o(e).setCentralAddress(a.ADDRESS)}catch(n){this.#s.fromError(n,`listBidcosInterfaces ${e}`)}try{this.#o(e).applyRssiInfo(await this.#a.request("rssi.get",e)),m(this.#n,t(this.#n)+1)}catch(n){this.#s.fromError(n,`rssiInfo ${e}`)}finally{this.loading=!1}}}async setBidcosInterface(e,n,a,s){try{return await this.#a.request("bidcos.setInterface",e,n,a,s),!0}catch(i){return this.#s.fromError(i,`setBidcosInterface ${n} ${a}`),!1}}dispose(){this.#i()}}const Jo="hmm.serviceMessages.quiet";class k1{#e=M(xe([]));get messages(){return t(this.#e)}set messages(e){m(this.#e,e,!0)}#r=M(!1);get loading(){return t(this.#r)}set loading(e){m(this.#r,e,!0)}#n=M(!1);get quiet(){return t(this.#n)}set quiet(e){m(this.#n,e,!0)}#t;#a;#s;#i;#o=[];#l=!1;constructor(e,n,a={}){this.#t=e,this.#a=n,this.#s=a.storage===void 0?Bd():a.storage,this.quiet=this.#s?.getItem(Jo)==="true",this.#i=e.on("serviceMessages.changed",s=>{this.apply(tl(s))})}apply(e){const n=this.#o,a=e.filter(s=>!n.includes(el(s)));if(this.messages=e,this.#o=e.map(s=>el(s)),!this.#l){this.#l=!0;return}if(!this.quiet)for(const s of a)this.#a.push("warn",`${s.address} ${s.datapoint}`,s.interfaceName)}setQuiet(e){this.quiet=e,this.#s?.setItem(Jo,String(e))}acknowledgeable(e){return this.of(e).filter(n=>Ba(n.datapoint))}of(e){return this.messages.filter(n=>n.interfaceName===e)}countOf(e){return this.of(e).length}async load(e){this.loading=!0;try{this.apply(tl(await this.#t.request("serviceMessages.list",e)))}catch(n){this.#a.fromError(n,"serviceMessages.list")}finally{this.loading=!1}}async acknowledge(e,n,a){try{return await this.#t.request("serviceMessages.ack",e,n,a),!0}catch(s){return this.#a.fromError(s,`serviceMessages.ack ${n} ${a}`),!1}}async acknowledgeMany(e){let n=0;for(const a of e)Ba(a.datapoint)&&await this.acknowledge(a.interfaceName,a.address,a.datapoint)&&(n+=1);return n>0&&await this.load(),n}dispose(){this.#i()}}function el(r){return`${r.interfaceName}|${r.address}|${r.datapoint}`}function tl(r){return Array.isArray(r)?r:[]}class R1{#e=M(xe([]));get counters(){return t(this.#e)}set counters(e){m(this.#e,e,!0)}#r;#n;#t;constructor(e,n){this.#r=e,this.#n=n,this.#t=e.on("unreach.changed",a=>{this.counters=a})}countOf(e,n){const a=n.split(":")[0]??n;return this.counters.find(s=>s.interfaceName===e&&s.address===a)?.count??0}isUnreach(e,n){const a=n.split(":")[0]??n;return this.counters.find(s=>s.interfaceName===e&&s.address===a)?.unreach===!0}of(e){return this.counters.filter(n=>n.interfaceName===e)}async load(){try{this.counters=await this.#r.request("unreach.list")}catch(e){this.#n.fromError(e,"unreach.list")}}async reset(e,n){try{return await this.#r.request("unreach.reset",e,n),await this.load(),!0}catch(a){return this.#n.fromError(a,"unreach.reset"),!1}}dispose(){this.#t()}}class I1{#e=M(xe([]));get entries(){return t(this.#e)}set entries(e){m(this.#e,e,!0)}#r=M(xe([]));get pending(){return t(this.#r)}set pending(e){m(this.#r,e,!0)}#n=M(void 0);get progress(){return t(this.#n)}set progress(e){m(this.#n,e,!0)}#t;#a;#s;#i;#o=[];#l=1;constructor(e,n,a={}){this.#t=e,this.#a=n,this.#s=a.max??200,this.#i=a.now??(()=>Date.now()),this.#o.push(e.on("writeLog.appended",s=>{this.append(s)}),e.on("write.progress",s=>{this.progress=s.done>=s.total?void 0:s}))}get busy(){return this.pending.length>0||this.progress!==void 0}get newestFirst(){return[...this.entries].reverse()}append(e){const n=[...this.entries,e];this.entries=n.length>this.#s?n.slice(n.length-this.#s):n}beginPending(e,n,a){const s=this.#l;return this.#l+=1,this.pending=[...this.pending,{id:s,interfaceName:e,method:n,params:a,startedAt:this.#i()}],s}endPending(e){this.pending=this.pending.filter(n=>n.id!==e)}async load(e){try{this.entries=await this.#t.request("writeLog.list",e)}catch(n){this.#a.fromError(n,"writeLog.list")}}async cancel(e){try{return await this.#t.request("write.cancel",e)}catch(n){return this.#a.fromError(n,"write.cancel"),0}}async clear(){this.entries=[];try{await this.#t.request("writeLog.clear")}catch(e){this.#a.fromError(e,"writeLog.clear")}}dispose(){for(const e of this.#o)e();this.#o.length=0}}class D1{transport;i18n;notices;app;interfaces;devices;names;links;serviceMessages;unreach;events;writeLog;host;meta;paramsets;radio;console;changeSet;constructor(e,n={}){this.transport=e,this.notices=new Xv(e),this.app=new c1(e,this.notices,n),this.i18n=new pm(this.app.language),this.interfaces=new b1(e,this.notices),this.devices=new f1(e,this.notices),this.names=new A1(e,this.notices),this.links=new y1(e,this.notices),this.serviceMessages=new k1(e,this.notices,{...n.storage===void 0?{}:{storage:n.storage}}),this.unreach=new R1(e,this.notices),this.events=new h1(e,this.notices,{...n.eventCapacity===void 0?{}:{capacity:n.eventCapacity}}),this.writeLog=new I1(e,this.notices),this.meta=new S1(e,{...n.dataSource===void 0?{}:{source:n.dataSource}}),this.paramsets=new T1(e,this.notices),this.radio=new w1(e,this.notices),this.console=new v1(e,this.notices),this.changeSet=new u1(e,this.notices,this.writeLog),this.host=new _1({...n.hostBridge===void 0?{}:{bridge:n.hostBridge},...n.hostScope===void 0?{}:{scope:n.hostScope}})}get tabs(){return o1(this.interfaces.typeOf(this.app.selectedInterface))}nameOf=e=>this.names.nameOf(e);async start(){await this.app.load(),this.i18n.language=this.app.language,this.meta.setLanguage(this.app.language).catch(()=>{}),this.host.load().catch(()=>{}),await Promise.all([this.interfaces.load(),this.names.load(),this.writeLog.load()]),await this.selectInterface(this.app.selectedInterface)}async selectInterface(e){this.app.setInterface(e),this.tabs.includes(this.app.tab)||this.app.setTab("devices"),e!==""&&await Promise.all([this.devices.ensure(e),this.links.ensure(e),this.serviceMessages.load(),this.events.load()])}async refresh(){const e=this.app.selectedInterface;e!==""&&await Promise.all([this.devices.load(e,{refresh:!0}),this.links.load(e),this.serviceMessages.load(),this.interfaces.load()])}dispose(){this.radio.dispose(),this.host.dispose(),this.writeLog.dispose(),this.events.dispose(),this.serviceMessages.dispose(),this.names.dispose(),this.devices.dispose(),this.interfaces.dispose(),this.app.dispose(),this.notices.dispose()}}function N1(r,e={}){return new D1(r,e)}const zd=["BidCos-RF","HmIP-RF"],x1=[{ADDRESS:"BidCoS-RF",TYPE:"HM-RCV-50",PARENT:"",CHILDREN:["BidCoS-RF:0","BidCoS-RF:1","BidCoS-RF:2"],PARAMSETS:["MASTER"],FIRMWARE:"2.31.25",VERSION:1,FLAGS:9,RX_MODE:1,INTERFACE:"",RF_ADDRESS:1234567},{ADDRESS:"BidCoS-RF:0",TYPE:"MAINTENANCE",PARENT:"BidCoS-RF",PARENT_TYPE:"HM-RCV-50",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:"BidCoS-RF:1",TYPE:"VIRTUAL_KEY",PARENT:"BidCoS-RF",PARENT_TYPE:"HM-RCV-50",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH KEYMATIC WINMATIC",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:1},{ADDRESS:"BidCoS-RF:2",TYPE:"VIRTUAL_KEY",PARENT:"BidCoS-RF",PARENT_TYPE:"HM-RCV-50",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:2,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH KEYMATIC WINMATIC",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:1},{ADDRESS:"MEQ0123456",TYPE:"HM-LC-Sw1-Pl-CT-R1",PARENT:"",CHILDREN:["MEQ0123456:0","MEQ0123456:1"],PARAMSETS:["MASTER"],FIRMWARE:"2.5",AVAILABLE_FIRMWARE:"2.5",VERSION:8,FLAGS:1,RX_MODE:1,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:4132819,UPDATABLE:1},{ADDRESS:"MEQ0123456:0",TYPE:"MAINTENANCE",PARENT:"MEQ0123456",PARENT_TYPE:"HM-LC-Sw1-Pl-CT-R1",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:8},{ADDRESS:"MEQ0123456:1",TYPE:"SWITCH",PARENT:"MEQ0123456",PARENT_TYPE:"HM-LC-Sw1-Pl-CT-R1",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:2,LINK_SOURCE_ROLES:"",LINK_TARGET_ROLES:"SWITCH",FLAGS:1,VERSION:8},{ADDRESS:"NEQ1000001",TYPE:"HM-Sec-SD-2",PARENT:"",CHILDREN:["NEQ1000001:0","NEQ1000001:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.4",VERSION:1,FLAGS:1,RX_MODE:12,RF_ADDRESS:5000001},{ADDRESS:"NEQ1000001:0",TYPE:"MAINTENANCE",PARENT:"NEQ1000001",PARENT_TYPE:"HM-Sec-SD-2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:"NEQ1000001:1",TYPE:"SMOKE_DETECTOR",PARENT:"NEQ1000001",PARENT_TYPE:"HM-Sec-SD-2",PARAMSETS:["MASTER","VALUES"],INDEX:1,DIRECTION:1,FLAGS:1,VERSION:1,TEAM:"NEQ1000001-TEAM:1",TEAM_TAG:"SMOKE_DETECTOR"},{ADDRESS:"NEQ1000002",TYPE:"HM-Sec-SD-2",PARENT:"",CHILDREN:["NEQ1000002:0","NEQ1000002:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.4",VERSION:1,FLAGS:1,RX_MODE:12,RF_ADDRESS:5000002},{ADDRESS:"NEQ1000002:0",TYPE:"MAINTENANCE",PARENT:"NEQ1000002",PARENT_TYPE:"HM-Sec-SD-2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:"NEQ1000002:1",TYPE:"SMOKE_DETECTOR",PARENT:"NEQ1000002",PARENT_TYPE:"HM-Sec-SD-2",PARAMSETS:["MASTER","VALUES"],INDEX:1,DIRECTION:1,FLAGS:1,VERSION:1,TEAM:"NEQ1000002-TEAM:1",TEAM_TAG:"SMOKE_DETECTOR"},{ADDRESS:"JEQ0234567",TYPE:"HM-PBI-4-FM",PARENT:"",CHILDREN:["JEQ0234567:0","JEQ0234567:1","JEQ0234567:2"],PARAMSETS:["MASTER"],FIRMWARE:"1.4",VERSION:15,FLAGS:1,RX_MODE:12,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:4298112},{ADDRESS:"JEQ0234567:0",TYPE:"MAINTENANCE",PARENT:"JEQ0234567",PARENT_TYPE:"HM-PBI-4-FM",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:15},{ADDRESS:"JEQ0234567:1",TYPE:"KEY",PARENT:"JEQ0234567",PARENT_TYPE:"HM-PBI-4-FM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH KEYMATIC WINMATIC",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:15},{ADDRESS:"JEQ0234567:2",TYPE:"KEY",PARENT:"JEQ0234567",PARENT_TYPE:"HM-PBI-4-FM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:2,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH KEYMATIC WINMATIC",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:15},{ADDRESS:"KEQ0345678",TYPE:"HM-CC-RT-DN",PARENT:"",CHILDREN:["KEQ0345678:0","KEQ0345678:4"],PARAMSETS:["MASTER"],FIRMWARE:"1.10",AVAILABLE_FIRMWARE:"1.11",VERSION:20,FLAGS:1,RX_MODE:12,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:5012733,UPDATABLE:1},{ADDRESS:"KEQ0345678:0",TYPE:"MAINTENANCE",PARENT:"KEQ0345678",PARENT_TYPE:"HM-CC-RT-DN",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:20},{ADDRESS:"KEQ0345678:4",TYPE:"CLIMATECONTROL_RT_TRANSCEIVER",PARENT:"KEQ0345678",PARENT_TYPE:"HM-CC-RT-DN",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:4,DIRECTION:1,LINK_SOURCE_ROLES:"THERMALCONTROL_TRANSMIT",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:20},{ADDRESS:"LEQ0456789",TYPE:"HM-Sec-SC-2",PARENT:"",CHILDREN:["LEQ0456789:0","LEQ0456789:1"],PARAMSETS:["MASTER"],FIRMWARE:"2.2",VERSION:16,FLAGS:1,RX_MODE:12,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:5298004},{ADDRESS:"LEQ0456789:0",TYPE:"MAINTENANCE",PARENT:"LEQ0456789",PARENT_TYPE:"HM-Sec-SC-2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:16},{ADDRESS:"LEQ0456789:1",TYPE:"SHUTTER_CONTACT",PARENT:"LEQ0456789",PARENT_TYPE:"HM-Sec-SC-2",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"WINDOW_SWITCH_RECEIVER",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:16},{ADDRESS:"GEQ0567890",TYPE:"HM-LC-Dim1T-FM",PARENT:"",CHILDREN:["GEQ0567890:0","GEQ0567890:1"],PARAMSETS:["MASTER"],FIRMWARE:"2.2",VERSION:34,FLAGS:1,RX_MODE:1,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:3912004},{ADDRESS:"GEQ0567890:0",TYPE:"MAINTENANCE",PARENT:"GEQ0567890",PARENT_TYPE:"HM-LC-Dim1T-FM",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:34},{ADDRESS:"GEQ0567890:1",TYPE:"DIMMER",PARENT:"GEQ0567890",PARENT_TYPE:"HM-LC-Dim1T-FM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:2,LINK_SOURCE_ROLES:"",LINK_TARGET_ROLES:"SWITCH",FLAGS:1,VERSION:34}],C1=[{ADDRESS:"HmIP-RCV-50",TYPE:"HmIP-RCV-50",PARENT:"",CHILDREN:["HmIP-RCV-50:0","HmIP-RCV-50:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.0.0",VERSION:1,FLAGS:9,RX_MODE:1,SUBTYPE:""},{ADDRESS:"HmIP-RCV-50:0",TYPE:"MAINTENANCE",PARENT:"HmIP-RCV-50",PARENT_TYPE:"HmIP-RCV-50",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:"HmIP-RCV-50:1",TYPE:"VIRTUAL_KEY",PARENT:"HmIP-RCV-50",PARENT_TYPE:"HmIP-RCV-50",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH",FLAGS:1,VERSION:1},{ADDRESS:"000A1B2C3D4E5F",TYPE:"HmIP-BSM",SUBTYPE:"BSM",PARENT:"",CHILDREN:["000A1B2C3D4E5F:0","000A1B2C3D4E5F:1","000A1B2C3D4E5F:4"],PARAMSETS:["MASTER"],FIRMWARE:"2.10.4",AVAILABLE_FIRMWARE:"2.12.0",VERSION:40,FLAGS:1,RX_MODE:1,INTERFACE:"HmIP-RF",UPDATABLE:1},{ADDRESS:"000A1B2C3D4E5F:0",TYPE:"MAINTENANCE",PARENT:"000A1B2C3D4E5F",PARENT_TYPE:"HmIP-BSM",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:40},{ADDRESS:"000A1B2C3D4E5F:1",TYPE:"KEY_TRANSCEIVER",PARENT:"000A1B2C3D4E5F",PARENT_TYPE:"HmIP-BSM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH",FLAGS:1,VERSION:40},{ADDRESS:"000A1B2C3D4E5F:4",TYPE:"SWITCH_VIRTUAL_RECEIVER",PARENT:"000A1B2C3D4E5F",PARENT_TYPE:"HmIP-BSM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:4,DIRECTION:2,LINK_TARGET_ROLES:"SWITCH",FLAGS:1,VERSION:40},{ADDRESS:"0011D3C9A1B2C3",TYPE:"HmIP-SWDO",SUBTYPE:"SWDO",PARENT:"",CHILDREN:["0011D3C9A1B2C3:0","0011D3C9A1B2C3:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.4.6",VERSION:12,FLAGS:1,RX_MODE:8,INTERFACE:"HmIP-RF"},{ADDRESS:"0011D3C9A1B2C3:0",TYPE:"MAINTENANCE",PARENT:"0011D3C9A1B2C3",PARENT_TYPE:"HmIP-SWDO",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:12},{ADDRESS:"0011D3C9A1B2C3:1",TYPE:"SHUTTER_CONTACT",PARENT:"0011D3C9A1B2C3",PARENT_TYPE:"HmIP-SWDO",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"WINDOW_SWITCH_RECEIVER",FLAGS:1,VERSION:12},{ADDRESS:"3014F711A0001F",TYPE:"HmIP-eTRV-2",SUBTYPE:"eTRV",PARENT:"",CHILDREN:["3014F711A0001F:0","3014F711A0001F:1"],PARAMSETS:["MASTER"],FIRMWARE:"2.4.4",VERSION:34,FLAGS:1,RX_MODE:8,INTERFACE:"HmIP-RF"},{ADDRESS:"3014F711A0001F:0",TYPE:"MAINTENANCE",PARENT:"3014F711A0001F",PARENT_TYPE:"HmIP-eTRV-2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:34},{ADDRESS:"3014F711A0001F:1",TYPE:"HEATING_CLIMATECONTROL_TRANSCEIVER",PARENT:"3014F711A0001F",PARENT_TYPE:"HmIP-eTRV-2",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:2,LINK_TARGET_ROLES:"THERMALCONTROL_TRANSMIT",FLAGS:1,VERSION:34},{ADDRESS:"0001D8A9B7C6D5",TYPE:"HmIP-WRC2",SUBTYPE:"WRC2",PARENT:"",CHILDREN:["0001D8A9B7C6D5:0","0001D8A9B7C6D5:1","0001D8A9B7C6D5:2"],PARAMSETS:["MASTER"],FIRMWARE:"1.2.6",VERSION:10,FLAGS:1,RX_MODE:8,INTERFACE:"HmIP-RF"},{ADDRESS:"0001D8A9B7C6D5:0",TYPE:"MAINTENANCE",PARENT:"0001D8A9B7C6D5",PARENT_TYPE:"HmIP-WRC2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:10},{ADDRESS:"0001D8A9B7C6D5:1",TYPE:"KEY_TRANSCEIVER",PARENT:"0001D8A9B7C6D5",PARENT_TYPE:"HmIP-WRC2",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH",FLAGS:1,VERSION:10},{ADDRESS:"0001D8A9B7C6D5:2",TYPE:"KEY_TRANSCEIVER",PARENT:"0001D8A9B7C6D5",PARENT_TYPE:"HmIP-WRC2",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:2,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH",FLAGS:1,VERSION:10}],Hd={"BidCos-RF":x1,"HmIP-RF":C1},Js={"BidCoS-RF":"CCU",MEQ0123456:"Licht Küche","MEQ0123456:1":"Licht Küche:1",JEQ0234567:"Taster Flur","JEQ0234567:1":"Taster Flur:1","JEQ0234567:2":"Taster Flur:2",KEQ0345678:"Thermostat Bad","KEQ0345678:4":"Thermostat Bad:4",LEQ0456789:"Fenster Schlafzimmer","LEQ0456789:1":"Fenster Schlafzimmer:1",GEQ0567890:"Dimmer Wohnzimmer","GEQ0567890:1":"Dimmer Wohnzimmer:1","000A1B2C3D4E5F":"Schaltaktor Terrasse","000A1B2C3D4E5F:4":"Schaltaktor Terrasse:4","0011D3C9A1B2C3":"Fenster Arbeitszimmer","3014F711A0001F":"Heizung Arbeitszimmer","0001D8A9B7C6D5":"Wandtaster Diele"},Ns={"BidCos-RF":[{SENDER:"JEQ0234567:1",RECEIVER:"MEQ0123456:1",NAME:"Taster Flur - Licht Küche",DESCRIPTION:"Standardverknüpfung Taster - Schaltaktor",FLAGS:0},{SENDER:"JEQ0234567:2",RECEIVER:"GEQ0567890:1",NAME:"Taster Flur - Dimmer Wohnzimmer",DESCRIPTION:"Dimmer - ein/aus & heller/dunkler",FLAGS:0}],"HmIP-RF":[{SENDER:"0001D8A9B7C6D5:1",RECEIVER:"000A1B2C3D4E5F:4",NAME:"Wandtaster Diele - Schaltaktor Terrasse",DESCRIPTION:"",FLAGS:0}]},nl=[{interfaceName:"BidCos-RF",address:"LEQ0456789:0",datapoint:"LOWBAT",value:!0,since:Date.parse("2026-09-04T18:22:00Z")},{interfaceName:"BidCos-RF",address:"KEQ0345678:0",datapoint:"STICKY_UNREACH",value:!0,since:Date.parse("2026-09-05T06:14:00Z")}],P1={"BidCos-RF":{MEQ0123456:{"BidCoS-RF":[-52,-56],JEQ0234567:[-70,65536]},JEQ0234567:{"BidCoS-RF":[-60,-36]},KEQ0345678:{"BidCoS-RF":[-88,-91]},LEQ0456789:{"BidCoS-RF":[-112,65536]},GEQ0567890:{"BidCoS-RF":[-47,-45]}},"HmIP-RF":{}},L1=[{ADDRESS:"BidCoS-RF",TYPE:"CCU2",DESCRIPTION:"CCU2-Coprocessor",CONNECTED:!0,DEFAULT:!0,DUTY_CYCLE:1,FIRMWARE_VERSION:"2.8.6"}],Wd=[{name:"BidCos-RF",type:"BidCos-RF",protocol:"xmlrpc",host:"demo.local",port:2001,connected:!0,lastEvent:Date.parse("2026-09-05T09:59:30Z")},{name:"HmIP-RF",type:"HmIP-RF",protocol:"xmlrpc",host:"demo.local",port:2010,connected:!0,lastEvent:Date.parse("2026-09-05T09:59:12Z")},{name:"BidCos-Wired",type:"BidCos-Wired",protocol:"xmlrpc",host:"demo.local",port:2e3,connected:!1,absent:!0,error:"connect ECONNREFUSED demo.local:2000"},{name:"CUxD",type:"CUxD",protocol:"binrpc",host:"demo.local",port:8701,connected:!0,subscribing:!0,lastEvent:Date.parse("2026-09-05T09:59:58Z")},{name:"VirtualDevices",type:"VirtualDevices",protocol:"xmlrpc",host:"demo.local",port:9292,connected:!1,error:"VirtualDevices: init timed out after 10000 ms"}],rl=[{interfaceName:"BidCos-RF",address:"MEQ0123456",count:7,lastAt:Date.parse("2026-09-05T08:12:00Z")},{interfaceName:"BidCos-RF",address:"JEQ0234567",count:2,lastAt:Date.parse("2026-09-05T09:58:00Z"),unreach:!0}],M1=[{ADDRESS:"NEQ1000001-TEAM:1",TYPE:"SMOKE_DETECTOR_TEAM",PARENT:"NEQ1000001-TEAM",PARENT_TYPE:"HM-Sec-SD-2-Team",PARAMSETS:["MASTER"],VERSION:1,TEAM_TAG:"SMOKE_DETECTOR",TEAM_CHANNELS:["NEQ1000001:1"]},{ADDRESS:"NEQ1000002-TEAM:1",TYPE:"SMOKE_DETECTOR_TEAM",PARENT:"NEQ1000002-TEAM",PARENT_TYPE:"HM-Sec-SD-2-Team",PARAMSETS:["MASTER"],VERSION:1,TEAM_TAG:"SMOKE_DETECTOR",TEAM_CHANNELS:["NEQ1000002:1"]}],O1={enabled:!0,reachable:!0,names:Object.keys(Js).length},F1={host:"demo.local",interfaces:Wd.map(r=>r.name),autoDetect:!0,extraInterfaces:[],tls:!1,rega:!0,callback:{ip:"192.168.1.20",xmlrpcPort:0,binrpcPort:0},language:"de",writePaceMs:250,rpcLogFolder:""},xs={version:"3.0.0-dev.0",connection:F1,localAddresses:["192.168.1.20","10.0.0.5"],discovered:[{address:"demo.local",name:"Demo-CCU",serial:"KEQ0000001",firmware:"3.89.8",interfaces:[...zd]}]},al=[{timestamp:Date.parse("2026-09-05T09:58:41Z"),interfaceName:"BidCos-RF",method:"event",address:"JEQ0234567:1",datapoint:"PRESS_SHORT",value:!0},{timestamp:Date.parse("2026-09-05T09:58:41Z"),interfaceName:"BidCos-RF",method:"event",address:"MEQ0123456:1",datapoint:"STATE",value:!0},{timestamp:Date.parse("2026-09-05T09:59:12Z"),interfaceName:"HmIP-RF",method:"event",address:"0011D3C9A1B2C3:1",datapoint:"STATE",value:1},{timestamp:Date.parse("2026-09-05T09:59:30Z"),interfaceName:"BidCos-RF",method:"event",address:"KEQ0345678:4",datapoint:"ACTUAL_TEMPERATURE",value:21.5}],G1=[{id:1,timestamp:Date.parse("2026-09-05T09:57:02Z"),interfaceName:"BidCos-RF",method:"putParamset",params:["MEQ0123456:1","MASTER",{LOGGING:1}],ok:!0,result:"",durationMs:184},{id:2,timestamp:Date.parse("2026-09-05T09:57:44Z"),interfaceName:"HmIP-RF",method:"putParamset",params:["000A1B2C3D4E5F:4","MASTER",{PROFILE_MODE:3}],ok:!1,error:"Unknown parameter PROFILE_MODE",durationMs:902}],U1=[{name:"listDevices",help:"Returns the device descriptions of the interface.",params:[]},{name:"getParamset",help:"Reads a paramset of a device or channel.",params:[{name:"address",type:"String"},{name:"paramsetKey",type:"String",values:["MASTER","VALUES"]}]},{name:"setValue",help:"Writes one value of the VALUES paramset.",params:[{name:"address",type:"String"},{name:"valueKey",type:"String"},{name:"value",type:"Any"}]},{name:"rssiInfo",help:"Returns the RSSI matrix.",params:[]},{name:"putParamset",help:"Writes a paramset of a device or channel.",params:[{name:"address",type:"String"},{name:"paramsetKey",type:"String",values:["MASTER","VALUES"]},{name:"set",type:"Struct"}]},{name:"deleteDevice",help:"Removes a device from the interface process.",params:[{name:"address",type:"String"},{name:"flags",type:"Integer"}]},{name:"listBidcosInterfaces",help:"Returns the BidCos interfaces.",params:[]}],sl=[{interfaceName:"BidCos-RF",method:"event",address:"JEQ0234567:1",datapoint:"PRESS_SHORT",value:!0},{interfaceName:"BidCos-RF",method:"event",address:"MEQ0123456:1",datapoint:"STATE",value:!0},{interfaceName:"BidCos-RF",method:"event",address:"MEQ0123456:1",datapoint:"STATE",value:!1},{interfaceName:"BidCos-RF",method:"event",address:"KEQ0345678:4",datapoint:"ACTUAL_TEMPERATURE",value:21.7},{interfaceName:"HmIP-RF",method:"event",address:"0011D3C9A1B2C3:1",datapoint:"STATE",value:0},{interfaceName:"HmIP-RF",method:"event",address:"3014F711A0001F:1",datapoint:"LEVEL",value:.35},{interfaceName:"BidCos-RF",method:"event",address:"GEQ0567890:1",datapoint:"LEVEL",value:.9}];function Gr(r){return zd.includes(r)}const V1={"SWITCH|MASTER":{LOGGING:{TYPE:"ENUM",OPERATIONS:3,FLAGS:1,VALUE_LIST:["OFF","ON"],DEFAULT:1,TAB_ORDER:1},TRANSMIT_TRY_MAX:{TYPE:"INTEGER",OPERATIONS:3,FLAGS:1,MIN:1,MAX:10,DEFAULT:6,TAB_ORDER:2},ON_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:8590,UNIT:"s",DEFAULT:0,TAB_ORDER:3,SPECIAL:[{ID:"NOT_USED",VALUE:111600}]},STATUSINFO_MINDELAY:{TYPE:"INTEGER",OPERATIONS:3,FLAGS:1,MIN:0,MAX:15,DEFAULT:2,TAB_ORDER:4}},"SWITCH|VALUES":{STATE:{TYPE:"BOOL",OPERATIONS:7,FLAGS:1,DEFAULT:!1,TAB_ORDER:1},WORKING:{TYPE:"BOOL",OPERATIONS:5,FLAGS:1,DEFAULT:!1,TAB_ORDER:2},INHIBIT:{TYPE:"BOOL",OPERATIONS:7,FLAGS:1,DEFAULT:!1,TAB_ORDER:3}},"DIMMER|MASTER":{LOGGING:{TYPE:"ENUM",OPERATIONS:3,FLAGS:1,VALUE_LIST:["OFF","ON"],DEFAULT:1,TAB_ORDER:1},DIM_STEP:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:1,UNIT:"100%",DEFAULT:.05,TAB_ORDER:2}},"DIMMER|VALUES":{LEVEL:{TYPE:"FLOAT",OPERATIONS:7,FLAGS:1,MIN:0,MAX:1,UNIT:"100%",DEFAULT:0,TAB_ORDER:1},WORKING:{TYPE:"BOOL",OPERATIONS:5,FLAGS:1,DEFAULT:!1,TAB_ORDER:2}},"KEY|MASTER":{LONG_PRESS_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:.3,MAX:1.8,UNIT:"s",DEFAULT:.4},DBL_PRESS_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:1.5,UNIT:"s",DEFAULT:0}},"KEY|VALUES":{PRESS_SHORT:{TYPE:"ACTION",OPERATIONS:6,FLAGS:1},PRESS_LONG:{TYPE:"ACTION",OPERATIONS:6,FLAGS:1}},"SWITCH_VIRTUAL_RECEIVER|MASTER":{LOGGING:{TYPE:"ENUM",OPERATIONS:3,FLAGS:1,VALUE_LIST:["OFF","ON"],DEFAULT:1}},"SWITCH_VIRTUAL_RECEIVER|LINK":{SHORT_ON_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:8590,UNIT:"s",DEFAULT:111600,SPECIAL:[{ID:"NOT_USED",VALUE:111600}]},SHORT_ON_LEVEL:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:1,UNIT:"100%",DEFAULT:1},SHORT_ACTION_TYPE:{TYPE:"ENUM",OPERATIONS:3,FLAGS:1,VALUE_LIST:["INACTIVE","JUMP_TO_TARGET","TOGGLE_TO_COUNTER","TOGGLE_INVERSE_TO_COUNTER"],DEFAULT:1},UI_HINT:{TYPE:"STRING",OPERATIONS:3,FLAGS:2,DEFAULT:""}},"KEY_TRANSCEIVER|LINK":{LONG_PRESS_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:.3,MAX:1.8,UNIT:"s",DEFAULT:.4}},"MAINTENANCE|VALUES":{UNREACH:{TYPE:"BOOL",OPERATIONS:5,FLAGS:9,DEFAULT:!1},STICKY_UNREACH:{TYPE:"BOOL",OPERATIONS:7,FLAGS:9,DEFAULT:!1},LOWBAT:{TYPE:"BOOL",OPERATIONS:5,FLAGS:9,DEFAULT:!1}},"|MASTER":{ARR_TIMEOUT:{TYPE:"INTEGER",OPERATIONS:3,FLAGS:1,MIN:1,MAX:20,DEFAULT:10}}},B1={"SWITCH|MASTER":{LOGGING:1,TRANSMIT_TRY_MAX:6,ON_TIME:111600,STATUSINFO_MINDELAY:2},"SWITCH|VALUES":{STATE:!0,WORKING:!1,INHIBIT:!1},"DIMMER|MASTER":{LOGGING:1,DIM_STEP:.05},"DIMMER|VALUES":{LEVEL:.9,WORKING:!1},"KEY|MASTER":{LONG_PRESS_TIME:.4,DBL_PRESS_TIME:0},"SWITCH_VIRTUAL_RECEIVER|MASTER":{LOGGING:1},"SWITCH_VIRTUAL_RECEIVER|LINK":{SHORT_ON_TIME:111600,SHORT_ON_LEVEL:1,SHORT_ACTION_TYPE:1,UI_HINT:""},"KEY_TRANSCEIVER|LINK":{LONG_PRESS_TIME:.4},"MAINTENANCE|VALUES":{UNREACH:!1,STICKY_UNREACH:!1,LOWBAT:!1},"|MASTER":{ARR_TIMEOUT:10}};function Kd(r){for(const e of Object.values(Hd)){const n=e.find(a=>a.ADDRESS===r);if(n)return n.PARENT===void 0||n.PARENT===""?"":n.TYPE}return""}function z1(r,e){return V1[`${Kd(r)}|${e}`]??{}}function H1(r,e){return B1[`${Kd(r)}|${e}`]??{}}const W1={"data/manifest.json":{generatedAt:"2026-09-05T00:00:00.000Z",sources:[{name:"openccu-data",version:"2026.7.2"}],receiverTypes:["SWITCH_VIRTUAL_RECEIVER"],languages:["de","en"]},"data/receiver-type-aliases.json":{},"data/master-metadata.json":{SWITCH:{channelType:"SWITCH",parameterOrder:["TRANSMIT_TRY_MAX","LOGGING","ON_TIME"],conditionalVisibility:[{trigger:"LOGGING",triggerValue:1,show:["STATUSINFO_MINDELAY"]}],optionPresets:{ON_TIME:"duration"}}},"data/option-presets.json":{duration:{id:"duration",allowCustom:!0,presets:[{label:"5s",value:5},{label:"30s",value:30},{labelKey:"not_used",value:111600}]}},"data/cross-validations.json":[{id:"onTime",rule:"lte",paramA:"STATUSINFO_MINDELAY",paramB:"TRANSMIT_TRY_MAX",errorKey:"delay_max"}],"data/translations/de.json":{language:"de",channelTypes:{SWITCH:"Schaltaktor"},deviceModels:{},parameters:{LOGGING:"Statusmeldungen","SWITCH|ON_TIME":"Einschaltdauer"},parameterValues:{"LOGGING|ON":"an","LOGGING|OFF":"aus"},parameterHelp:{LOGGING:"<b>Sendet</b> zyklisch den Status."},uiLabels:{not_used:"nicht benutzt",delay_max:"Verzögerung größer als die Sendeversuche"}},"data/translations/en.json":{language:"en",channelTypes:{SWITCH:"Switch actuator"},deviceModels:{},parameters:{LOGGING:"Status messages"},parameterValues:{},parameterHelp:{},uiLabels:{not_used:"not used",delay_max:"delay larger than the transmit tries"}},"data/profiles/SWITCH_VIRTUAL_RECEIVER.json":{receiverType:"SWITCH_VIRTUAL_RECEIVER",senders:{KEY_TRANSCEIVER:[{id:1,key:"switch_on",name:{de:"Einschalten",en:"Switch on"},description:{de:"Schaltet ein",en:"Switches on"},params:{SHORT_ACTION_TYPE:{kind:"fixed",value:1},SHORT_ON_LEVEL:{kind:"fixed",value:1},SHORT_ON_TIME:{kind:"fixed",value:111600}}},{id:2,key:"staircase",name:{de:"Treppenhauslicht",en:"Staircase light"},description:{de:"Schaltet für eine Zeit ein",en:"Switches on for a while"},params:{SHORT_ACTION_TYPE:{kind:"fixed",value:1},SHORT_ON_LEVEL:{kind:"fixed",value:1},SHORT_ON_TIME:{kind:"range",min:0,max:8590,default:60}}}]},senderMetadata:{KEY_TRANSCEIVER:{parameterOrder:["SHORT_ACTION_TYPE","SHORT_ON_LEVEL","SHORT_ON_TIME"],optionPresets:{SHORT_ON_TIME:"duration"}}}},"data/device-icons.json":{}};class Yd{calls=[];#e=new Map;#r=new Map;#n=new Set;#t;constructor(e={}){this.#t=e.connected??!0,e.demo===!0&&this.useDemoData()}get connected(){return this.#t}respond(e,n){return this.#e.set(e,n),this}result(e,n){return this.respond(e,(()=>n))}fail(e,n){const a=typeof n=="string"?{message:n,kind:"internal"}:n;return this.respond(e,(()=>{throw new zt(a)}))}emit(e,n){const a=this.#r.get(e);if(a)for(const s of[...a])s(n)}setConnected(e){if(this.#t!==e){this.#t=e;for(const n of[...this.#n])n(e)}}countOf(e){return this.calls.filter(n=>n.method===e).length}lastCall(e){for(let n=this.calls.length-1;n>=0;n-=1){const a=this.calls[n];if(a&&a.method===e)return a.params}}reset(){this.calls.length=0}async request(e,...n){this.calls.push({method:e,params:n});const a=this.#e.get(e);if(!a)throw new zt({message:`no mock handler for ${e}`,kind:"internal"});return await a(...n)}on(e,n){const a=this.#r.get(e)??new Set;return a.add(n),this.#r.set(e,a),()=>{a.delete(n)}}onConnectionChange(e){return this.#n.add(e),()=>{this.#n.delete(e)}}listenerCount(e){return this.#r.get(e)?.size??0}useDemoData(){this.result("config.get",xs),this.respond("config.set",n=>({...xs,connection:n})),this.result("config.discover",xs.discovered),this.result("config.clearCaches",null),this.result("interfaces.list",Wd),this.result("interfaces.reconnect",null),this.result("rega.state",O1),this.respond("devices.list",n=>Gr(n)?Hd[n]:[]),this.result("names.get",Js),this.respond("names.set",n=>{const a={...Js};for(const s of n)a[s.address]=s.name;return a}),this.respond("links.list",n=>Gr(n)?Ns[n]:[]),this.respond("rssi.get",n=>Gr(n)?P1[n]:{}),this.result("bidcos.interfaces",L1),this.respond("serviceMessages.list",n=>n===void 0?nl:nl.filter(a=>a.interfaceName===n)),this.result("serviceMessages.ack",null),this.result("rega.confirmInbox",[]),this.respond("teams.list",n=>n==="BidCos-RF"?M1:[]),this.result("teams.set",null),this.respond("unreach.list",n=>n===void 0?rl:rl.filter(a=>a.interfaceName===n)),this.result("unreach.reset",null);const e=[];return this.respond("linkTemplates.list",n=>n===void 0?e:e.filter(a=>a.identity===n)),this.respond("linkTemplates.save",n=>{const a=e.findIndex(s=>s.name===n.name);return a===-1?e.push(n):e[a]=n,e}),this.respond("linkTemplates.remove",n=>{const a=e.findIndex(s=>s.name===n);return a!==-1&&e.splice(a,1),e}),this.respond("events.recent",n=>n===void 0?al:al.filter(a=>a.interfaceName===n)),this.result("events.clear",null),this.result("writeLog.list",G1),this.result("writeLog.clear",null),this.result("rpc.methods",U1),this.respond("rpc.call",(n,a,s)=>({method:a,params:s})),this.respond("paramset.description",(n,a,s)=>z1(a,s)),this.respond("paramset.get",(n,a,s)=>H1(a,s)),this.respond("paramset.put",(n,a,s,i)=>a.map(o=>({interfaceName:n,address:o,paramset:s,sent:i,ok:!0,problems:[],durationMs:42}))),this.respond("paramset.putLink",(n,a,s)=>a.map(i=>({interfaceName:n,address:i.receiver,peer:i.sender,paramset:"LINK",sent:s.receiverToSender??s.senderToReceiver??{},ok:!0,problems:[],durationMs:42}))),this.result("value.set",null),this.result("devices.installMode.set",null),this.result("devices.installMode.get",0),this.respond("devices.repairConfig",(n,a,s)=>({interfaceName:n,address:a,configPendingBefore:!0,configPendingAfter:s?.dryRun===!0,channels:[{address:`${a}:1`,unknown:[],corrected:[{parameter:"TRANSMIT_TRY_MAX",stored:62,replacement:10,reason:"above MAX 10"}],write:{interfaceName:n,address:`${a}:1`,paramset:"MASTER",sent:{TRANSMIT_TRY_MAX:10},ok:!0,problems:[]}}],unrepairable:[],...s?.bidcosRecovery===void 0||s.bidcosRecovery==="none"?{}:{bidcosRecovery:s.bidcosRecovery}})),this.result("links.add",null),this.result("links.remove",null),this.result("links.info.set",null),this.result("links.activate",null),this.respond("links.info.get",(n,a,s)=>(Gr(n)?Ns[n]:[]).find(o=>o.SENDER===a&&o.RECEIVER===s)??{SENDER:a,RECEIVER:s}),this.respond("links.peers",(n,a)=>(Gr(n)?Ns[n]:[]).filter(i=>i.SENDER===a||i.RECEIVER===a).map(i=>i.SENDER===a?i.RECEIVER:i.SENDER)),this.respond("data.file",n=>{const a=W1[n];if(a===void 0)throw new zt({message:`no demo data file ${n}`,kind:"config"});return a}),this.result("session.info",null),this}}const K1=1;class Y1{url;#e;#r;#n;#t;#a;#s=new Map;#i=new Map;#o=new Set;#l=new Set;#u;#d=!1;#v=!1;#f=1;#h;#c;constructor(e){this.url=e.url,this.#e=e.factory??(n=>new WebSocket(n)),this.#r=e.requestTimeoutMs??3e4,this.#n=e.reconnect??!0,this.#t=e.minBackoffMs??500,this.#a=e.maxBackoffMs??15e3,this.#h=this.#t,(e.autoConnect??!0)&&this.connect()}get connected(){return this.#d}get backoffMs(){return this.#h}connect(){if(this.#v=!1,this.#u)return;const e=this.#e(this.url);this.#u=e,e.onopen=()=>{this.#h=this.#t,this.#p(!0);for(const n of[...this.#l])this.#l.delete(n),n.resolve()},e.onmessage=n=>{this.#_(n.data)},e.onerror=()=>{},e.onclose=()=>{this.#b()}}close(){this.#v=!0,this.#c!==void 0&&(clearTimeout(this.#c),this.#c=void 0);const e=this.#u;this.#u=void 0,e?.close(),this.#S("transport closed"),this.#p(!1)}async request(e,...n){await this.#m(e);const a=this.#u;if(!a||a.readyState!==K1)throw new zt({message:`not connected to ${this.url}`,kind:"connection"});const s=this.#f;this.#f+=1;const i={t:"req",id:s,m:e,p:n};return new Promise((o,l)=>{const d={method:e,resolve:o,reject:l,timer:void 0};d.timer=setTimeout(()=>{this.#s.delete(s),l(new zt({message:`${e} timed out after ${this.#r} ms`,kind:"connection"}))},this.#r),this.#s.set(s,d);try{a.send(JSON.stringify(i))}catch(h){this.#g(s,void 0,{message:h instanceof Error?h.message:String(h),kind:"connection"})}})}on(e,n){const a=this.#i.get(e)??new Set;return a.add(n),this.#i.set(e,a),()=>{a.delete(n)}}onConnectionChange(e){return this.#o.add(e),()=>{this.#o.delete(e)}}#m(e){return this.#d?Promise.resolve():this.#v?Promise.reject(new zt({message:"transport closed",kind:"connection"})):new Promise((n,a)=>{const s={resolve:()=>{clearTimeout(i),n()},reject:o=>{clearTimeout(i),a(o)}},i=setTimeout(()=>{this.#l.delete(s),a(new zt({message:`${e} gave up waiting for ${this.url}`,kind:"connection"}))},this.#r);this.#l.add(s)})}#_(e){if(typeof e!="string")return;let n;try{n=JSON.parse(e)}catch{return}if(typeof n!="object"||n===null)return;const a=n;switch(a.t){case"res":this.#g(a.id,a.r,void 0);break;case"err":this.#g(a.id,void 0,Zl(a.e)?a.e:{message:"malformed error frame",kind:"internal"});break;case"ev":{const s=this.#i.get(a.n);if(s)for(const i of[...s])i(a.d);break}}}#g(e,n,a){const s=this.#s.get(e);s&&(this.#s.delete(e),s.timer!==void 0&&clearTimeout(s.timer),a?s.reject(new zt(a)):s.resolve(n))}#b(){if(this.#u=void 0,this.#p(!1),this.#S(`connection to ${this.url} was lost`),this.#v||!this.#n)return;const e=this.#h;this.#h=Math.min(this.#h*2,this.#a),this.#c=setTimeout(()=>{this.#c=void 0,this.connect()},e)}#S(e){for(const[n,a]of[...this.#s])this.#s.delete(n),a.timer!==void 0&&clearTimeout(a.timer),a.reject(new zt({message:e,kind:"connection"}));for(const n of[...this.#l])this.#l.delete(n),n.reject(new zt({message:e,kind:"connection"}))}#p(e){if(this.#d!==e){this.#d=e;for(const n of[...this.#o])n(e)}}}const j1={},q1="__HMM_TRANSPORT__";function $1(r,e="api"){const n=r.protocol==="https:"?"wss:":"ws:",a=r.pathname.replace(/[^/]*$/,"");return`${n}//${r.host}${a}${e}`}function X1(r){return j1?.VITE_HMM_DEMO==="true"?!0:r?new URLSearchParams(r.search).has("demo"):!1}function Q1(r={}){const n=(r.host??globalThis)[q1];if(Z1(n))return n;const a=r.location??(typeof window>"u"?void 0:window.location);if(r.demo===!0||X1(a))return new Yd({demo:!0});if(!a)throw new Error("createTransport needs a location when there is no window and no injected transport");return new Y1({url:$1(a,r.path??"api")})}function Z1(r){if(typeof r!="object"||r===null)return!1;const e=r;return typeof e.request=="function"&&typeof e.on=="function"&&typeof e.onConnectionChange=="function"}function J1(r,e={}){const n=e.intervalMs??2500,a=e.now??(()=>Date.now());let s=0;const i=setInterval(()=>{const o=sl[s%sl.length];if(s+=1,!o)return;const l={...o,timestamp:a()};r.emit("rpc.event",l)},n);return()=>{clearInterval(i)}}const ei=Q1(),jd=N1(ei);ei instanceof Yd&&J1(ei);const qd=document.querySelector("#app");if(!qd)throw new Error("no #app element to mount into");_v(r1,{target:qd,props:{stores:jd}});jd.start();
13
- //# sourceMappingURL=index-lB-HxsKR.js.map