homebridge-config-ui-x 5.11.2-beta.0 → 5.11.2-beta.10

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 (249) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/dist/core/auth/auth.controller.d.ts +4 -0
  3. package/dist/core/config/config.interfaces.d.ts +14 -0
  4. package/dist/core/config/config.service.d.ts +6 -0
  5. package/dist/core/config/config.service.js +8 -0
  6. package/dist/core/config/config.service.js.map +1 -1
  7. package/dist/core/config/config.startup.js +48 -17
  8. package/dist/core/config/config.startup.js.map +1 -1
  9. package/dist/core/feature-flags/feature-flags.registry.js +5 -0
  10. package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
  11. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +1 -0
  12. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  13. package/dist/core/spa/spa-html.service.d.ts +5 -0
  14. package/dist/core/spa/spa-html.service.js +32 -0
  15. package/dist/core/spa/spa-html.service.js.map +1 -0
  16. package/dist/core/spa/spa.filter.d.ts +3 -0
  17. package/dist/core/spa/spa.filter.js +22 -2
  18. package/dist/core/spa/spa.filter.js.map +1 -1
  19. package/dist/core/ssl/ssl-cert-generator.service.d.ts +15 -0
  20. package/dist/core/ssl/ssl-cert-generator.service.js +125 -0
  21. package/dist/core/ssl/ssl-cert-generator.service.js.map +1 -0
  22. package/dist/globalDefaults.js +3 -0
  23. package/dist/globalDefaults.js.map +1 -1
  24. package/dist/main.js +18 -4
  25. package/dist/main.js.map +1 -1
  26. package/dist/modules/accessories/accessories.controller.d.ts +1 -1
  27. package/dist/modules/accessories/accessories.interfaces.d.ts +94 -0
  28. package/dist/modules/accessories/accessories.interfaces.js +2 -0
  29. package/dist/modules/accessories/accessories.interfaces.js.map +1 -0
  30. package/dist/modules/accessories/accessories.module.js +2 -0
  31. package/dist/modules/accessories/accessories.module.js.map +1 -1
  32. package/dist/modules/accessories/accessories.service.d.ts +21 -3
  33. package/dist/modules/accessories/accessories.service.js +280 -17
  34. package/dist/modules/accessories/accessories.service.js.map +1 -1
  35. package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +9 -0
  36. package/dist/modules/config-editor/config-editor.controller.d.ts +4 -0
  37. package/dist/modules/config-editor/config-editor.controller.js +64 -0
  38. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  39. package/dist/modules/config-editor/config-editor.service.d.ts +6 -1
  40. package/dist/modules/config-editor/config-editor.service.js +45 -1
  41. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  42. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
  43. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  44. package/dist/modules/plugins/plugins.module.js +1 -1
  45. package/dist/modules/plugins/plugins.service.js +17 -2
  46. package/dist/modules/plugins/plugins.service.js.map +1 -1
  47. package/dist/modules/server/server.controller.d.ts +50 -0
  48. package/dist/modules/server/server.controller.js +201 -2
  49. package/dist/modules/server/server.controller.js.map +1 -1
  50. package/dist/modules/server/server.service.d.ts +48 -0
  51. package/dist/modules/server/server.service.js +502 -14
  52. package/dist/modules/server/server.service.js.map +1 -1
  53. package/dist/modules/status/status.gateway.d.ts +2 -0
  54. package/dist/modules/status/status.interfaces.d.ts +11 -0
  55. package/dist/modules/status/status.service.d.ts +4 -1
  56. package/dist/modules/status/status.service.js +21 -2
  57. package/dist/modules/status/status.service.js.map +1 -1
  58. package/docs/matter-todo.md +15 -0
  59. package/docs/ssl-upload-pr.md +103 -0
  60. package/package.json +7 -5
  61. package/public/3rdpartylicenses.txt +595 -621
  62. package/public/assets/matter.svg +8 -0
  63. package/public/assets/plugin-ui-utils/ui.js +3 -0
  64. package/public/assets/plugin-ui-utils/ui.js.map +1 -1
  65. package/public/chunk-2QQRXUEC.js +1 -0
  66. package/public/{chunk-ZMKPSUXD.js → chunk-2QV76P4M.js} +1 -1
  67. package/public/chunk-4IA42PIV.js +4 -0
  68. package/public/chunk-4UVYLGCZ.js +1 -0
  69. package/public/chunk-52X3LPJH.js +1 -0
  70. package/public/chunk-5YAZPY5D.js +1 -0
  71. package/public/chunk-64VYN5ZW.js +1 -0
  72. package/public/chunk-6DLZEENG.js +1 -0
  73. package/public/chunk-77S5CL3V.js +1 -0
  74. package/public/chunk-7BMHIIBT.js +1 -0
  75. package/public/chunk-7WKZ7EMI.js +1 -0
  76. package/public/chunk-7WUBDTA6.js +1 -0
  77. package/public/chunk-AK47Q2IX.js +3 -0
  78. package/public/chunk-AKPNXV2T.js +3 -0
  79. package/public/chunk-B46EWHBD.js +1 -0
  80. package/public/chunk-B4AJQJMI.js +1 -0
  81. package/public/chunk-B6YCAPBD.js +1 -0
  82. package/public/chunk-B75B723G.js +1 -0
  83. package/public/chunk-BDK6N6VE.js +1 -0
  84. package/public/{chunk-KI6BE77G.js → chunk-BMOLDRJ3.js} +1 -1
  85. package/public/chunk-BXRCPOIK.js +1 -0
  86. package/public/chunk-BZ3XB6O4.js +1 -0
  87. package/public/chunk-C25O3HDQ.js +1 -0
  88. package/public/chunk-CLZZPSYM.js +1 -0
  89. package/public/chunk-CMERG3AC.js +1 -0
  90. package/public/chunk-CPT52C2F.js +1 -0
  91. package/public/chunk-E5CXD5LE.js +1 -0
  92. package/public/chunk-ETWBSGPI.js +1 -0
  93. package/public/chunk-FLOZSDNZ.js +5 -0
  94. package/public/chunk-GJG6QZ7P.js +1 -0
  95. package/public/chunk-GTH5BSXR.js +2 -0
  96. package/public/chunk-GU5F3H4I.js +1 -0
  97. package/public/chunk-H2Z7V5LU.js +8 -0
  98. package/public/chunk-H4WASUXW.js +1 -0
  99. package/public/{chunk-OMFNURQZ.js → chunk-H7F7H5MW.js} +1 -1
  100. package/public/chunk-I3JZLSHE.js +5 -0
  101. package/public/chunk-IBUR2RIO.js +1 -0
  102. package/public/chunk-IDJSTIFL.js +1 -0
  103. package/public/chunk-IP6FLYVL.js +1 -0
  104. package/public/chunk-IPI77WYV.js +1 -0
  105. package/public/chunk-IUNQ5PHM.js +19 -0
  106. package/public/chunk-J2DDS6ED.js +1 -0
  107. package/public/chunk-J6ND4K5Q.js +1 -0
  108. package/public/chunk-JUQRWAIR.js +1 -0
  109. package/public/chunk-JWUEJV6S.js +1 -0
  110. package/public/chunk-K4H7M56K.js +1 -0
  111. package/public/chunk-KFPYUDGJ.js +1 -0
  112. package/public/chunk-KIRW7NMH.js +1 -0
  113. package/public/chunk-KSF6BBTZ.js +1 -0
  114. package/public/chunk-KTJDR6WA.js +1 -0
  115. package/public/chunk-KWACPVX5.js +1 -0
  116. package/public/chunk-L3YXLLPI.js +1 -0
  117. package/public/chunk-LE5B7JWB.js +1 -0
  118. package/public/chunk-LKJRMUOE.js +1 -0
  119. package/public/chunk-LVQWSVHA.js +1 -0
  120. package/public/chunk-LZ7S7WKH.js +1 -0
  121. package/public/chunk-M6VFUZCW.js +4 -0
  122. package/public/chunk-MIE7YXOK.js +1 -0
  123. package/public/chunk-MJP4XVUI.js +1 -0
  124. package/public/chunk-N67YCG3Y.js +1 -0
  125. package/public/chunk-NCFDA3W4.js +1 -0
  126. package/public/chunk-NGLJQOJ6.js +1 -0
  127. package/public/{chunk-BKCIVF4W.js → chunk-NJRPICYW.js} +52 -2
  128. package/public/chunk-NJTYJMXX.js +1 -0
  129. package/public/chunk-NMDAPSGJ.js +1 -0
  130. package/public/chunk-OFJZSQ3B.js +1 -0
  131. package/public/chunk-OG2B4MZN.js +1 -0
  132. package/public/chunk-OQE3MI4U.js +16 -0
  133. package/public/chunk-OQMG62H7.js +1 -0
  134. package/public/chunk-PAZUAFSZ.js +1 -0
  135. package/public/chunk-PEUDPLH6.js +1 -0
  136. package/public/chunk-QE7VI3JB.js +1 -0
  137. package/public/chunk-QES44GQE.js +1 -0
  138. package/public/chunk-QOXI7NTO.js +2 -0
  139. package/public/chunk-R454K5O2.js +1 -0
  140. package/public/chunk-R6MQZ2DW.js +1 -0
  141. package/public/chunk-RESZLSD7.js +1 -0
  142. package/public/chunk-RGWFM4OK.js +1 -0
  143. package/public/chunk-RI4GLH22.js +1 -0
  144. package/public/chunk-RP5JPYDI.js +1 -0
  145. package/public/chunk-RQ6OKEXK.js +1 -0
  146. package/public/chunk-RVWZNTDJ.js +1 -0
  147. package/public/chunk-RXDY2NMJ.js +1 -0
  148. package/public/chunk-SDRRZFEQ.js +1 -0
  149. package/public/chunk-SQ4NHBJT.js +1 -0
  150. package/public/chunk-SYC4YH3X.js +1 -0
  151. package/public/chunk-SZNR4VFV.js +35 -0
  152. package/public/chunk-TCUQZ3QO.js +1 -0
  153. package/public/chunk-TLHI6ZOI.js +1 -0
  154. package/public/chunk-TQBVDY26.js +1 -0
  155. package/public/chunk-TSUYUZ5M.js +19 -0
  156. package/public/chunk-U24HWDVU.js +1 -0
  157. package/public/chunk-U2NM4L2D.js +1 -0
  158. package/public/chunk-UG6TAF6R.js +1 -0
  159. package/public/chunk-ULDCVSG3.js +1 -0
  160. package/public/chunk-UVCGDMEI.js +1 -0
  161. package/public/chunk-UWYTPKKV.js +1 -0
  162. package/public/chunk-VHTW6IMB.js +1 -0
  163. package/public/chunk-VKR3GG6K.js +1 -0
  164. package/public/chunk-VX4RXOTH.js +4 -0
  165. package/public/chunk-W55SP3LJ.js +1 -0
  166. package/public/chunk-WP3AD6W5.js +1 -0
  167. package/public/chunk-WYRNNJKF.js +2 -0
  168. package/public/chunk-XNPO4LCF.js +12 -0
  169. package/public/chunk-XPFMPBEG.js +1 -0
  170. package/public/chunk-Y3PXWRYQ.js +1 -0
  171. package/public/chunk-Y5WP66WK.js +1 -0
  172. package/public/chunk-YCQCWGBG.js +1 -0
  173. package/public/chunk-YIARJQML.js +68 -0
  174. package/public/chunk-ZCGZM7LU.js +1 -0
  175. package/public/chunk-ZGIZ2UDW.js +1 -0
  176. package/public/chunk-ZPQKHKVV.js +1 -0
  177. package/public/index.html +2 -2
  178. package/public/main-MRK2PA32.js +1 -0
  179. package/public/media/matter-P563JGDL.svg +8 -0
  180. package/public/polyfills-34U4WL3Z.js +1 -0
  181. package/public/styles-CT2LPGES.css +1 -0
  182. package/scripts/extract-plugin-alias.js +53 -2
  183. package/public/chunk-2MBSCAEN.js +0 -1
  184. package/public/chunk-2OY6NRQ2.js +0 -1
  185. package/public/chunk-3CIHTC4C.js +0 -4
  186. package/public/chunk-3F6KNL45.js +0 -5
  187. package/public/chunk-45AMV7GC.js +0 -1
  188. package/public/chunk-4QAKCS6T.js +0 -2
  189. package/public/chunk-53APAGU2.js +0 -1
  190. package/public/chunk-5GRM2PNI.js +0 -8
  191. package/public/chunk-5RBYETU6.js +0 -1
  192. package/public/chunk-63ZHBCYL.js +0 -1
  193. package/public/chunk-75KR2TK6.js +0 -1
  194. package/public/chunk-7C3HCXPY.js +0 -1
  195. package/public/chunk-ADWZU2CD.js +0 -1
  196. package/public/chunk-AGFUCJ4I.js +0 -1
  197. package/public/chunk-AP63CTUJ.js +0 -1
  198. package/public/chunk-ASQ7SLVU.js +0 -1
  199. package/public/chunk-B5IRXYUK.js +0 -1
  200. package/public/chunk-B6MBMYJR.js +0 -1
  201. package/public/chunk-BA3ZJSHX.js +0 -1
  202. package/public/chunk-BON2K2BD.js +0 -2
  203. package/public/chunk-BTRAFMFJ.js +0 -1
  204. package/public/chunk-CGB4OZUM.js +0 -1
  205. package/public/chunk-CZMNTFTZ.js +0 -1
  206. package/public/chunk-ENRKPVCU.js +0 -1
  207. package/public/chunk-FJ64VEKT.js +0 -1
  208. package/public/chunk-FVSPI6WZ.js +0 -1
  209. package/public/chunk-GD4FWLGU.js +0 -1
  210. package/public/chunk-GI2T24F7.js +0 -19
  211. package/public/chunk-HF7LMG5C.js +0 -1
  212. package/public/chunk-IEREFOJT.js +0 -1
  213. package/public/chunk-J6UFVHN7.js +0 -1
  214. package/public/chunk-J7B3DZYL.js +0 -4
  215. package/public/chunk-JLGJIZC5.js +0 -1
  216. package/public/chunk-JMSBVQNJ.js +0 -5
  217. package/public/chunk-K3VS2NWI.js +0 -1
  218. package/public/chunk-LVTTSKNS.js +0 -1
  219. package/public/chunk-MMBLECEN.js +0 -1
  220. package/public/chunk-N7HF55UD.js +0 -1
  221. package/public/chunk-OOM2PIRM.js +0 -5
  222. package/public/chunk-P2ZER7XV.js +0 -1
  223. package/public/chunk-PANNQUQM.js +0 -1
  224. package/public/chunk-PDM23V5R.js +0 -16
  225. package/public/chunk-PJLOMG3N.js +0 -1
  226. package/public/chunk-Q4BZWR2T.js +0 -1
  227. package/public/chunk-QT4QE33F.js +0 -1
  228. package/public/chunk-QXD4RXA4.js +0 -1
  229. package/public/chunk-R5GHRFHN.js +0 -8
  230. package/public/chunk-R7Q4CXAE.js +0 -1
  231. package/public/chunk-RC65KEKI.js +0 -1
  232. package/public/chunk-SFKXXEEZ.js +0 -1
  233. package/public/chunk-T4KYKLVF.js +0 -1
  234. package/public/chunk-TFGG6WBP.js +0 -1
  235. package/public/chunk-TFYHRAIG.js +0 -1
  236. package/public/chunk-TTQJSFJE.js +0 -1
  237. package/public/chunk-TVYI3MML.js +0 -1
  238. package/public/chunk-UB6R5KO2.js +0 -1
  239. package/public/chunk-UYSOWFVB.js +0 -1
  240. package/public/chunk-WNFHUAE6.js +0 -50
  241. package/public/chunk-WVVHIARN.js +0 -3
  242. package/public/chunk-WWWTY6YT.js +0 -1
  243. package/public/chunk-XDFBUXFD.js +0 -1
  244. package/public/chunk-YD2FH5MB.js +0 -40
  245. package/public/chunk-YQLNC2BH.js +0 -4
  246. package/public/chunk-ZXUIFQS4.js +0 -51
  247. package/public/main-VXD7XYWW.js +0 -1
  248. package/public/polyfills-5KWHJ7II.js +0 -2
  249. package/public/styles-7EFV5QBG.css +0 -1
@@ -0,0 +1 @@
1
+ import{e}from"./chunk-B4AJQJMI.js";var t=e((s,i)=>{i.exports={"accessories.accessory_info":"Accessory Information","accessories.bridge_ip":"Bridge IP","accessories.bridge_port":"Bridge Port","accessories.button_add_room":"Aggiungi stanza","accessories.button_hidden_hide":"Hide Hidden","accessories.button_hidden_show":"Show Hidden","accessories.button_remove":"Remove From Cache","accessories.control.adaptive_lighting":"Adaptive Lighting","accessories.control.adaptive_lighting_note":"Some plugins may automatically re-enable Adaptive Lighting when changing this.","accessories.control.auto":"Automatico","accessories.control.away":"Assente","accessories.control.battery_charged":"Charged","accessories.control.battery_charging":"In ricarica","accessories.control.battery_low":"Battery Low","accessories.control.battery_notchargeable":"Non ricaricabile","accessories.control.battery_notcharging":"Non in carica","accessories.control.brightness":"Luminosit\xE0","accessories.control.cleaning":"Cleaning","accessories.control.closed":"Chiuso","accessories.control.closing":"In chiusura","accessories.control.color_temperature":"Color Temperature","accessories.control.cool":"Freddo","accessories.control.current":"Current","accessories.control.default_room":"Stanza predefinita","accessories.control.dehumidify":"Dehumidify","accessories.control.detected":"Detected","accessories.control.direction_control":"Direction Control","accessories.control.drag_here":"Trascina qui","accessories.control.filter_level":"Filter Life","accessories.control.heat":"Caldo","accessories.control.home":"Casa","accessories.control.hue":"Hue","accessories.control.humidify":"Humidify","accessories.control.idle":"Idle","accessories.control.input":"Input List","accessories.control.input_control":"Input Control","accessories.control.jammed":"Inceppato","accessories.control.lock_auto":"Auto Lock Timer","accessories.control.locked":"Chiuso","accessories.control.manual":"Manual","accessories.control.media_control":"Media Control","accessories.control.microphone":"Microphone","accessories.control.mode":"Mode","accessories.control.mode_control":"Mode Control","accessories.control.mute":"Muto","accessories.control.mute_control":"Mute Control","accessories.control.night":"Notte","accessories.control.no_data":"No Data","accessories.control.not_detected":"Not Detected","accessories.control.not_mute":"Acceso","accessories.control.obstructed":"Obstructed","accessories.control.off":"Spento","accessories.control.on":"Acceso","accessories.control.open":"Aperto","accessories.control.opening":"In apertura","accessories.control.pause":"Pause","accessories.control.paused":"Paused","accessories.control.play":"Play","accessories.control.replace":"Replace","accessories.control.rotation_c_clockwise":"Counter Clockwise","accessories.control.rotation_clockwise":"Clockwise","accessories.control.rotation_direction":"Rotation Direction","accessories.control.rotation_speed":"Velocit\xE0 di rotazione","accessories.control.running":"In esecuzione","accessories.control.saturation":"Saturation","accessories.control.set_duration":"Set Duration","accessories.control.speaker":"Speaker","accessories.control.speaker_volume":"Volume","accessories.control.state_control":"State Control","accessories.control.stateless":"Stateless","accessories.control.stop":"Stop","accessories.control.stopped":"Fermato","accessories.control.target":"Obiettivo","accessories.control.target_auto":"Auto Target","accessories.control.threshold_auto":"Auto Threshold","accessories.control.triggered":"Azionato","accessories.control.unknown":"Sconosciuto","accessories.control.unlocked":"Sbloccato","accessories.control_disabled":"Controllo degli accessori disabilitato","accessories.core.air_purifier":"Air Purifier","accessories.core.air_quality_sensor":"Air Quality Sensor","accessories.core.battery":"Battery","accessories.core.carbon_dioxide_sensor":"Carbon Dioxide Sensor","accessories.core.carbon_monoxide_sensor":"Carbon Monoxide Sensor","accessories.core.contact_sensor":"Contact Sensor","accessories.core.cooler":"Cooler","accessories.core.dehumidifier":"Dehumidifier","accessories.core.door":"Door","accessories.core.doorbell":"Doorbell","accessories.core.fan":"Fan","accessories.core.faucet_valve":"Valve","accessories.core.filter_maintenance":"Filter Maintenance","accessories.core.garage_door_opener":"Garage Door Opener","accessories.core.generic_valve":"Valve","accessories.core.heater":"Heater","accessories.core.heater_cooler":"Heater Cooler","accessories.core.humidifier":"Humidifier","accessories.core.humidifier_dehumidifier":"Humidifier Dehumidifier","accessories.core.humidity_sensor":"Humidity Sensor","accessories.core.irrigation_system":"Irrigation System","accessories.core.irrigation_valve":"Valve","accessories.core.leak_sensor":"Leak Sensor","accessories.core.light_sensor":"Light Sensor","accessories.core.lightbulb":"Lightbulb","accessories.core.lock_mechanism":"Lock Mechanism","accessories.core.microphone":"Microphone","accessories.core.motion_sensor":"Motion Sensor","accessories.core.occupancy_sensor":"Occupancy Sensor","accessories.core.on_off_light":"Lightbulb","accessories.core.on_off_light_switch":"Switch","accessories.core.on_off_plug_in_unit":"Outlet","accessories.core.outlet":"Outlet","accessories.core.robot_vacuum":"Robot Vacuum","accessories.core.robotic_vacuum_cleaner":"Robot Vacuum","accessories.core.security_system":"Security System","accessories.core.shower_head_valve":"Valve","accessories.core.smoke_sensor":"Smoke Sensor","accessories.core.speaker":"Speaker","accessories.core.stateless_programmable_switch":"Stateless Programmable Switch","accessories.core.switch":"Switch","accessories.core.television":"Television","accessories.core.temperature_sensor":"Temperature Sensor","accessories.core.thermostat":"Thermostat","accessories.core.valve":"Valve","accessories.core.washing_machine":"Washing Machine","accessories.core.window":"Window","accessories.core.window_covering":"Window Covering","accessories.custom_name":"Custom Name","accessories.custom_type":"Custom Type","accessories.hide_this_accessory":"Nascondi accessorio","accessories.message_must_use_insecure_mode":"Per controllare i tuoi accessori devi avviare Homebridge in modalit\xE0 non sicura {{ link }}.","accessories.name":"Nome","accessories.no_plugins.message_1":"Accessories are created and managed by Homebridge plugins.","accessories.no_plugins.message_2":"You can find and install plugins from the plugins page.","accessories.no_plugins.title":"No Plugins Installed","accessories.only_ui":"These settings are only for the Homebridge UI and <strong>will not be reflected in HomeKit</strong>.","accessories.only_ui_2":"These options are unique to your Homebridge UI account.","accessories.plugin":"Plugin","accessories.room_name":"Nome stanza","accessories.service":"Service","accessories.service_info":"Service Information","accessories.settings_link":"You can access the Homebridge Settings at any time from the cog icon in the side menu.","accessories.show_on_dashboard":"Mostra widget nella dashboard","accessories.support.acc_1":"Accessories may take a few minutes to appear on this screen after a Homebridge restart or after being added. If accessories are consistently missing, try changing the mDNS advertiser in the settings.","accessories.support.acc_2":"You can change the type of certain accessories in the UI (like showing a switch as a heater). You can do this by clicking on the three bars that appear in the top-right corner of the accessory tile as you hover over it. A 'Custom Type' option will appear if the accessory supports this. Note this will not change the accessory in HomeKit (only a plugin can do this).","accessories.support.rooms_1":"Le stanze create qui non appariranno in HomeKit, servono solo per organizzare gli accessori in Homebridge UI.","accessories.support.rooms_2":"To rename an existing room, create a new room with the desired name and move the accessories to the new room.","accessories.support.rooms_3":"To delete an existing room, move all its accessories to another room and refresh the page.","accessories.title_rooms":"Rooms","backup.backup_delete_failed":"Backup deletion failed. See logs for details.","backup.backup_download_failed":"Scaricamento del backup fallito","backup.backup_exceeds_max_size":"Backup ({{ backupSize }}) exceeds maximum restore file size of {{ maxBackupSizeText }}","backup.backup_help_one":"Scarica un archivio di backup del tuo ambiente Homebridge. Questo salver\xE0 tutto il contenuto della cartella Homebridge che successivamente potr\xE0 essere ripristinato su qualunque piattaforma supportata da Homebridge UI.","backup.backup_help_two":"I plugin non installati da npm, o plugin installati direttamente da GitHub non verranno salvati o ripristinati.","backup.backup_now":"Backup Now","backup.backup_now_desc":"Generate and download an up-to-date backup file.","backup.backup_now_save_desc":"Generate an up-to-date backup file in your backup storage directory.","backup.backup_restored":"Archivio di backup ripristinato","backup.backup_warning":"Gli archivi di backup contengono informazioni sensibili e non dovrebbero essere condivisi con altre persone.","backup.files_auto":"Stored Backup Files","backup.label_extracting":"Extracting Archive","backup.label_uploading":"Caricamento in corso\u2026","backup.load_error":"Failed to load config backup.","backup.restore_failed":"Ripristino fallito","backup.restore_help_one":"Ripristina un archivio di backup precedentemente creato con Homebridge UI. La tua configurazione di Homebridge, gli accessori, gli abbinamenti di HomeKit e gli account utente di Homebridge UI saranno ripristinati. I plugin Homebridge che erano stati installati verranno scaricati da npm.","backup.restore_help_two":"Dopo il ripristino sar\xE0 necessario autenticarsi con Homebridge UI usando le credenziali contenute nel backup ripristinato.","backup.restore_max_size":"You can restore a backup archive up to {{ maxBackupSizeText }} in size.","backup.restore_now":"Restore Now","backup.restore_now_desc":"Restore from a previously downloaded backup file.","backup.restore_warning":"Ripristinare un backup sovrascriver\xE0 irreversibilmente l'attuale configurazione di Homebridge.","backup.scheduled_backup_disabled":"Scheduled backups have been disabled via the configuration.","backup.scheduled_backup_time":"Un backup completo di questa istanza di Homebridge verr\xE0 automaticamente creato ogni giorno alle ore {{ backupTime }} e conservato per {{ dayCount }} giorni.","backup.settings_enable":"Enable Automated Backups","backup.settings_path":"Backup Storage Path","backup.settings_path_desc":"If you are changing this from the default, please ensure the directory exists and is writable by the Homebridge user.","backup.settings_title":"Backup Settings","backup.title_backup":"Backup & Restore","child_bridge.about":"Homebridge permette di eseguire i plugin delle piattaforme o degli accessori all'intero di un bridge figlio isolato dall'istanza principale {{ link }}. Questo pu\xF2 migliorare la reattivit\xE0 e la stabilit\xE0 di Homebridge.","child_bridge.bridge_connect":"Collega a HomeKit","child_bridge.bridge_settings":"Impostazioni del bridge","child_bridge.bridges":"Bridges","child_bridge.bridges_paired":"Ogni piattaforma o accessorio eseguito in un bridge figlio dovr\xE0 essere abbinato separatamente a HomeKit.","child_bridge.bridges_paired_2":"If you set up a child bridge now and later disable it, any accessories on this bridge will be removed and re-created on the main Homebridge bridge.","child_bridge.config.accessory":"Accessory","child_bridge.config.debug":"Debug Mode","child_bridge.config.enable_hap":"Enable HAP","child_bridge.config.firmware":"Firmware Version","child_bridge.config.hide_pairing_alert":"Hide Pairing Alert","child_bridge.config.manufacturer":"Manufacturer","child_bridge.config.matter_note_1":"Plugins must be updated by the developer to support Matter accessories. There is no use in enabling Matter here unless you definitely know the plugin supports it.","child_bridge.config.matter_note_2":"Matter accessories don't appear in the Homebridge UI accessories screen. They can be managed using the Home app or other Matter controllers.","child_bridge.config.model":"Model","child_bridge.config.name":"Name","child_bridge.config.or_link":"Link Existing Bridge","child_bridge.config.platform":"Platform","child_bridge.config.port":"Port","child_bridge.config.prevent":"Cannot disable a child bridge with linked accessories.","child_bridge.config.select_existing":"Select an existing bridge...","child_bridge.config.use":"Use Child Bridge","child_bridge.confirm_delete_1":"The following child bridges will be removed.","child_bridge.confirm_delete_2":"You will need to remove the paired bridges manually from the Home app. Any accessories will be removed and re-created on the main Homebridge bridge.","child_bridge.must_configure_plugin":"\xC8 necessario configurare questo plugin prima di poter gestire le impostazioni del suo bridge.","child_bridge.reset_accessories":"Reset Accessories","child_bridge.restart":"Riavvia bridge figlio","child_bridge.restart_plural":"Restart Child Bridges","child_bridge.return_to_pair":"Ritorna a questa videata dopo il riavvio di Homebridge per visualizzare il codice QR di abbinamento.","child_bridge.setup":"Set Up Child Bridge","child_bridge.start":"Start Child Bridge","child_bridge.start_plural":"Start Child Bridges","child_bridge.stop":"Stop Child Bridge","child_bridge.stop_plural":"Stop Child Bridges","common.labels.beta":"beta","common.labels.disabled":"Disattivato","common.labels.enabled":"Enabled","common.labels.no_confirmation":"There is no confirmation when clicking the button, it will immediately perform the action.","common.phrases.are_you_sure":"Are you sure you want to continue anyway?","common.phrases.support":"Feel like there is something useful we could add here? Let us know on {{ github }} or {{ discord }}!","config.config_accessory_must_be_array":"gli accessori devono essere tra []","config.config_bridge_missing":"Impostazioni del bridge mancanti","config.config_invalid_json":"JSON non valido","config.config_platform_must_be_array":"le piattaforme devono essere tra []","config.config_saved":"Configuration Saved","config.config_username_error":"Il nome del bridge deve essere composto da 6 paia di caratteri esadecimali (A-F 0-9) separate dal carattere due punti (XX:XX:XX:XX:XX:XX)","config.error_blocks_objects":"All {{ type }} blocks must be objects.","config.error_blocks_type":"All {{ type }} blocks must contain the {{ type }} attribute.","config.error_string_array":"Each item in the {{ key }} array must be a string.","config.error_string_type":"The {{ type }} attribute must be a string.","config.failed_to_save_config":"Configurazione non salvata","config.hide_hap_pairing":"Hide HAP Pairing Alert","config.hide_matter_pairing":"Hide Matter Pairing Alert","config.hide_plugin_updates":"Hide Plugin Updates For","config.no_restart":"A restart is not needed as no changes were made to the Homebridge configuration.","config.restore.confirm":"Clicca Salva per recuperare questo backup","config.restore.copy_to_editor":"Copia nell'editor","config.restore.download":"Download your current configuration as a JSON file.","config.restore.help_1":"A backup of your config file is created each time it is updated from actions you take in the Homebridge UI.","config.restore.help_2":"You can restore a previous version of your config file by selecting it from the list below. You will be able to compare this version with your current config before deciding whether to restore it.","config.restore.title":"Config File Backup & Restore","config.restore.toast_backups_deleted":"Backup eliminati","config.restore.view_inline":"Inline View","config.restore.view_side_by_side":"Side-By-Side View","config.title_backup_loaded":"Backup caricato","form.button_allow":"Allow","form.button_back":"Back","form.button_cancel":"Cancella","form.button_close":"Chiudi","form.button_continue":"Continue","form.button_delete":"Cancella","form.button_delete_all":"Delete All","form.button_disable":"Disable","form.button_download":"Scarica","form.button_edit":"Modifica","form.button_enable":"Enable","form.button_lock":"Lock","form.button_more_info":"More Info","form.button_remove":"Remove","form.button_reset":"Reset","form.button_restore":"Ripristina","form.button_save":"Salva","form.button_show":"Show","form.button_unlock":"Unlock","form.button_unpair":"Unpair","form.label.changes_kept":"Note that existing selections/changes are preserved when switching between items.","form.label_invalid":"Config validation failed - you can still save your changes.","form.label_invalid_strict":"Config validation failed - please review the form before saving.","form.label_valid":"Config validation passed.","form.optional":"Optional","form.search":"Search...","form.select.auto":"Automatic (Use Browser Settings)","login.invalid_code":"The code entered is incorrect or has expired","login.invalid_credentials":"Utente o password non validi","login.invalid_credentials_2":"If you lose access, delete the <code>auth.json</code> file in your Homebridge storage directory and restart Homebridge. Then refresh this page to set up a new admin account. Your Homebridge/UI settings will remain unchanged, except for UI user accounts. The only user account will be the admin account that you are setting up now.","login.invalid_password":"Invalid Password","login.label_2fa_code":"Codice di autenticazione a 2 fattori","logs.download.error":"Failed to download log file.","logs.download_warning":"I file dei log di Homebridge potrebbero contenere informazioni personali, password o chiavi di accesso. Per piacere verifica il file dei log e rimuovi qualunque informazione riservata prima di condividerlo con terzi.","logs.log_file_truncated":"File di log troncato.","logs.placeholder_search_logs":"Search logs (min. 3 characters)...","logs.title_download_log_file":"Scarica i log","logs.title_truncate_log_file":"Tronca il file di log","logs.truncate.error":"Failed to truncate log file.","logs.truncate_log_warning":"Questa operazione canceller\xE0 irreversibilmente i tuoi log di Homebridge. Sei sicuro di voler continuare?","matter_bridge.config.use":"Enable Matter","menu.config_json_editor":"JSON Config","menu.docker.restart_container":"Riavvia Container","menu.docker.startup_script":"Avvia script","menu.docker.terminal":"Terminale","menu.hbrestart.confirm_hb":"Restart Homebridge","menu.hbrestart.confirm_ui":"Restart HB Service & UI","menu.hbrestart.title":"Restart Homebridge","menu.label_accessories":"Accessori","menu.label_plugins":"Plugin","menu.label_settings":"Settings","menu.label_status":"Stato","menu.linux.label_logs":"Logs","menu.linux.label_restart_server":"Riavvia sistema","menu.linux.label_shutdown_modal":"Are you sure you want to shut down the operating system? You will need physical access to turn it back on.","menu.linux.label_shutdown_server":"Arresta sistema","menu.linux.label_terminal":"Terminale","menu.reload":"Reload","menu.restart.title":"Power Options","menu.settings.title":"Settings","menu.tooltip_logout":"Scollegati","menu.tooltip_restart":"Riavvia","menu.tooltip_user_accounts":"Account utente","menu.tooltip_view_logs":"Mostra i log","platform.docker.container_restarted":"Container Docker riavviato","platform.docker.must_use_hashbang":"Lo script deve usare l'hashbang #!/bin/sh.","platform.docker.restart_required":"\xC8 necessario riavviare docker affinch\xE9 le modifiche abbiano effetto.","platform.docker.run_with_restart":"Accertati di aver avviato il container Docker in modalit\xE0 {{ command }}","platform.docker.script_help":"Questo script verr\xE0 eseguito ogni volta che docker viene avviato. Puoi usarlo per installare eventuali pacchetti aggiuntivi necessari ai tuoi plugin come ffmpeg o libpcap-dev.","platform.docker.script_saved":"Script di avvio salvato","platform.docker.server_long_time":"Il riavvio richiede troppo tempo. Prova a riavviare Docker manualmente.","platform.docker.title_restarting":"Riavvio container Docker","platform.linux.long_time":"Il riavvio del sistema sta richiedendo molto tempo. Potrebbe essere necessario avviare manualmente il sistema.","platform.linux.restart":"Attendi, questa pagina verr\xE0 reindirizzata automaticamente quando Homebridge sar\xE0 di nuovo online.","platform.linux.restarting_server":"Riavvio del sistema","platform.linux.server_restart_error":"Si \xE8 verificato un errore durante l'invio del comando di riavvio al sistema","platform.linux.server_restarted":"Sistema riavviato","platform.linux.server_taking_long_time":"Il sistema impiega molto tempo per tornare online","platform.linux.server_will_power_down":"Il sistema si spegner\xE0 a breve.","platform.linux.shutting_down_server":"Arresto del sistema","platform.terminal.terminate_message_1":"Navigating away from this page will terminate your current session, all foreground processes will be terminated.","platform.terminal.terminate_message_2":"To avoid this warning, enable <strong>Terminal Session Persistence</strong> from the settings page.","platform.terminal.terminate_title":"Session Termination","platform.terminal.terminate_unload":"Your terminal session will be terminated. Enable Terminal Session Persistence in Settings to prevent this.","platform.version.restart_required":"Homebridge UI v{{ uiVersion }} \xE8 stato installato, ma la versione in esecuzione del suo servizio \xE8 la v{{ serverVersion }}.","platform.version.service_restart_required":"\xC8 necessario riavviare il servizio","plugins.bridge.action_error":"Failed to {{ action }} child bridge(s).","plugins.bridge.name_error":"Bridge name must start and end with a letter or number, and can only contain letters, numbers, spaces, and apostrophes.","plugins.bridge.port_error":"{{ type }} port must be an integer between 1025 and 65533, excluding 5353, 8080, 8443 and any other already-configured port.","plugins.button_homepage":"Plugin Homepage","plugins.button_set_up":"Set Up","plugins.button_settings":"Impostazioni","plugins.button_uninstall":"Disinstalla","plugins.button_update":"Aggiorna","plugins.compat.hb_node_too_low":"{{ packageName }} v{{ latestVersion }} richiede Node.js v{{ minVersion }} o successivo. Stai attualmente eseguendo Node.js {{ installedVersion }}.","plugins.compat.hb_too_low":"Il plugin {{ pluginName }} raccomanda l'esecuzione su Homebridge v{{ minVersion }} o successivo. Stai attualmente eseguendo Homebridge v{{ installedVersion }}.","plugins.compat.node_first":"Per piacere aggiornare Node.js prima di aggiornare {{ packageName }}.","plugins.compat.node_link":"How To Update Node.js","plugins.compat.node_too_low":"Il plugin {{ pluginName }} raccomanda l'esecuzione su Node.js v{{ minVersion }} o successivo. Stai attualmente eseguendo Node.js {{ installedVersion }}.","plugins.compat.title":"Compatibility Check","plugins.config.load_error":"Failed to load plugin config.","plugins.config.must_be_array":"Plugin config must be an array.","plugins.config.must_be_array_objects":"Plugin config must be an array of objects.","plugins.config.must_be_object":"Config block must be an object.","plugins.config.name_property":'Accessory must have a valid "name" attribute',"plugins.config.please_fix":"Please fix validation errors before adding a new block.","plugins.disable.error":"Failed to disable plugin.","plugins.donate.message_1":"As more users install their plugins through the Homebridge UI, they are less likely to visit the projects' GitHub page where the ways to support a developer would typically be displayed.","plugins.donate.message_2":"Adding donation links directly in the Homebridge UI ensures users know how to support Homebridge developers if they wish to do so.","plugins.donate.tile_donate_to":"Dona a {{ author }}","plugins.enable.error":"Failed to enable plugin.","plugins.manage.all_versions":"All versions","plugins.manage.backup":"Download a backup before updating?","plugins.manage.changelog":"Full Changelog","plugins.manage.changelog_none":"Could not retrieve changelog, perhaps this plugin does not provide a <code>CHANGELOG.md</code> file.","plugins.manage.child_bridge_restart":"Child bridge restarted successfully.","plugins.manage.child_bridge_restart_failed":"Plugin restart failed, please restart Homebridge manually.","plugins.manage.confirm_disable":"Are you sure you want to disable {{ pluginName }}?","plugins.manage.confirm_disable_accessory_1":"Any accessories exposed by this plugin will be removed from the Homebridge UI accessory screen and removed from HomeKit.","plugins.manage.confirm_disable_accessory_2":"When you re-enable the plugin, the accessories will reappear in the Homebridge UI and HomeKit. The accessories will lose their HomeKit data (like related scenes and automations).","plugins.manage.confirm_disable_platform_1":"Any accessories exposed by this plugin will be removed from the Homebridge UI accessory screen but remain in HomeKit with a 'No Response' label.","plugins.manage.confirm_disable_platform_2":"When you re-enable the plugin, the accessories will reappear in the Homebridge UI and become controllable again in HomeKit. The accessories will not lose their HomeKit data (like related scenes and automations).","plugins.manage.confirm_disable_setting":"Your setting for {{ setting }} is currently {{ value }}, therefore:","plugins.manage.confirm_enable":"Sei sicuro di voler attivare {{ pluginName }}?","plugins.manage.disable":"Disattiva","plugins.manage.enable":"Attiva","plugins.manage.github_support":"You can show your support by giving this plugin a {{ iconStar }} (or the release a {{ iconThumbsUp }}) on GitHub!","plugins.manage.hb_restart":"Homebridge and the UI will automatically restart after any version change.","plugins.manage.hide_updates":"Disable Update Notifications","plugins.manage.hide_updates_desc":"If you don't want to see update notifications for this plugin, you can turn them off here.","plugins.manage.information":"Plugin Information","plugins.manage.install":"Installa","plugins.manage.installed":"Installato","plugins.manage.json_config":"Configurazione JSON","plugins.manage.manage_version":"Installa la versione precedente","plugins.manage.manual_update_command":"To upgrade the package, open a Node.js command prompt as an Administrator and run the following commands:","plugins.manage.more_info":"More information about scoped {{ scopedLink }} and verified {{ verifiedLink }} plugins.","plugins.manage.notes":"Release Notes","plugins.manage.notes_beta_1":"Thank you for helping improve {{ pluginName }} by testing a pre-release version.","plugins.manage.notes_beta_2":"You can use the Homebridge UI to revert back to the stable version at any time.","plugins.manage.notes_beta_3":"Please remember this is a pre-release version, and report any issues to the plugin's GitHub repository page.","plugins.manage.notes_latest":"Release notes are only shown when updating to the latest version.","plugins.manage.notes_none":"Could not retrieve release notes, perhaps this version does not have a GitHub release.","plugins.manage.online_updates":"Gli aggiornamenti in linea non sono supportati su Windows. Sar\xE0 necessario aggiornare manualmente Homebridge UI dopo aver fermato il servizio Homebridge.","plugins.manage.plugin_logs":"Plugin Logs","plugins.manage.scoped.error":"An error occurred. You can download the logs below.","plugins.manage.scoped.info_1":"Homebridge scoped plugins have names beginning with {{ prefix }}.","plugins.manage.scoped.info_2":"For more information about scoped plugins and why to switch, see the wiki page {{ link }}.","plugins.manage.scoped.process":"This process will not affect your Homebridge/HomeKit accessories. You will not be able to cancel the process once it has started. It will:","plugins.manage.scoped.switch":"Switch To Scoped Plugin","plugins.manage.scoped.windows":'Online updates are not supported on Windows. You will need to install the new plugin and uninstall the old plugin manually. You should <span class="fw-bold">not</span> restart Homebridge until both steps are complete.',"plugins.manage.scoped_message":"Scoped plugins improve long-term reliability and ensure consistent maintenance by combining centralized oversight from the Homebridge team with continued involvement from the original maintainer.","plugins.manage.scoped_subtitle":"This plugin is scoped and verified.","plugins.manage.select_version":"Scegli la versione da installare","plugins.manage.uninstall":"Disinstalla","plugins.manage.uninstalled":"Disinstallato","plugins.manage.unverified_message":"Unverified Homebridge plugins indicate that they haven't undergone the review process by the Homebridge project team. Lack of verification does not necessarily imply inefficacy or safety concerns. Authors might have opted not to seek verification for various reasons.","plugins.manage.unverified_subtitle":"This plugin is not verified.","plugins.manage.update":"Aggiorna","plugins.manage.updated":"Aggiornato","plugins.manage.verified_message":"Homebridge plugins that are marked as verified have been reviewed by the Homebridge project team to ensure they meet various requirements that encourage best practices and a trouble-free user experience.","plugins.manage.verified_subtitle":"This plugin is verified.","plugins.placeholder_search_first":"Use the search bar above to find your first plugin","plugins.placeholder_search_none":"No results were found","plugins.placeholder_search_plugin":"Cerca plugin da installare\u2026","plugins.settings.custom.download_dump_file":"Download Dump File","plugins.settings.custom.homebridge-gsh.label_account_linked":"Account collegato","plugins.settings.custom.homebridge-gsh.label_link_account":"Collega account","plugins.settings.custom.homebridge-gsh.message_about":"Il plugin Homebridge Google Smart Home permette di controllare gli accessori Homebridge da un altoparlante intelligente Google Home abilitato o dall'applicazione Google Home.","plugins.settings.custom.homebridge-gsh.message_account_link_required":"L'attivazione di questa funzione richiede l'accesso con un account Google or GitHub; assicurarsi di usare lo stesso account quanto si aggiunge l'azione Homebridge nell'applicazione Google Home.","plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required":"Homebridge deve essere riavviato affinch\xE9 le modifiche abbiano effetto.","plugins.settings.deconz.dump_no_exist":"Homebridge deCONZ dump file does not exist yet.","plugins.settings.hue.dump_no_exist":"Homebridge Hue dump file does not exist yet.","plugins.settings.label_open_config_editor":"Apri l'editor della configurazione","plugins.settings.message_consult_documentation":"Per piacere consulta la documentazione del plugin per sapere come configurarlo correttamente.","plugins.settings.message_manual_config_required":"Questo plugin deve essere configurato manualmente usando l'editor della configurazione di Homebridge UI X.","plugins.settings.plugin_config_saved":"Configurazione dei plugin salvata","plugins.settings.restart_required":"Riavvia Homebridge per applicare le modifiche.","plugins.stats":"Plugin Statistics","plugins.stats_note":"Plugins cannot be installed from this page, this is provided just for interest.","plugins.status_installed":"Installato","plugins.support.list_1":"Homebridge plugins are the building blocks of Homebridge, allowing you to add support for new accessories and platforms. Plugins add support for smart lights, cameras, TVs, etc, for brands that don't natively support HomeKit. For example, to bring your Ring doorbells and cameras into HomeKit, you can install the <code>homebridge-ring</code> plugin.","plugins.support.list_2":"Homebridge plugins are created by public contributors in the Homebridge community, and are not typically associated with the Homebridge maintainers, nor with the manufacturers of the accessories themselves. If you have a question about a specific plugin, you should let the plugin developer know via the plugin's GitHub page.","plugins.support.list_3":"There are currently over 4,700 plugins available for Homebridge, so you should be able to find plugins to suit your needs. If you are a Javascript/TypeScript developer (or want to take the opportunity to learn), you can also create your own plugin and share it with the Homebridge community. Check out the Support section for some handy links to get you started.","plugins.support.list_4":"Some plugins allow you to create 'virtual/dummy' accessories, which are accessories that do not have a physical counterpart. These can be used to create virtual accessories in HomeKit, such as virtual switches, lights, or sensors. Try searching for <code>dummy</code> or <code>virtual</code> in the search bar to find some examples.","plugins.toast_failed_to_load_plugin_schema":"Failed to load plugin config schema.","plugins.toast_failed_to_load_plugins":"Impossibile caricare i plugin","plugins.toast_failed_to_search_plugins":"Failed to search plugins","plugins.uninstall_remove_child_bridge":"Remove plugin child bridge?","plugins.uninstall_remove_child_bridges":"Remove {{ count }} plugin child bridges?","plugins.uninstall_remove_config_required":"Se si sta disinstallando definitivamente questo plugin, assicurarsi di rimuovere la configurazione di questo plugin da config.json prima di riavviare Homebridge.","plugins.uninstall_remove_confirmation":"Sei sicuro di vole disinstallare {{ pluginName }}?","plugins.uninstall_remove_plugin_config":"Rimuovere la configurazione del plugin?","plugins.uninstall_warn_1":"When removing a child bridge, any accessories published by this bridge will be removed from the Homebridge cache.","plugins.uninstall_warn_2":"The accessories will become stale in HomeKit (showing no response). To remove them, you will need to manually remove this bridge from HomeKit. You can do this in the Home app from the Home Settings section.","reset.accessory_all.desc":"Remove all accessories from the cache.","reset.accessory_all.list_1":"When clicking on the remove button below, Homebridge will restart and all your existing accessories will be removed from Homebridge and HomeKit.","reset.accessory_all.list_2":"All associated HomeKit data will also be removed, this includes room associations, scenes and automations that this accessory uses.","reset.accessory_all.list_3":"After Homebridge restarts, your plugins will re-add any accessories as if the plugin was being installed for the first time.","reset.accessory_all.title":"Remove All Accessories","reset.accessory_ind.bridge":"Bridge","reset.accessory_ind.desc":"Remove individual accessories from the cache.","reset.accessory_ind.done":"Finished removing accessories from the cache, check the log for confirmation and/or errors.","reset.accessory_ind.fail":"Failed to remove accessories from cache, check the log for errors.","reset.accessory_ind.list_1":"Some plugins don't clean up after themselves properly. If you have stale accessories, you can remove them from the cache. This function can also be used to reset an existing accessory in HomeKit.","reset.accessory_ind.list_2":"The accessories will be removed from Homebridge and HomeKit, along with their related room associations, scenes and automations.","reset.accessory_ind.list_3":"After Homebridge restarts, your plugins will re-add any removed accessories as if the plugin was being installed for the first time.","reset.accessory_ind.title":"Remove Individual Accessories","reset.accessory_ind.unknown":"Unknown Name","reset.accessory_reset":"Ripristino accessorio Homebridge","reset.action_is_irreversible":"Questa azione \xE8 irreversibile. Si prega di leggere attentamente prima di procedere.","reset.bridge_accessories.desc":"Remove all accessories published by a child bridge from the cache.","reset.bridge_accessories.empty":"You have no bridges from which to remove accessories.","reset.bridge_accessories.list_1":"This function can be used to reset a plugin's existing accessories in HomeKit. They will be removed from Homebridge and HomeKit, and then re-added by the plugin as new accessories.","reset.bridge_accessories.list_2":"The child bridge's pairing details and status will remain the same.","reset.bridge_accessories.title":"Remove Bridge Accessories","reset.bridge_all.desc":"Reset all bridges by removing them from the cache. This includes the main Homebridge bridge, child bridges and bridges for external accessories.","reset.bridge_all.list_1":"This will reset the Homebridge bridge, all child bridges and bridges for external accessories from HomeKit.","reset.bridge_all.list_2":"Note that your accessories will continue to show in HomeKit as no response, until the bridges are manually removed from HomeKit. You can do this in the Home app, by accessing Home Settings \u2192 Home Hubs & Bridges \u2192 {Bridge} \u2192 Remove Bridge from Home.","reset.bridge_all.list_3":"All your Homebridge to HomeKit accessories, scenes and automations will need to be reconfigured after the unpairing.","reset.bridge_all.list_4":"The pin for pairing your Homebridge bridge to HomeKit will be changed. You can see the new values in your Homebridge config after the unpairing.","reset.bridge_all.title":"Reset All Bridges","reset.bridge_ind.desc":"Reset an individual bridge by removing it from the cache. This may be a child bridge or a bridge for an external accessory like a camera or TV.","reset.bridge_ind.desc_child_active":"Homebridge has detected that these child bridges are in-use. Once removed, their accessories will be removed from the Homebridge cache. If paired with HomeKit, the bridge's accessories will show as 'No Response', and the bridge will need to be removed via the Home app. The child bridge's pairing information will be changed. Once Homebridge has restarted, the plugin will create the new child bridge and accessories. The new bridge will need to be re-paired with HomeKit. You can view the new pairing information from the corresponding plugin's bridge settings page.","reset.bridge_ind.desc_child_stale":"Homebridge has detected that these bridges are not in-use, but double-check before deleting. They could be left-over from previously uninstalled plugins. If paired with HomeKit, the accessories will show as 'No Response', and the bridge will need to be removed via the Home app.","reset.bridge_ind.desc_non_child":"Homebridge has detected that these bridges are in-use. You can remove them from the cache, but they will likely be re-added by the plugin when Homebridge restarts. The pairing information will remain unchanged.","reset.bridge_ind.done":"Finished resetting bridges, check the log for confirmation and/or errors.","reset.bridge_ind.fail":"Failed to reset bridges, check the log for errors.","reset.bridge_ind.head_child_active":"Active Child Bridges","reset.bridge_ind.head_child_stale":"Stale Child Bridges","reset.bridge_ind.head_non_child":"Non Child Bridges","reset.bridge_ind.title":"Reset Individual Bridges","reset.bridges.desc":"If you are having trouble pairing Homebridge, an external accessory or a child bridge to HomeKit, you may need to unpair it from HomeKit to start again.","reset.bridges.empty":"You have no bridges to unpair from HomeKit.","reset.bridges.title":"Bridges","reset.clear_cache_single.list_3":"When removing an accessory from the cache, all its associated HomeKit data will be removed. This includes any associated scenes and automations that use this accessory.","reset.delete_success":"Riavvio Homebridge e cancellazione della cache degli accessori in corso.","reset.error_message":"Accessory cache could not be loaded. You may not have any cached accessories.","reset.failed_to_reset":"Impossibile ripristinare Homebridge. Controlla i log.","reset.force_restart_hb_help_text":"Usa questa azione per forzare il servizio hb-service a eseguire un riavvio completo.","reset.no_accessories":"You have no cached accessories to remove.","restart.child_bridge_list":"Please restart these child bridges for the changes to apply:","restart.child_bridges":"Please restart the plugin's child bridges for the changes to apply.","restart.label_restart_command_executed":"Riavvio richiesto","restart.please_wait_while_server_restarts":"Attendi, questa pagina verr\xE0 reindirizzata automaticamente quando il sistema sar\xE0 di nuovo online.","restart.server_is_taking_long_time_to_restart":"Il riavvio del sistema richiede molto tempo. Potrebbe essere necessario riavviare manualmente Homebridge.","restart.service_ready":"Riavvio server Homebridge","restart.title_restart":"Riavvio Homebridge","restart.toast_server_restart_error":"Si \xE8 verificato un errore durante l'invio del comando di riavvio al sistema","restart.toast_server_restart_timeout":"Il sistema impiega molto tempo per tornare online","restart.toast_server_restarted":"Sistema riavviato","restart.ui_online":"Riavvio Homebridge UI","rpi.throttled.currently_message":"Questo Raspberry Pi segnala che la sua tensione di alimentazione \xE8 bassa; verificare che sia collegato a un'alimentazione adeguata. Una tensione di alimentazione bassa pu\xF2 causare l'instabilit\xE0 del sistema e la corruzione della scheda SD.","rpi.throttled.previously_message":"Questo Raspberry Pi ha segnalato un calo della tensione di alimentazione dall'ultimo riavvio; verificare che sia collegato a un'alimentazione adeguata.","rpi.throttled.undervoltage_title":"Calo di Tensione","settings.accessory.debug":"Accessory Debug Mode","settings.accessory.debug_desc":"If enabled, the Homebridge UI will log debug level messages to the console.","settings.cache.desc":"Homebridge maintains accessories in cache so they aren't removed and re-added to HomeKit each time Homebridge restarts. Sometimes this cache can become out of sync with the actual accessories in Homebridge.","settings.changes.saved":"Your changes have been saved and require a restart to take effect.","settings.datetime.incorrect":"The date and time on your Homebridge server seem to be incorrect. This may cause unexpected issues. Click here for more information.","settings.display.blue":"Blue","settings.display.bluegrey":"Blue Grey","settings.display.brown":"Brown","settings.display.cyan":"Cyan","settings.display.dark":"Dark","settings.display.deep_purple":"Deep Purple","settings.display.green":"Green","settings.display.grey":"Grey","settings.display.indigo":"Indigo","settings.display.lang":"Language","settings.display.light":"Light","settings.display.lighting_mode":"Lighting Mode","settings.display.menu_default":"Default","settings.display.menu_freeze":"Keep Closed (On Desktop)","settings.display.menu_mode":"Menu Mode","settings.display.orange":"Orange","settings.display.pink":"Pink","settings.display.purple":"Purple","settings.display.red":"Red","settings.display.show_betas":"Prefer Beta Versions","settings.display.teal":"Teal","settings.display.temp_units":"Temperature Units","settings.display.temp_units.c":"Celsius (\xB0C)","settings.display.temp_units.f":"Fahrenheit (\xB0F)","settings.display.theme":"Theme","settings.display.wallpaper":"Wallpaper","settings.display.wallpaper_intro":"Upload a wallpaper for your Homebridge UI. This is currently shown on the login screen.","settings.display.wallpaper_rule":"You can choose an image file which is up to {{ maxFileSizeText }}.","settings.display.wallpaper_rule2":"You will need to click Save to upload the wallpaper to your Homebridge storage directory.","settings.display.wallpaper_success":"Wallpaper was successfully updated.","settings.general.title_display":"Display","settings.general.title_general":"General","settings.linux.restart":"Restart Command","settings.linux.restart_desc":"If no restart command is set the process will terminate with a non-zero exit code.","settings.linux.shutdown":"Shutdown Command","settings.linux.shutdown_desc":"If no shutdown command is set the process will terminate with a non-zero exit code.","settings.linux.temp":"Temperature File Path","settings.linux.temp_desc":"If you are running Homebridge on a Raspberry Pi, you can enter the path to the OS temperature file here. This will display the current temperature on the UI status page.","settings.matter.desc":"Enables Matter accessories on the main bridge. If only using Matter with child bridges, this setting does not need to be enabled - child bridges have independent Matter settings in their plugin bridge settings.","settings.matter.enabled_desc":"Whether to start a Matter instance and allow plugins to expose Matter accessories.","settings.matter.port":"Port","settings.matter.port_desc":"This must be between 1025 and 65533, and unique to any other configured port.","settings.matter.title":"Matter Settings","settings.mdns_advertiser":"Annunciatore mDNS","settings.mdns_advertiser_exp":"experimental","settings.mdns_advertiser_help":"Se stai avendo problemi a collegarti a Homebridge, prova a utilizzare un altro annunciatore mDNS.","settings.mdns_advertiser_not_connected":"Not Connected","settings.mdns_advertiser_rec":"recommended","settings.name":"Homebridge Name","settings.network.hb_package":"Homebridge Module Path","settings.network.hb_package_desc":"If you have multiple versions of Homebridge installed, you can specify the path to the version you want to use here.","settings.network.host":"Host IP Address","settings.network.host_desc":"The host IP address to listen on. In most cases this will be <code>::</code> or <code>0.0.0.0</code>.","settings.network.mdns_advertise":"Advertise Via mDNS","settings.network.mdns_advertise_help":"Enable mDNS advertising (using Bonjour) for your Homebridge UI, making it discoverable as an HTTP service on your local network.","settings.network.message_network_interface":"Se nessuna interfaccia di rete \xE8 selezionata, Homebridge sceglier\xE0 automaticamente su quali annunciarsi.","settings.network.port_end":"End Port","settings.network.port_end_desc":"Control the end of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and higher than the start port above.","settings.network.port_hb":"Homebridge Port","settings.network.port_hb_desc":"The port number to run the Homebridge bridge on. This must be between 1025 and 65533, and should not be the same as the Homebridge UI port.","settings.network.port_start":"Start Port","settings.network.port_start_desc":"Control the start of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and lower than the end port below.","settings.network.port_ui":"UI Port","settings.network.port_ui_desc":"The port number to run the Homebridge UI on.","settings.network.proxy":"Reverse Proxy Hostname","settings.network.proxy_desc":"When running behind a reverse proxy you may need to enter the hostname you use to access the UI.","settings.network.title_network":"Rete","settings.network.title_network_interfaces":"Interfacce di rete","settings.network.title_security":"Security","settings.network.title_terminal":"Logging & Terminal","settings.network.webroot":"Webroot Path","settings.network.webroot_desc":"This can be configured if you want to access the Homebridge UI under a specific URL path.","settings.reset_bridge.error":"Failed to reset bridge.","settings.security.auth":"Authentication","settings.security.auth_desc":"Whether to enable authentication for the Homebridge UI with a username and password.","settings.security.cert":"Certificate Path","settings.security.https":"Enable HTTPS","settings.security.https_configure":"Configure HTTPS Settings","settings.security.https_desc":"Enable HTTPS using an auto-generated self-signed certificate or by providing your own certificate files.","settings.security.https_enable":"Enable HTTPS","settings.security.https_enable_desc":"Secure your Homebridge web interface with HTTPS / SSL encryption.","settings.security.https_raspbian":"HTTPS is already enabled by default when running the Homebridge Raspbian image {{ link }}.","settings.security.key":"Private Key Path","settings.security.pass":"PKCS#12 Certificate Passphrase","settings.security.pass_optional":"Optional - only required if your certificate is password protected","settings.security.pfx":"PKCS#12 Certificate Path","settings.security.selfsigned_hostnames":"Certificate Hostnames","settings.security.selfsigned_hostnames_desc":"Comma-separated list of hostnames or IP addresses to include in the certificate (e.g., localhost, 127.0.0.1, homebridge.local, 192.168.1.100)","settings.security.ssl_mode_keycert":"Upload Certificate Files","settings.security.ssl_mode_keycert_desc":"Upload your own private key and certificate files","settings.security.ssl_mode_off":"Disable HTTPS","settings.security.ssl_mode_off_desc":"Turn off SSL encryption.","settings.security.ssl_mode_pfx":"Upload PFX Certificate","settings.security.ssl_mode_pfx_desc":"Upload a PKCS#12 (.pfx or .p12) certificate file","settings.security.ssl_mode_selfsigned":"Self-Signed Certificate","settings.security.ssl_mode_selfsigned_desc":"Automatically generate a free self-signed certificate","settings.security.ssl_upload_success_pfx":"PKCS#12 certificate uploaded","settings.security.ui_control":"Accessory Control Lists","settings.security.ui_control_desc":"Define which bridges and bridged accessories can be controlled or blocked by the Homebridge UI.","settings.security.ui_control_desc_2":"Allow the UI to control the accessories on a bridge by toggling on the switch below.","settings.service.debug_tooltip":"Some plugins require you to set the DEBUG environment variable {{ link }} to enable debug level logging.","settings.service.node_tooltip":"Node.js runtime options for this process. This should be kept blank unless you know what you are doing.","settings.startup.debug":"Homebridge Debug Mode","settings.startup.debug_desc_v1":"Enable this if you need Homebridge to output more detailed logs. This setting applies to the main Homebridge bridge as well as all child bridges. Some plugins may also adhere to this setting and output more detailed logs.","settings.startup.debug_desc_v2":"Enable this if you need Homebridge to output more detailed logs. This setting applies to the main Homebridge bridge. The setting for child bridges can be found in the child bridge configuration from the plugins page. Some plugins may also adhere to this setting and output more detailed logs.","settings.startup.insecure":"Enable UI Accessory Control","settings.startup.insecure_desc":"To control your accessories via the Homebridge UI you must be running Homebridge in insecure mode.","settings.startup.keep_accessories":"Keep Accessories Of Uninstalled Plugins","settings.startup.keep_accessories_desc":"If enabled, accessories of platform plugins will remain in the cache even after the plugin is uninstalled. This can be useful if you plan to reinstall the plugin later.","settings.startup.metrics":"Enable Server Metric Monitoring","settings.startup.metrics_desc":"When enabled, the Homebridge UI will collect and show CPU and memory stats on the status page.","settings.startup.scheduled_restart":"Scheduled Restart Cron","settings.startup.scheduled_restart_desc":"Schedule automatic restarts relative to your timezone using a cron expression. Leave empty to disable. Create a cron expression {{ link }}.","settings.startup.scheduled_restart_desc_2":"You can apply this setting per child bridge from the plugin bridge configuration.","settings.startup.session":"Session Timeout","settings.startup.session_days":"days","settings.startup.session_desc":"The number of seconds before a user will be logged out of the UI. Defaults to 8 hours.","settings.startup.session_hours":"hours","settings.startup.session_inactivity_based":"Inactivity-Based Session Refresh","settings.startup.session_inactivity_based_desc":"When enabled, the session will automatically refresh on navigation to prevent logout during active use.","settings.startup.session_minutes":"minutes","settings.terminal.buffer_size":"Terminal Buffer Character Size","settings.terminal.buffer_size_help":"Amount of terminal output to preserve for persistent sessions. Larger values use more memory.","settings.terminal.log_max":"Log Max Size","settings.terminal.log_max_desc":"The max log size (bytes). Set to -1 to disable log truncation.","settings.terminal.log_truncate":"Log Truncate Size","settings.terminal.log_truncate_desc":"The size (bytes) to truncate the log to once it goes over the max size specified above.","settings.terminal.persistence":"Terminal Session Persistence","settings.terminal.persistence_confirm_message":"Disabling terminal session persistence will terminate your current terminal session.","settings.terminal.persistence_confirm_title":"Disable Terminal Session Persistence","settings.terminal.persistence_help":"When enabled, terminal sessions will persist when navigating away and can be resumed when returning to the terminal page (or status page widget). Terminal sessions are shared across Homebridge UI admin users.","settings.terminal.warning":"Hide Terminal Termination Warning","settings.terminal.warning_help":"When enabled, the warning dialog will not be shown before terminating non-persistent terminal sessions.","settings.title_startup_options":"Opzioni di avvio","settings.unpair_bridge.load_error":"Paired bridges could not be loaded.","settings.warning_pwa":"This setting cannot be changed when accessing the UI from a PWA, please use a regular browser.","settings.warning_webroot":"Homebridge does not have write access to the served <code>index.html</code> file. To set up a webroot, please fix this issue and restart the Homebridge service.","setup.button_get_started":"Inizia","setup.create_account":"Crea un account utente","setup.intro":"If you are setting up for the first time, or if you just need to reset the password for your existing Homebridge setup, then choose <strong>Get Started</strong>.","setup.welcome_to_homebridge":"Benvenuto in Homebridge",setup_wizard_complete:"Restore Complete!",setup_wizard_complete_title:"Congratulazioni!",setup_wizard_completed:"La procedura di configurazione \xE8 stata completata ed \xE8 ora possibile iniziare a utilizzare Homebridge.",setup_wizard_create_info:"Once Homebridge is set up, you can set up 2FA on your account, or disable the need for authentication altogether.",setup_wizard_page_title:"Setup Homebridge",setup_wizard_restore:"Restore From Backup",setup_wizard_restoring:"Restoring Backup...",setup_wizard_starting:"Starting Homebridge...","status.code_scan":"Scansiona per aggiungere a HomeKit","status.cpu.load":"Carico della CPU","status.cpu.temp":"Temperatura","status.cpu.title_cpu":"CPU","status.credits.plugins_thanks":"Homebridge plugins are created by awesome developers in the Homebridge community.","status.credits.supporters":"Supporters","status.credits.title":"Credits","status.credits.translations":"Translations","status.credits.translations_thanks":"Homebridge UI translations are provided by the community, with special thanks to:","status.homebridge.checking":"Verifico aggiornamenti\u2026","status.homebridge.up_to_date":"Aggiornato","status.memory.label_available":"Libera","status.memory.label_total":"Totale","status.memory.title_memory":"Memoria","status.network.received_per_second":"Ricevuti","status.network.sent_per_second":"Inviati","status.network.title_network":"Attivit\xE0 di rete","status.readiness.node_no":"Your version of Node.js is not compatible with {{ app }}.","status.readiness.node_yes":"Your version of Node.js is compatible with {{ app }}.","status.readiness.title":"{{ app }} Readiness","status.services.label_not_enabled":"Not Enabled","status.services.label_not_running":"Non in esecuzione","status.services.label_running":"In esecuzione","status.services.updates":"Update Information","status.uptime.title_uptime":"Avviato da","status.widget.accessories.choose_accessories":"Scegli gli accessori da mostrare in questo widget dalla scheda Accessori.","status.widget.account_1":"The widget layout is shared among all Homebridge UI users.","status.widget.account_2":"Admin users can modify the layout, while non-admin users cannot make changes.","status.widget.add.label_pairing_code":"Codice di abbinamento","status.widget.add.matter_pairing_code":"Matter Pairing Code","status.widget.bridge.restart_error":"Failed to restart child bridge.","status.widget.clock":"Orologio","status.widget.clock_dateformat":"Formato della data","status.widget.clock_timeformat":"Formato dell'orario","status.widget.expand_docker":"Expand Docker Container Information","status.widget.font_size":"Dimensione dei caratteri","status.widget.font_weight":"Stile dei caratteri","status.widget.hide_node_info":"Hide Node.js Updates","status.widget.hide_npm":"Show npm Version","status.widget.hide_on_mobile":"Nascondi nella vista compatta (schermi dei cellulari)","status.widget.homebridge_logs":"Log di Homebridge","status.widget.info":"Informazioni di sistema","status.widget.info.arch":"Arch.","status.widget.info.config_path":"Percorso configurazione","status.widget.info.docker":"Docker","status.widget.info.docker_update_message":"Updating the Docker container requires manually pulling the latest image and restarting the container. Homebridge does not perform this automatically. Refer to your Docker image's documentation for update instructions.","status.widget.info.docker_update_title":"Docker Container Update","status.widget.info.hostname":"Nome host","status.widget.info.ipv4":"IPv4","status.widget.info.ipv6":"IPv6","status.widget.info.no":"No","status.widget.info.node_major":"Node.js Major Versions","status.widget.info.node_next_no":"Your current architecture ({{ architecture }}) is 32-bit, which is not supported. You will need to migrate to a 64-bit system. Please use Node.js v22 instead, which we will be supporting until April 2027.","status.widget.info.node_next_yes":"Your current architecture ({{ architecture }}) supports Node.js v24, so you can upgrade when you are ready.","status.widget.info.node_unsupp":"Unsupported","status.widget.info.node_unsupp_message":"You are running a version of Node.js that is not officially supported by Homebridge. You should consider changing to a supported version.","status.widget.info.node_update_message":"Homebridge requires Node.js installed on your system to run. From time to time, you will need to update the Node.js runtime to enable support for new features. Homebridge (and verified plugins) support all current Active and Maintenance LTS releases of Node.js.","status.widget.info.node_update_message_2":"For Docker/Synology users, the Node.js version is managed by the Docker image or Synology package. You can hide Node.js update information using the widget settings.","status.widget.info.nodejs_path":"Node.js Path","status.widget.info.os":"Sistema operativo","status.widget.info.plugin_path":"Percorso plugin","status.widget.info.service_user":"Utente","status.widget.info.storage_path":"Percorso salvataggio","status.widget.info.synology_package":"Pacchetto Synology","status.widget.info.timezone":"Fuso orario","status.widget.info.yes":"Yes","status.widget.network.history_items":"History Items","status.widget.network.items":"items","status.widget.network.network_interface":"Network Interface","status.widget.network.none_selected":"Using Default","status.widget.network.refresh_interval":"Refresh Interval","status.widget.network.seconds":"seconds","status.widget.qr_paired":"Abbinato","status.widget.qr_unpaired":"No abbinato","status.widget.show_hide":"Show/Hide Widgets","status.widget.title_manage_widget":"Gestisci widget","status.widget.update_node_no":"{{ pluginName }} is not compatible with Node {{ nodeVersion }}.","status.widget.update_node_unknown":"The developer of {{ pluginName }} has not specified the Node version compatibility.","status.widget.update_node_yes":"{{ pluginName }} is compatible with Node {{ nodeVersion }}.","status.widget.uptime.label_process":"Processo","status.widget.uptime.label_server":"Sistema","status.widget.weather.label_config_required_help":"Seleziona la tua citt\xE0 nelle impostazioni del widget.","status.widget.weather.label_search_for_your_city":"Cerca la tua citt\xE0:","status.widget.weather.title_weather":"Meteo","support.dev.api":"Homebridge API","support.dev.api_hap":"HAP-NodeJS API","support.dev.api_hap_sub":"HAP-NodeJS is an implementation of the HomeKit Accessory Server as specified in the HomeKit Accessory Protocol (HAP), which is defined by Apple as part of the HomeKit Framework.","support.dev.api_sub":"Homebridge is a lightweight Node.js server you can run on your home network to emulate the HomeKit Accessory Protocol (HAP).","support.dev.item_swagger":"Swagger Docs","support.dev.item_swagger_sub":"The Homebridge REST API allows you to interact with your Homebridge server using HTTP requests.","support.dev.template":"Plugin Template Repo","support.dev.template_sub":"A template Homebridge plugin that can be used as a base to help you get started developing your own plugin.","support.dev.title":"Developers","support.dev.verified":"Verified By Homebridge","support.dev.verified_sub":"The Verified By Homebridge program allows plugin developers to get their plugins reviewed and endorsed by the Homebridge project team.","support.links.discord":"Discord Server","support.links.discord_sub":"Join the Homebridge Discord chat server to chat with other users and developers.","support.links.documentation":"Documentation","support.links.documentation_sub":"The Homebridge documentation provides a wealth of information on how to get started with Homebridge and common issue resolutions.","support.links.issue":"Report An Issue","support.links.issue_sub":"If you are experiencing an issue with Homebridge, please open a new issue on GitHub. This should not be used for issues with specific plugins.","support.links.reddit":"Reddit Community","support.links.reddit_sub":"The Homebridge subreddit is a great place to share your Homebridge setup and ask for help.","support.links.title":"Useful Links","support.title":"Support","toast.no_auth":"Only administrators may access the requested page.","toast.title_error":"Errore","toast.title_success":"Completato","toast.title_warning":"Attenzione","users.button_add_user":"Aggiungi utente","users.label_admin_user":"Utente amministratore?","users.label_confirm_password":"Conferma password","users.label_full_name":"Nome completo","users.label_new_password":"Nuova password","users.label_password":"Password","users.label_username":"Utente","users.setup_2fa":"Configura l'autenticazione a 2 fattori","users.setup_2fa_activate_error":"An error occurred activating 2FA","users.setup_2fa_cannot_setup_2fa":"Impossibile configurare l'autenticazione a 2 fattori","users.setup_2fa_disable":"Disattiva l'autenticazione a 2 fattori","users.setup_2fa_disable_current_password":"Inserisci la tua password per disattivare l'autenticazione a 2 fattori:","users.setup_2fa_disable_success":"L'autenticazione a 2 fattori \xE8 stata disattivata.","users.setup_2fa_enable":"Attiva l'autenticazione a 2 fattori","users.setup_2fa_enable_error":"An error occurred setting up 2FA","users.setup_2fa_enabled_success":"L'autenticazione a 2 fattori \xE8 stata attivata.","users.setup_2fa_enter_code":"Inserisci il codice dalla tua app di autenticazione:","users.setup_2fa_scan_qr_code":"Acquisisci questo codice QR con la tua app di autenticazione:","users.setup_2fa_scan_qr_manual":"If you cannot scan the QR code, you can enter the following secret key manually:","users.setup_2fa_server_time_out":"L'orologio del tuo server \xE8 sbagliato di {{ timeDiffError }} ms. L'errore massimo ammesso \xE8 +/-5000 ms.","users.setup_2fa_warning":"Per il suo corretto funzionamento l'autenticazione a 2 fattori richiede che il tuo server Homebridge abbia un orario molto preciso. Se il tuo server non pu\xF2 mantenere preciso il suo orologio l'autenticazione a 2 fattori non dovrebbe essere attivata, pena il rischio di rimanere chiusi fuori dall'interfaccia di Homebridge.","users.support.acc_1":"There are two types of users that can access the Homebridge UI: admin and non-admin users. Admins can access and control everything available in the UI. Non-admin users have a read-only view of the following pages:","users.support.acc_2":"2FA can only be set up on admin accounts, and must do this via the users page logged in as themselves.","users.support.control":"can be controlled","users.title_add_user":"Aggiungi utente","users.title_edit_user":"Modifica utente","users.title_users":"Utenti","users.toast_added_new_user":"Nuovo utente aggiunto","users.toast_failed_to_add_user":"Impossibile aggiungere utente","users.toast_failed_to_delete_user":"Impossibile eliminare utente","users.toast_updated_user":"Utente aggiornato","users.toast_user_deleted":"Utente eliminato"}});export{t as a};
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-GU5F3H4I.js";import"./chunk-B4AJQJMI.js";export default a();
@@ -0,0 +1 @@
1
+ import{a as ie}from"./chunk-TUN7H57E.js";import{a as re}from"./chunk-2QQRXUEC.js";import{a as ne}from"./chunk-TLHI6ZOI.js";import{a as de}from"./chunk-NJRPICYW.js";import{a as te}from"./chunk-K4H7M56K.js";import{a as Z,b as ee}from"./chunk-MIE7YXOK.js";import{a as Y}from"./chunk-ULDCVSG3.js";import{a as Q}from"./chunk-N67YCG3Y.js";import{n as D}from"./chunk-I3JZLSHE.js";import{a as R,b as W,d as H,e as T,f as X,g as G}from"./chunk-KWACPVX5.js";import{a as $}from"./chunk-ZGIZ2UDW.js";import{b as z}from"./chunk-ZPQKHKVV.js";import"./chunk-C25O3HDQ.js";import{b as B}from"./chunk-RQ6OKEXK.js";import{C as A,D as J,H as I,o as q}from"./chunk-GTH5BSXR.js";import{Ab as S,Dc as d,Ec as l,Fb as g,Gb as i,Hb as a,Ib as p,Nc as K,Rb as k,Xb as u,Za as n,Zb as C,aa as c,ea as O,ga as b,ha as x,hb as j,ic as P,kc as _,lc as h,ma as U,mb as E,n as N,nb as V,sa as w,wc as f,yb as m,zb as y}from"./chunk-VX4RXOTH.js";import{g as se,h as L}from"./chunk-B4AJQJMI.js";var ae=se(de(),1);var F=()=>["/"],pe=()=>({exact:!0}),ce=()=>["/plugins"],me=()=>["/accessories"],ue=()=>["/logs"],_e=()=>["/support"],ge=()=>["/platform-tools/terminal"],ve=()=>["/config"],he=()=>["/settings"],fe=()=>["/power-options"];function be(s,M){if(s&1){let e=k();i(0,"div",10)(1,"div",20),d(2,"translate"),d(3,"translate"),u("click",function(){b(e);let t=C();return x(t.openUnderVoltageModal())})("keydown",function(t){b(e);let o=C();return x(o.handleKeydown(t))}),i(4,"div",12),p(5,"i",21),a(),i(6,"div",14),_(7),d(8,"translate"),a()()()}s&2&&(n(),m("aria-label",l(2,2,"rpi.throttled.undervoltage_title")+" - "+l(3,4,"rpi.throttled.undervoltage_description")),n(6),h(l(8,6,"rpi.throttled.undervoltage_title")))}function xe(s,M){if(s&1){let e=k();i(0,"div",10)(1,"div",15),d(2,"translate"),u("keydown",function(t){b(e);let o=C();return x(o.handleKeydown(t))}),i(3,"div",12),p(4,"i",22),a(),i(5,"div",14),_(6),d(7,"translate"),a()()()}s&2&&(n(),g("routerLink",f(8,ge))("routerLinkActive","active"),m("aria-label",l(2,4,"menu.linux.label_terminal")),n(5),h(l(7,6,"menu.linux.label_terminal")))}function Ce(s,M){if(s&1){let e=k();i(0,"div",10)(1,"div",15),d(2,"translate"),u("keydown",function(t){b(e);let o=C();return x(o.handleKeydown(t))}),i(3,"div",12),p(4,"i",23),a(),i(5,"div",14),_(6),d(7,"translate"),a()()()}s&2&&(n(),g("routerLink",f(8,ve))("routerLinkActive","active"),m("aria-label",l(2,4,"menu.config_json_editor")),n(5),h(l(7,6,"menu.config_json_editor")))}function we(s,M){if(s&1){let e=k();i(0,"div",10)(1,"div",15),d(2,"translate"),u("keydown",function(t){b(e);let o=C();return x(o.handleKeydown(t))}),i(3,"div",12),p(4,"i",24),a(),i(5,"div",14),_(6),d(7,"translate"),a()()()}s&2&&(n(),g("routerLink",f(8,he))("routerLinkActive","active"),m("aria-label",l(2,4,"menu.label_settings")),n(5),h(l(7,6,"menu.label_settings")))}function ye(s,M){if(s&1){let e=k();i(0,"div",10)(1,"div",15),d(2,"translate"),u("keydown",function(t){b(e);let o=C();return x(o.handleKeydown(t))}),i(3,"div",12),p(4,"i",25),a(),i(5,"div",14),_(6),d(7,"translate"),a()()()}s&2&&(n(),g("routerLink",f(8,fe))("routerLinkActive","active"),m("aria-label",l(2,4,"menu.restart.title")),n(5),h(l(7,6,"menu.restart.title")))}function Se(s,M){if(s&1){let e=k();i(0,"div",10)(1,"div",20),d(2,"translate"),u("click",function(){b(e);let t=C();return x(t.reloadPage())})("keydown",function(t){b(e);let o=C();return x(o.handleKeydown(t))}),i(3,"div",12),p(4,"i",26),a(),i(5,"div",14),_(6),d(7,"translate"),a()()()}s&2&&(n(),m("aria-label",l(2,2,"menu.reload")),n(5),h(l(7,4,"menu.reload")))}function ke(s,M){if(s&1){let e=k();i(0,"div",10)(1,"div",20),d(2,"translate"),u("click",function(){b(e);let t=C();return x(t.logout())})("keydown",function(t){b(e);let o=C();return x(o.handleKeydown(t))}),i(3,"div",12),p(4,"i",27),a(),i(5,"div",14),_(6),d(7,"translate"),a()()()}s&2&&(n(),m("aria-label",l(2,2,"menu.tooltip_logout")),n(5),h(l(7,4,"menu.tooltip_logout")))}var oe=(()=>{class s{destroyRef=c(U);injector=c(O);$auth=c(z);$authHelper=c(Q);$settings=c(B);$modal=c(D);$notification=c(ne);$renderer=c(j);$router=c(T);$translate=c(A);initialIsExpanded=K(!1);isExpanded=w(!1);formAuth=w(this.$settings.formAuth);isAdmin=this.$auth.user.admin;enableTerminalAccess=this.$settings.env.enableTerminalAccess;rPiCurrentlyUnderVoltage=w(!1);rPiWasUnderVoltage=w(!1);isMobile=!1;freezeMenu=w(!1);isPwa=ie();sidebarMouseEnterListener=()=>this.openSidebar();sidebarMouseLeaveListener=()=>this.closeSidebar();touchstartListener;clickListener;constructor(){this.isMobile=window.innerWidth<768;let e;window.addEventListener("resize",()=>{clearTimeout(e),e=setTimeout(()=>{this.updateListeners()},500)}),this.$router.events.pipe($()).subscribe(r=>L(this,null,function*(){if(r instanceof R&&this.$settings.formAuth&&r.url!=="/login"&&!(yield this.$authHelper.isAuthenticated())){window.sessionStorage.setItem("target_route",r.url),yield this.$router.navigate(["/login"]);return}r instanceof W&&queueMicrotask(()=>{this.closeSidebar(),this.freezeMenu.set(!0),setTimeout(()=>{this.freezeMenu.set(!1)},750)})}))}ngOnInit(){this.isExpanded.set(this.initialIsExpanded()),this.$notification.raspberryPiThrottled.pipe($(this.destroyRef)).subscribe(o=>{o["Under Voltage"]&&this.rPiCurrentlyUnderVoltage.set(!0),o["Under-voltage has occurred"]&&this.rPiWasUnderVoltage.set(!0)}),this.$notification.formAuthEnabled.pipe($(this.destroyRef)).subscribe(o=>{this.formAuth.set(o)});let e=document.querySelector(".sidebar"),r=document.querySelector(".m-header"),t=document.querySelector(".content");this.isMobile?(this.touchstartListener=o=>{if(t.contains(o.target)&&this.isExpanded()){o.preventDefault(),this.toggleSidebar();return}!e.contains(o.target)&&!r.contains(o.target)&&this.isExpanded()&&(o.preventDefault(),this.closeSidebar())},document.addEventListener("touchstart",this.touchstartListener,{passive:!1})):(this.updateListeners(),r.addEventListener("mouseenter",this.sidebarMouseEnterListener,{passive:!1}),r.addEventListener("mouseleave",this.sidebarMouseLeaveListener,{passive:!1}),this.clickListener=o=>{e.contains(o.target)&&o.clientX>60&&this.closeSidebar()},document.addEventListener("click",this.clickListener,{passive:!1}))}toggleSidebar(){this.freezeMenu()||(this.isExpanded.set(!this.isExpanded()),this.updateContentStyles())}openUnderVoltageModal(){let e=E([{provide:ee,useValue:{title:this.$translate.instant("rpi.throttled.undervoltage_title"),message:this.$translate.instant(this.rPiCurrentlyUnderVoltage()?"rpi.throttled.currently_message":"rpi.throttled.previously_message"),ctaButtonLabel:this.$translate.instant("form.button_more_info"),faIconClass:"fas fa-bolt yellow-text",ctaButtonLink:"https://pimylifeup.com/raspberry-pi-low-voltage-warning"}}],this.injector);this.$modal.open(re,{size:"lg",backdrop:"static",injector:e})}handleKeydown(e){if(e.key==="Enter"){let r=e.target;["menuitem","button"].includes(r.getAttribute("role"))&&r.click()}}reloadPage(){window.location.reload()}ngOnDestroy(){this.touchstartListener&&document.removeEventListener("touchstart",this.touchstartListener),this.clickListener&&document.removeEventListener("click",this.clickListener);let e=document.querySelector(".sidebar"),r=document.querySelector(".m-header");e&&(e.removeEventListener("mouseenter",this.sidebarMouseEnterListener),e.removeEventListener("mouseleave",this.sidebarMouseLeaveListener)),r&&(r.removeEventListener("mouseenter",this.sidebarMouseEnterListener),r.removeEventListener("mouseleave",this.sidebarMouseLeaveListener))}logout(){this.$auth.logout()}openSidebar(){this.freezeMenu()||(this.isExpanded.set(!0),this.updateContentStyles())}closeSidebar(){this.freezeMenu()||(this.isExpanded.set(!1),this.updateContentStyles())}updateContentStyles(){let e=document.querySelector(".content");this.isExpanded()?(this.$renderer.setStyle(e,"opacity","20%"),this.$renderer.setStyle(e,"pointer-events","none"),this.$renderer.setStyle(e,"overflow","hidden")):(this.$renderer.removeStyle(e,"opacity"),this.$renderer.removeStyle(e,"pointer-events"),this.$renderer.removeStyle(e,"overflow"))}updateListeners(){this.isMobile=window.innerWidth<768;let e=document.querySelector(".sidebar");e.removeEventListener("mouseenter",this.sidebarMouseEnterListener),e.removeEventListener("mouseleave",this.sidebarMouseLeaveListener),(this.isMobile||!this.isMobile&&this.$settings.menuMode!=="freeze")&&(e.addEventListener("mouseenter",this.sidebarMouseEnterListener,{passive:!1}),e.addEventListener("mouseleave",this.sidebarMouseLeaveListener,{passive:!1}))}static \u0275fac=function(r){return new(r||s)};static \u0275cmp=V({type:s,selectors:[["app-sidebar"]],inputs:{initialIsExpanded:[1,"initialIsExpanded"]},decls:68,vars:73,consts:[["tabindex","0","role","button",1,"m-header","text-end",3,"click","keydown"],[1,"me-2","d-block","d-lg-none",2,"font-size","0.9rem","color","#dddddd"],[3,"routerLink"],["ngSrc","assets/homebridge-logo.svg","alt","HB Logo","height","35","width","35",2,"height","35px","width","35px"],[1,"hb-logo-text-mobile"],[1,"hamburger-icon"],["role","navigation","id","sidebar",1,"sidebar"],["tabindex","0","role","button",1,"header",3,"click","keydown"],[1,"hb-logo-text"],[1,"link-wrapper"],[1,"link"],["role","menuitem","tabindex","0",1,"link-row",3,"keydown","routerLink","routerLinkActive","routerLinkActiveOptions"],[1,"icon"],[1,"fa","fa-house"],[1,"title"],["role","menuitem","tabindex","0",1,"link-row",3,"keydown","routerLink","routerLinkActive"],[1,"fa","fa-plug"],[1,"fa","fa-lightbulb"],[1,"fa","fa-wave-square"],[1,"fa","fa-question-circle-o"],["role","menuitem","tabindex","0",1,"link-row",3,"click","keydown"],[1,"fas","fa-bolt","fa-beat","yellow-text",2,"--fa-beat-scale","1.5"],[1,"fa","fa-terminal"],[1,"fa","fa-code"],[1,"fa","fa-cog"],[1,"fa","fa-power-off"],[1,"fa","fa-refresh"],[1,"fa","fa-right-from-bracket"]],template:function(r,t){r&1&&(i(0,"div",0),d(1,"translate"),u("click",function(){return t.toggleSidebar()})("keydown",function(v){return t.handleKeydown(v)}),p(2,"span",1),i(3,"a",2),d(4,"translate"),p(5,"img",3),i(6,"div",4),_(7,"Homebridge"),a()(),i(8,"div",5),p(9,"span")(10,"span")(11,"span")(12,"span"),a()(),i(13,"div",6)(14,"div",7),u("click",function(){return t.toggleSidebar()})("keydown",function(v){return t.handleKeydown(v)}),i(15,"a",2),d(16,"translate"),p(17,"img",3),i(18,"div",8),_(19,"Homebridge"),a()()(),i(20,"div",9)(21,"div",10)(22,"div",11),d(23,"translate"),u("keydown",function(v){return t.handleKeydown(v)}),i(24,"div",12),p(25,"i",13),a(),i(26,"div",14),_(27),d(28,"translate"),a()()(),y(29,be,9,8,"div",10),i(30,"div",10)(31,"div",15),d(32,"translate"),u("keydown",function(v){return t.handleKeydown(v)}),i(33,"div",12),p(34,"i",16),a(),i(35,"div",14),_(36),d(37,"translate"),a()()(),i(38,"div",10)(39,"div",15),d(40,"translate"),u("keydown",function(v){return t.handleKeydown(v)}),i(41,"div",12),p(42,"i",17),a(),i(43,"div",14),_(44),d(45,"translate"),a()()(),i(46,"div",10)(47,"div",15),d(48,"translate"),u("keydown",function(v){return t.handleKeydown(v)}),i(49,"div",12),p(50,"i",18),a(),i(51,"div",14),_(52),d(53,"translate"),a()()(),y(54,xe,8,9,"div",10),y(55,Ce,8,9,"div",10),y(56,we,8,9,"div",10),i(57,"div",10)(58,"div",15),d(59,"translate"),u("keydown",function(v){return t.handleKeydown(v)}),i(60,"div",12),p(61,"i",19),a(),i(62,"div",14),_(63),d(64,"translate"),a()()(),y(65,ye,8,9,"div",10),y(66,Se,8,6,"div",10),y(67,ke,8,6,"div",10),a()()),r&2&&(m("aria-expanded",t.isExpanded()?"true":"false")("aria-controls","sidebar")("aria-label",l(1,39,"menu.sidebar.aria_menu")),n(3),g("routerLink",f(65,F)),m("aria-label",l(4,41,"menu.label_status")),n(5),P("hamburger-icon-cross",t.isExpanded()),n(5),P("expanded",t.isExpanded()),n(2),g("routerLink",f(66,F)),m("aria-label",l(16,43,"menu.label_status")),n(7),g("routerLink",f(67,F))("routerLinkActive","active")("routerLinkActiveOptions",f(68,pe)),m("aria-label",l(23,45,"menu.label_status")),n(5),h(l(28,47,"menu.label_status")),n(2),S(t.rPiWasUnderVoltage()||t.rPiCurrentlyUnderVoltage()?29:-1),n(2),g("routerLink",f(69,ce))("routerLinkActive","active"),m("aria-label",l(32,49,"menu.label_plugins")),n(5),h(l(37,51,"menu.label_plugins")),n(3),g("routerLink",f(70,me))("routerLinkActive","active"),m("aria-label",l(40,53,"menu.label_accessories")),n(5),h(l(45,55,"menu.label_accessories")),n(3),g("routerLink",f(71,ue))("routerLinkActive","active"),m("aria-label",l(48,57,"menu.linux.label_logs")),n(5),h(l(53,59,"menu.linux.label_logs")),n(2),S(t.enableTerminalAccess&&t.isAdmin?54:-1),n(),S(t.isAdmin?55:-1),n(),S(t.isAdmin?56:-1),n(2),g("routerLink",f(72,_e))("routerLinkActive","active"),m("aria-label",l(59,61,"support.title")),n(5),h(l(64,63,"support.title")),n(2),S(t.isAdmin?65:-1),n(),S(t.isPwa?66:-1),n(),S(t.formAuth()?67:-1))},dependencies:[X,q,G,J],styles:[".m-header[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:65px;z-index:510;display:flex;align-items:center;padding-left:3px;padding-right:3px}.m-header[_ngcontent-%COMP%]:hover{cursor:pointer}@media(min-width:768px){.m-header[_ngcontent-%COMP%]{display:none}}.sidebar[_ngcontent-%COMP%]{position:fixed;left:0;top:0;height:100vh;transition:.3s;width:60px;z-index:500}.sidebar[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;padding:15px 10px 15px 11px;font-size:.85rem}.sidebar[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]:hover{cursor:pointer}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%]{overflow-x:hidden;overflow-y:auto;max-height:calc(100vh - 80px)!important;scrollbar-width:thin}@media(max-width:767px){.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%]{padding-bottom:60px}}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] .link-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:15px 10px;cursor:pointer;transition:.2s;font-size:17px}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] .link-row[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{flex:0 0 38px;display:flex;align-items:center;justify-content:center}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] .link-row[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{flex:1;transition:.3s;max-width:0;overflow:hidden;white-space:nowrap}@media(max-width:767px){.sidebar[_ngcontent-%COMP%]{width:0}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%]{display:none}}.sidebar.expanded[_ngcontent-%COMP%]{width:210px}@media(max-width:767px){.sidebar.expanded[_ngcontent-%COMP%]{width:210px}.sidebar.expanded[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%]{display:block}}.sidebar.expanded[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] .link-row[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{max-width:150px;padding-left:10px}.hamburger-icon[_ngcontent-%COMP%]{margin:-7px 0 0 25px}@media(min-width:768px){.hb-logo-text[_ngcontent-%COMP%]{color:#fff;position:absolute;top:17px;font-size:22px;padding-left:3px}.sidebar.expanded[_ngcontent-%COMP%] .hb-logo-text[_ngcontent-%COMP%]{opacity:1;left:55px;transition:.3s}.sidebar[_ngcontent-%COMP%]:not(.expanded) .hb-logo-text[_ngcontent-%COMP%]{opacity:0;left:40px;transition:.3s}.hb-logo-text-mobile[_ngcontent-%COMP%], .hamburger-icon[_ngcontent-%COMP%]{display:none!important}}@media(max-width:767px){.hb-logo-text[_ngcontent-%COMP%]{display:none!important}.hb-logo-text-mobile[_ngcontent-%COMP%]{color:#fff;position:absolute;top:17px;font-size:22px;padding-left:3px;opacity:1;left:55px}.hamburger-icon[_ngcontent-%COMP%]{position:absolute;right:10px;top:28px;width:30px;transform:rotate(0);transition:.5s ease-in-out;cursor:pointer}.hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;position:absolute;height:2px;width:100%;background-color:#fff;border-radius:9px;opacity:1;left:0;transform:rotate(0);transition:.25s ease-in-out}.hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(1){top:0}.hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(2), .hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(3){top:10px}.hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(4){top:20px}.hamburger-icon-cross[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(1){top:10px;width:0;left:50%}.hamburger-icon-cross[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(2){transform:rotate(45deg)}.hamburger-icon-cross[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(3){transform:rotate(-45deg)}.hamburger-icon-cross[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(4){top:10px;width:0;left:50%}}"]})}return s})();var tt=(()=>{class s{injector=c(O);$auth=c(z);$modal=c(D);$router=c(T);$settings=c(B);$translate=c(A);$ws=c(Y);io;sidebarExpanded=w(!1);ngOnInit(){this.io=this.$ws.connectToNamespace("app"),this.io.socket.on("reconnect",()=>{this.$auth.checkToken()}),this.compareServerUiVersion()}compareServerUiVersion(){return L(this,null,function*(){if(this.$settings.settingsLoaded||(yield N(this.$settings.onSettingsLoaded)),!this.$router.url.endsWith("/restart")&&(0,ae.lt)(this.$settings.uiVersion,I.serverTarget)){console.log(`Server restart required. UI Version: ${I.serverTarget} - Server Version: ${this.$settings.uiVersion} `);let e=E([{provide:Z,useValue:{title:this.$translate.instant("platform.version.service_restart_required"),message:this.$translate.instant("platform.version.restart_required",{serverVersion:this.$settings.uiVersion,uiVersion:I.serverTarget}),confirmButtonLabel:this.$translate.instant("menu.tooltip_restart"),faIconClass:"fas fa-power-off orange-text"}}],this.injector),r=this.$modal.open(te,{size:"lg",backdrop:"static",injector:e});try{yield r.result,this.$router.navigate(["/restart"])}catch{}}})}static \u0275fac=function(r){return new(r||s)};static \u0275cmp=V({type:s,selectors:[["app-layout"]],decls:3,vars:3,consts:[[3,"initialIsExpanded"],[1,"content","px-3","p-md-4"]],template:function(r,t){r&1&&(p(0,"app-sidebar",0),i(1,"div",1),p(2,"router-outlet"),a()),r&2&&(g("initialIsExpanded",t.sidebarExpanded()),n(),P("sidebarExpanded",t.sidebarExpanded()))},dependencies:[oe,H],styles:[".content[_ngcontent-%COMP%]{margin-left:60px;transition:.3s;height:100%}@media(max-width:767px){.content[_ngcontent-%COMP%]{margin-left:0;padding-top:85px!important}}@media(min-width:768px){.content[_ngcontent-%COMP%]{height:100%}}a[_ngcontent-%COMP%]:hover{text-decoration:none!important}"]})}return s})();export{tt as LayoutComponent};
@@ -0,0 +1 @@
1
+ import{$ as ye,Aa as Oe,X as Me,Y as Ce,a as Q,d as Z,ib as te,o as we,oa as Se,ob as De,pb as ke,xa as xe,z as ee}from"./chunk-VX4RXOTH.js";import{e as $,g as yt}from"./chunk-B4AJQJMI.js";var $e=$((Jt,Ie)=>{Ie.exports=function(n,r){return Array.prototype.slice.call(n,r)}});var Ne=$((Qt,Re)=>{var St=typeof setImmediate=="function",re;St?re=function(t){setImmediate(t)}:re=function(t){setTimeout(t,0)};Re.exports=re});var Ye=$((Zt,Xe)=>{"use strict";var xt=Ne();Xe.exports=function(n,r,e){n&&xt(function(){n.apply(e||null,r||[])})}});var Be=$((er,je)=>{"use strict";var Fe=$e(),Ot=Ye();je.exports=function(n,r){var e=r||{},a={};return n===void 0&&(n={}),n.on=function(o,s){return a[o]?a[o].push(s):a[o]=[s],n},n.once=function(o,s){return s._once=!0,n.on(o,s),n},n.off=function(o,s){var l=arguments.length;if(l===1)delete a[o];else if(l===0)a={};else{var h=a[o];if(!h)return n;h.splice(h.indexOf(s),1)}return n},n.emit=function(){var o=Fe(arguments);return n.emitterSnapshot(o.shift()).apply(this,o)},n.emitterSnapshot=function(o){var s=(a[o]||[]).slice(0);return function(){var l=Fe(arguments),h=this||n;if(o==="error"&&e.throws!==!1&&!s.length)throw l.length===1?l[0]:l;return s.forEach(function(g){e.async?Ot(g,l,h):g.apply(h,l),g._once&&n.off(o,g)}),n}},n}});var _e=$((tr,Ae)=>{var Pe=global.CustomEvent;function Dt(){try{var t=new Pe("cat",{detail:{foo:"bar"}});return t.type==="cat"&&t.detail.foo==="bar"}catch{}return!1}Ae.exports=Dt()?Pe:typeof document<"u"&&typeof document.createEvent=="function"?function(n,r){var e=document.createEvent("CustomEvent");return r?e.initCustomEvent(n,r.bubbles,r.cancelable,r.detail):e.initCustomEvent(n,!1,!1,void 0),e}:function(n,r){var e=document.createEventObject();return e.type=n,r?(e.bubbles=!!r.bubbles,e.cancelable=!!r.cancelable,e.detail=r.detail):(e.bubbles=!1,e.cancelable=!1,e.detail=void 0),e}});var Ve=$((rr,Te)=>{"use strict";var qe=[],ne="",kt=/^on/;for(ne in global)kt.test(ne)&&qe.push(ne.slice(2));Te.exports=qe});var Ke=$((nr,ze)=>{"use strict";var It=_e(),$t=Ve(),G=global.document,Ge=Rt,He=Xt,_=[];global.addEventListener||(Ge=Nt,He=Yt);ze.exports={add:Ge,remove:He,fabricate:Ft};function Rt(t,n,r,e){return t.addEventListener(n,r,e)}function Nt(t,n,r){return t.attachEvent("on"+n,Bt(t,n,r))}function Xt(t,n,r,e){return t.removeEventListener(n,r,e)}function Yt(t,n,r){var e=Le(t,n,r);if(e)return t.detachEvent("on"+n,e)}function Ft(t,n,r){var e=$t.indexOf(n)===-1?o():a();t.dispatchEvent?t.dispatchEvent(e):t.fireEvent("on"+n,e);function a(){var s;return G.createEvent?(s=G.createEvent("Event"),s.initEvent(n,!0,!0)):G.createEventObject&&(s=G.createEventObject()),s}function o(){return new It(n,{detail:r})}}function jt(t,n,r){return function(a){var o=a||global.event;o.target=o.target||o.srcElement,o.preventDefault=o.preventDefault||function(){o.returnValue=!1},o.stopPropagation=o.stopPropagation||function(){o.cancelBubble=!0},o.which=o.which||o.keyCode,r.call(t,o)}}function Bt(t,n,r){var e=Le(t,n,r)||jt(t,n,r);return _.push({wrapper:e,element:t,type:n,fn:r}),e}function Le(t,n,r){var e=Pt(t,n,r);if(e){var a=_[e].wrapper;return _.splice(e,1),a}}function Pt(t,n,r){var e,a;for(e=0;e<_.length;e++)if(a=_[e],a.element===t&&a.type===n&&a.fn===r)return e}});var Qe=$((ir,Je)=>{"use strict";var Ue={},At="(?:^|\\s)",_t="(?:\\s|$)";function We(t){var n=Ue[t];return n?n.lastIndex=0:Ue[t]=n=new RegExp(At+t+_t,"g"),n}function qt(t,n){var r=t.className;r.length?We(n).test(r)||(t.className+=" "+n):t.className=n}function Tt(t,n){t.className=t.className.replace(We(n)," ").trim()}Je.exports={add:qt,rm:Tt}});var ut=$((or,st)=>{"use strict";var Vt=Be(),P=Ke(),X=Qe(),A=document,k=A.documentElement;function Gt(t,n){var r=arguments.length;r===1&&Array.isArray(t)===!1&&(n=t,t=[]);var e,a,o,s,l,h,b,g,w,f,D,M=null,I,c=n||{};c.moves===void 0&&(c.moves=rt),c.accepts===void 0&&(c.accepts=rt),c.invalid===void 0&&(c.invalid=ht),c.containers===void 0&&(c.containers=t||[]),c.isContainer===void 0&&(c.isContainer=Lt),c.copy===void 0&&(c.copy=!1),c.copySortSource===void 0&&(c.copySortSource=!1),c.revertOnSpill===void 0&&(c.revertOnSpill=!1),c.removeOnSpill===void 0&&(c.removeOnSpill=!1),c.direction===void 0&&(c.direction="vertical"),c.ignoreInputTextSelection===void 0&&(c.ignoreInputTextSelection=!0),c.mirrorContainer===void 0&&(c.mirrorContainer=A.body);var p=Vt({containers:c.containers,start:vt,end:fe,cancel:pe,remove:me,destroy:ct,canMove:ft,dragging:!1});return c.removeOnSpill===!0&&p.on("over",mt).on("out",pt),ue(),p;function H(i){return p.containers.indexOf(i)!==-1||c.isContainer(i)}function ue(i){var u=i?"remove":"add";q(k,u,"mousedown",lt),q(k,u,"mouseup",K)}function L(i){var u=i?"remove":"add";q(k,u,"mousemove",dt)}function ce(i){var u=i?"remove":"add";P[u](k,"selectstart",le),P[u](k,"click",le)}function ct(){ue(!0),K({})}function le(i){I&&i.preventDefault()}function lt(i){h=i.clientX,b=i.clientY;var u=Ze(i)!==1||i.metaKey||i.ctrlKey;if(!u){var d=i.target,m=z(d);m&&(I=m,L(),i.type==="mousedown"&&(ot(d)?d.focus():i.preventDefault()))}}function dt(i){if(I){if(Ze(i)===0){K({});return}if(!(i.clientX!==void 0&&Math.abs(i.clientX-h)<=(c.slideFactorX||0)&&i.clientY!==void 0&&Math.abs(i.clientY-b)<=(c.slideFactorY||0))){if(c.ignoreInputTextSelection){var u=Y("clientX",i)||0,d=Y("clientY",i)||0,m=A.elementFromPoint(u,d);if(ot(m))return}var y=I;L(!0),ce(),fe(),de(y);var E=Ht(o);s=Y("pageX",i)-E.left,l=Y("pageY",i)-E.top,X.add(f||o,"gu-transit"),gt(),J(i)}}}function z(i){if(!(p.dragging&&e)&&!H(i)){for(var u=i;S(i)&&H(S(i))===!1;)if(c.invalid(i,u)||(i=S(i),!i))return;var d=S(i);if(d&&!c.invalid(i,u)){var m=c.moves(i,d,u,T(i));if(m)return{item:i,source:d}}}}function ft(i){return!!z(i)}function vt(i){var u=z(i);u&&de(u)}function de(i){Et(i.item,i.source)&&(f=i.item.cloneNode(!0),p.emit("cloned",f,i.item,"copy")),a=i.source,o=i.item,g=w=T(i.item),p.dragging=!0,p.emit("drag",o,a)}function ht(){return!1}function fe(){if(p.dragging){var i=f||o;he(i,S(i))}}function ve(){I=!1,L(!0),ce(!0)}function K(i){if(ve(),!!p.dragging){var u=f||o,d=Y("clientX",i)||0,m=Y("clientY",i)||0,y=tt(e,d,m),E=ge(y,d,m);E&&(f&&c.copySortSource||!f||E!==a)?he(u,E):c.removeOnSpill?me():pe()}}function he(i,u){var d=S(i);f&&c.copySortSource&&u===a&&d.removeChild(o),W(u)?p.emit("cancel",i,a,a):p.emit("drop",i,u,a,w),U()}function me(){if(p.dragging){var i=f||o,u=S(i);u&&u.removeChild(i),p.emit(f?"cancel":"remove",i,u,a),U()}}function pe(i){if(p.dragging){var u=arguments.length>0?i:c.revertOnSpill,d=f||o,m=S(d),y=W(m);y===!1&&u&&(f?m&&m.removeChild(f):a.insertBefore(d,g)),y||u?p.emit("cancel",d,a,a):p.emit("drop",d,m,a,w),U()}}function U(){var i=f||o;ve(),bt(),i&&X.rm(i,"gu-transit"),D&&clearTimeout(D),p.dragging=!1,M&&p.emit("out",i,M,a),p.emit("dragend",i),a=o=f=g=w=D=M=null}function W(i,u){var d;return u!==void 0?d=u:e?d=w:d=T(f||o),i===a&&d===g}function ge(i,u,d){for(var m=i;m&&!y();)m=S(m);return m;function y(){var E=H(m);if(E===!1)return!1;var B=be(m,i),C=Ee(m,B,u,d),R=W(m,C);return R?!0:c.accepts(o,m,a,C)}}function J(i){if(!e)return;i.preventDefault();var u=Y("clientX",i)||0,d=Y("clientY",i)||0,m=u-s,y=d-l;e.style.left=m+"px",e.style.top=y+"px";var E=f||o,B=tt(e,u,d),C=ge(B,u,d),R=C!==null&&C!==M;(R||C===null)&&(Mt(),M=C,wt());var x=S(E);if(C===a&&f&&!c.copySortSource){x&&x.removeChild(E);return}var O,F=be(C,B);if(F!==null)O=Ee(C,F,u,d);else if(c.revertOnSpill===!0&&!f)O=g,C=a;else{f&&x&&x.removeChild(E);return}(O===null&&R||O!==E&&O!==T(E))&&(w=O,C.insertBefore(E,O),p.emit("shadow",E,C,a));function N(Ct){p.emit(Ct,E,M,a)}function wt(){R&&N("over")}function Mt(){M&&N("out")}}function mt(i){X.rm(i,"gu-hide")}function pt(i){p.dragging&&X.add(i,"gu-hide")}function gt(){if(!e){var i=o.getBoundingClientRect();e=o.cloneNode(!0),e.style.width=nt(i)+"px",e.style.height=it(i)+"px",X.rm(e,"gu-transit"),X.add(e,"gu-mirror"),c.mirrorContainer.appendChild(e),q(k,"add","mousemove",J),X.add(c.mirrorContainer,"gu-unselectable"),p.emit("cloned",e,o,"mirror")}}function bt(){e&&(X.rm(c.mirrorContainer,"gu-unselectable"),q(k,"remove","mousemove",J),S(e).removeChild(e),e=null)}function be(i,u){for(var d=u;d!==i&&S(d)!==i;)d=S(d);return d===k?null:d}function Ee(i,u,d,m){var y=c.direction==="horizontal",E=u!==i?C():B();return E;function B(){var x=i.children.length,O,F,N;for(O=0;O<x;O++)if(F=i.children[O],N=F.getBoundingClientRect(),y&&N.left+N.width/2>d||!y&&N.top+N.height/2>m)return F;return null}function C(){var x=u.getBoundingClientRect();return R(y?d>x.left+nt(x)/2:m>x.top+it(x)/2)}function R(x){return x?T(u):u}}function Et(i,u){return typeof c.copy=="boolean"?c.copy:c.copy(i,u)}}function q(t,n,r,e){var a={mouseup:"touchend",mousedown:"touchstart",mousemove:"touchmove"},o={mouseup:"pointerup",mousedown:"pointerdown",mousemove:"pointermove"},s={mouseup:"MSPointerUp",mousedown:"MSPointerDown",mousemove:"MSPointerMove"};global.navigator.pointerEnabled?P[n](t,o[r],e):global.navigator.msPointerEnabled?P[n](t,s[r],e):(P[n](t,a[r],e),P[n](t,r,e))}function Ze(t){if(t.touches!==void 0)return t.touches.length;if(t.which!==void 0&&t.which!==0)return t.which;if(t.buttons!==void 0)return t.buttons;var n=t.button;if(n!==void 0)return n&1?1:n&2?3:n&4?2:0}function Ht(t){var n=t.getBoundingClientRect();return{left:n.left+et("scrollLeft","pageXOffset"),top:n.top+et("scrollTop","pageYOffset")}}function et(t,n){return typeof global[n]<"u"?global[n]:k.clientHeight?k[t]:A.body[t]}function tt(t,n,r){t=t||{};var e=t.className||"",a;return t.className+=" gu-hide",a=A.elementFromPoint(n,r),t.className=e,a}function Lt(){return!1}function rt(){return!0}function nt(t){return t.width||t.right-t.left}function it(t){return t.height||t.bottom-t.top}function S(t){return t.parentNode===A?null:t.parentNode}function ot(t){return t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT"||at(t)}function at(t){return!t||t.contentEditable==="false"?!1:t.contentEditable==="true"?!0:at(S(t))}function T(t){return t.nextElementSibling||n();function n(){var r=t;do r=r.nextSibling;while(r&&r.nodeType!==1);return r}}function zt(t){return t.targetTouches&&t.targetTouches.length?t.targetTouches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t}function Y(t,n){var r=zt(n),e={pageX:"clientX",pageY:"clientY"};return t in e&&!(t in r)&&e[t]in r&&(t=e[t]),r[t]}st.exports=Gt});var se=yt(ut(),1),ie=class{constructor(n,r,e){this.name=n,this.drake=r,this.options=e,this.initEvents=!1}},v=(function(t){return t.Cancel="cancel",t.Cloned="cloned",t.Drag="drag",t.DragEnd="dragend",t.Drop="drop",t.Out="out",t.Over="over",t.Remove="remove",t.Shadow="shadow",t.DropModel="dropModel",t.RemoveModel="removeModel",t})(v||{}),Kt=Object.keys(v).map(t=>v[t]),Ut=se.default||se,V=class{constructor(n=Ut){this.build=n}},j=(t,n,r)=>e=>e.pipe(ee(({event:a,name:o})=>a===t&&(n===void 0||o===n)),we(({name:a,args:o})=>r(a,o))),Wt=(t,[n,r,e])=>({name:t,el:n,container:r,source:e}),oe=(()=>{class t{constructor(r){this.drakeFactory=r,this.groups={},this.dispatch$=new Z,this.elContainerSource=e=>a=>this.dispatch$.pipe(j(e,a,Wt)),this.cancel=this.elContainerSource(v.Cancel),this.remove=this.elContainerSource(v.Remove),this.shadow=this.elContainerSource(v.Shadow),this.over=this.elContainerSource(v.Over),this.out=this.elContainerSource(v.Out),this.drag=e=>this.dispatch$.pipe(j(v.Drag,e,(a,[o,s])=>({name:a,el:o,source:s}))),this.dragend=e=>this.dispatch$.pipe(j(v.DragEnd,e,(a,[o])=>({name:a,el:o}))),this.drop=e=>this.dispatch$.pipe(j(v.Drop,e,(a,[o,s,l,h])=>({name:a,el:o,target:s,source:l,sibling:h}))),this.cloned=e=>this.dispatch$.pipe(j(v.Cloned,e,(a,[o,s,l])=>({name:a,clone:o,original:s,cloneType:l}))),this.dropModel=e=>this.dispatch$.pipe(j(v.DropModel,e,(a,[o,s,l,h,b,g,w,f,D])=>({name:a,el:o,target:s,source:l,sibling:h,item:b,sourceModel:g,targetModel:w,sourceIndex:f,targetIndex:D}))),this.removeModel=e=>this.dispatch$.pipe(j(v.RemoveModel,e,(a,[o,s,l,h,b,g])=>({name:a,el:o,container:s,source:l,item:h,sourceModel:b,sourceIndex:g}))),(this.drakeFactory===null||this.drakeFactory===void 0)&&(this.drakeFactory=new V)}add(r){if(this.find(r.name))throw new Error('Group named: "'+r.name+'" already exists.');return this.groups[r.name]=r,this.handleModels(r),this.setupEvents(r),r}find(r){return this.groups[r]}destroy(r){let e=this.find(r);e&&(e.drake&&e.drake.destroy(),delete this.groups[r])}createGroup(r,e){return this.add(new ie(r,this.drakeFactory.build([],e),e))}handleModels({name:r,drake:e,options:a}){let o,s,l;e.on("remove",(h,b,g)=>{if(!e.models)return;let w=e.models[e.containers.indexOf(g)];w=w.slice(0);let f=w.splice(s,1)[0];this.dispatch$.next({event:v.RemoveModel,name:r,args:[h,b,g,f,w,s]})}),e.on("drag",(h,b)=>{e.models&&(o=h,s=this.domIndexOf(h,b))}),e.on("drop",(h,b,g,w)=>{if(!e.models||!b)return;l=this.domIndexOf(h,b);let f=e.models[e.containers.indexOf(g)],D=e.models[e.containers.indexOf(b)],M;if(b===g)f=f.slice(0),M=f.splice(s,1)[0],f.splice(l,0,M),D=f;else{let I=o!==h;if(M=f[s],I){if(!a.copyItem)throw new Error("If you have enabled `copy` on a group, you must provide a `copyItem` function.");M=a.copyItem(M)}if(I||(f=f.slice(0),f.splice(s,1)),D=D.slice(0),D.splice(l,0,M),I)try{b.removeChild(h)}catch{}}this.dispatch$.next({event:v.DropModel,name:r,args:[h,b,g,w,M,f,D,s,l]})})}setupEvents(r){if(r.initEvents)return;r.initEvents=!0;let e=r.name,a=this,o=s=>{switch(s){case v.Drag:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Drop:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.DragEnd:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Cancel:case v.Remove:case v.Shadow:case v.Over:case v.Out:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Cloned:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.DropModel:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.RemoveModel:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;default:break}};Kt.forEach(o)}domIndexOf(r,e){if(e)return Array.prototype.indexOf.call(e.children,r)}static{this.\u0275fac=function(e){return new(e||t)(ye(V,8))}}static{this.\u0275prov=Me({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),pr=(()=>{class t{get container(){return this.el&&this.el.nativeElement}constructor(r,e){this.el=r,this.dragulaService=e,this.dragulaModelChange=new Se}ngOnChanges(r){if(r&&r.dragula){let{previousValue:e,currentValue:a}=r.dragula,o=!!e,s=!!a;o&&this.teardown(e),s&&this.setup()}else if(r&&r.dragulaModel){let{previousValue:e,currentValue:a}=r.dragulaModel,o=this.group?.drake;if(this.dragula&&o){o.models=o.models||[];let s=o.models.indexOf(e);s!==-1?(o.models.splice(s,1),a&&o.models.splice(s,0,a)):a&&o.models.push(a)}}}setup(){let r=a=>{this.dragulaModel&&(a.drake?.models?a.drake?.models?.push(this.dragulaModel):a.drake&&(a.drake.models=[this.dragulaModel]))};if(!this.dragula)return;let e=this.dragulaService.find(this.dragula);if(!e){let a={};e=this.dragulaService.createGroup(this.dragula,a)}r(e),e.drake?.containers.push(this.container),this.subscribe(this.dragula),this.group=e}subscribe(r){this.subs=new Q,this.subs.add(this.dragulaService.dropModel(r).subscribe(({source:e,target:a,sourceModel:o,targetModel:s})=>{e===this.el.nativeElement?this.dragulaModelChange.emit(o):a===this.el.nativeElement&&this.dragulaModelChange.emit(s)})),this.subs.add(this.dragulaService.removeModel(r).subscribe(({source:e,sourceModel:a})=>{e===this.el.nativeElement&&this.dragulaModelChange.emit(a)}))}teardown(r){this.subs?.unsubscribe();let e=this.dragulaService.find(r);if(e){let a=e.drake?.containers.indexOf(this.el.nativeElement);if(a!==-1&&e.drake?.containers.splice(a,1),this.dragulaModel&&e.drake&&e.drake.models){let o=e.drake.models.indexOf(this.dragulaModel);o!==-1&&e.drake.models.splice(o,1)}}}ngOnDestroy(){this.dragula&&this.teardown(this.dragula)}static{this.\u0275fac=function(e){return new(e||t)(te(Oe),te(oe))}}static{this.\u0275dir=ke({type:t,selectors:[["","dragula",""]],inputs:{dragula:"dragula",dragulaModel:"dragulaModel"},outputs:{dragulaModelChange:"dragulaModelChange"},standalone:!1,features:[xe]})}}return t})(),gr=(()=>{class t{static forRoot(){return{ngModule:t,providers:[oe]}}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275mod=De({type:t})}static{this.\u0275inj=Ce({providers:[oe]})}}return t})(),br=new V((t,n)=>new ae(t,n)),ae=class{constructor(n=[],r={},e){this.containers=n,this.options=r,this.models=e,this.emitter$=new Z,this.subs=new Q,this.dragging=!1}on(n,r){this.subs.add(this.emitter$.pipe(ee(({eventType:e})=>e===n)).subscribe(({eventType:e,args:a})=>{if(e===v.Drag){let o=Array.from(a),s=o[0],l=o[1];r(s,l);return}if(e===v.Drop){let o=Array.from(a),s=o[0],l=o[1],h=o[2],b=o[3];r(s,l,h,b);return}if(e===v.Remove){let o=Array.from(a),s=o[0],l=o[1],h=o[2];r(s,l,h);return}r(a)}))}start(n){this.dragging=!0}end(){this.dragging=!1}cancel(n){this.dragging=!1}canMove(n){return this.options.accepts?this.options.accepts(n):!1}remove(){this.dragging=!1}destroy(){this.subs.unsubscribe()}emit(n,...r){this.emitter$.next({eventType:n,args:r})}};export{oe as a,pr as b,gr as c};
@@ -0,0 +1 @@
1
+ import{A as Hr,b as Ut,c as Ee,n as Vr}from"./chunk-GTH5BSXR.js";import{$ as We,Aa as Dt,D as Ve,E as He,G as ae,Hc as Fr,Ib as xr,K as pr,L as H,Lc as qr,M as Et,Nc as Br,P as gr,Q as q,R as Ge,Rc as Ze,S as A,U as S,Uc as Ye,V as vr,X as C,Xa as Ir,Xb as jr,Z as mr,_ as T,a as ar,aa as d,ac as $r,b as cr,ba as Ot,bb as Ar,c as ur,cc as kr,d as ee,db as Tr,dc as zr,e as O,ea as ce,fa as D,g as z,h as U,hb as Nt,i as p,ib as x,j as lr,jb as Mr,k as Tt,ka as yr,kb as Er,l as dr,la as Rr,lb as Or,ma as Sr,mb as Pt,na as Cr,nb as Dr,o as R,oa as te,p as hr,pa as wr,pb as Me,q as F,r as Mt,ra as Qe,s as fr,sa as Ae,t as Be,ub as Nr,vb as Pr,wa as G,wb as Ur,xa as Te,xb as _r,ya as Ke,yb as Lr,z as V,za as br}from"./chunk-VX4RXOTH.js";import{a as h,b as P,h as m}from"./chunk-B4AJQJMI.js";var f="primary",ke=Symbol("RouteTitle"),$t=class{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function oe(t){return new $t(t)}function en(t,n,e){let r=e.path.split("/");if(r.length>t.length||e.pathMatch==="full"&&(n.hasChildren()||r.length<t.length))return null;let i={};for(let s=0;s<r.length;s++){let o=r[s],a=t[s];if(o[0]===":")i[o.substring(1)]=a;else if(o!==a.path)return null}return{consumed:t.slice(0,r.length),posParams:i}}function nt(t){return new Promise((n,e)=>{t.pipe(H()).subscribe({next:r=>n(r),error:r=>e(r)})})}function Wn(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;++e)if(!j(t[e],n[e]))return!1;return!0}function j(t,n){let e=t?kt(t):void 0,r=n?kt(n):void 0;if(!e||!r||e.length!=r.length)return!1;let i;for(let s=0;s<e.length;s++)if(i=e[s],!tn(t[i],n[i]))return!1;return!0}function kt(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function tn(t,n){if(Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!1;let e=[...t].sort(),r=[...n].sort();return e.every((i,s)=>r[s]===i)}else return t===n}function rn(t){return t.length>0?t[t.length-1]:null}function se(t){return Tt(t)?t:Pr(t)?U(Promise.resolve(t)):p(t)}function nn(t){return Tt(t)?nt(t):Promise.resolve(t)}var Qn={exact:sn,subset:an},on={exact:Kn,subset:Zn,ignored:()=>!0};function Gr(t,n,e){return Qn[e.paths](t.root,n.root,e.matrixParams)&&on[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment==="exact"&&t.fragment!==n.fragment)}function Kn(t,n){return j(t,n)}function sn(t,n,e){if(!ne(t.segments,n.segments)||!et(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!sn(t.children[r],n.children[r],e))return!1;return!0}function Zn(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>tn(t[e],n[e]))}function an(t,n,e){return cn(t,n,n.segments,e)}function cn(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!ne(i,e)||n.hasChildren()||!et(i,e,r))}else if(t.segments.length===e.length){if(!ne(t.segments,e)||!et(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!an(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),s=e.slice(t.segments.length);return!ne(t.segments,i)||!et(t.segments,i,r)||!t.children[f]?!1:cn(t.children[f],n,s,r)}}function et(t,n,e){return n.every((r,i)=>on[e](t[i].parameters,r.parameters))}var L=class{root;queryParams;fragment;_queryParamMap;constructor(n=new g([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=oe(this.queryParams),this._queryParamMap}toString(){return Jn.serialize(this)}},g=class{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return tt(this)}},W=class{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=oe(this.parameters),this._parameterMap}toString(){return ln(this)}};function Yn(t,n){return ne(t,n)&&t.every((e,r)=>j(e.parameters,n[r].parameters))}function ne(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function Xn(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===f&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==f&&(e=e.concat(n(i,r)))}),e}var Re=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>new Q,providedIn:"root"})}return t})(),Q=class{parse(n){let e=new Ft(n);return new L(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){let e=`/${Oe(n.root,!0)}`,r=ri(n.queryParams),i=typeof n.fragment=="string"?`#${ei(n.fragment)}`:"";return`${e}${r}${i}`}},Jn=new Q;function tt(t){return t.segments.map(n=>ln(n)).join("/")}function Oe(t,n){if(!t.hasChildren())return tt(t);if(n){let e=t.children[f]?Oe(t.children[f],!1):"",r=[];return Object.entries(t.children).forEach(([i,s])=>{i!==f&&r.push(`${i}:${Oe(s,!1)}`)}),r.length>0?`${e}(${r.join("//")})`:e}else{let e=Xn(t,(r,i)=>i===f?[Oe(t.children[f],!1)]:[`${i}:${Oe(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[f]!=null?`${tt(t)}/${e[0]}`:`${tt(t)}/(${e.join("//")})`}}function un(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Xe(t){return un(t).replace(/%3B/gi,";")}function ei(t){return encodeURI(t)}function zt(t){return un(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function rt(t){return decodeURIComponent(t)}function Wr(t){return rt(t.replace(/\+/g,"%20"))}function ln(t){return`${zt(t.path)}${ti(t.parameters)}`}function ti(t){return Object.entries(t).map(([n,e])=>`;${zt(n)}=${zt(e)}`).join("")}function ri(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${Xe(e)}=${Xe(i)}`).join("&"):`${Xe(e)}=${Xe(r)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}var ni=/^[^\/()?;#]+/;function _t(t){let n=t.match(ni);return n?n[0]:""}var ii=/^[^\/()?;=#]+/;function oi(t){let n=t.match(ii);return n?n[0]:""}var si=/^[^=?&#]+/;function ai(t){let n=t.match(si);return n?n[0]:""}var ci=/^[^&#]+/;function ui(t){let n=t.match(ci);return n?n[0]:""}var Ft=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new g([],{}):new g([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let r={};return this.peekStartsWith("(")&&(r=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(r[f]=new g(n,e)),r}parseSegment(){let n=_t(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new S(4009,!1);return this.capture(n),new W(rt(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let e=oi(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let i=_t(this.remaining);i&&(r=i,this.capture(r))}n[rt(e)]=rt(r)}parseQueryParam(n){let e=ai(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let o=ui(this.remaining);o&&(r=o,this.capture(r))}let i=Wr(e),s=Wr(r);if(n.hasOwnProperty(i)){let o=n[i];Array.isArray(o)||(o=[o],n[i]=o),o.push(s)}else n[i]=s}parseParens(n){let e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let r=_t(this.remaining),i=this.remaining[r.length];if(i!=="/"&&i!==")"&&i!==";")throw new S(4010,!1);let s;r.indexOf(":")>-1?(s=r.slice(0,r.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=f);let o=this.parseChildren();e[s??f]=Object.keys(o).length===1&&o[f]?o[f]:new g([],o),this.consumeOptional("//")}return e}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new S(4011,!1)}};function dn(t){return t.segments.length>0?new g([],{[f]:t}):t}function hn(t){let n={};for(let[r,i]of Object.entries(t.children)){let s=hn(i);if(r===f&&s.segments.length===0&&s.hasChildren())for(let[o,a]of Object.entries(s.children))n[o]=a;else(s.segments.length>0||s.hasChildren())&&(n[r]=s)}let e=new g(t.segments,n);return li(e)}function li(t){if(t.numberOfChildren===1&&t.children[f]){let n=t.children[f];return new g(t.segments.concat(n.segments),n.children)}return t}function K(t){return t instanceof L}function fn(t,n,e=null,r=null,i=new Q){let s=pn(t);return gn(s,n,e,r,i)}function pn(t){let n;function e(s){let o={};for(let c of s.children){let u=e(c);o[c.outlet]=u}let a=new g(s.url,o);return s===t&&(n=a),a}let r=e(t.root),i=dn(r);return n??i}function gn(t,n,e,r,i){let s=t;for(;s.parent;)s=s.parent;if(n.length===0)return Lt(s,s,s,e,r,i);let o=di(n);if(o.toRoot())return Lt(s,s,new g([],{}),e,r,i);let a=hi(o,s,t),c=a.processChildren?Ne(a.segmentGroup,a.index,o.commands):mn(a.segmentGroup,a.index,o.commands);return Lt(s,a.segmentGroup,c,e,r,i)}function it(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function Ue(t){return typeof t=="object"&&t!=null&&t.outlets}function Qr(t,n,e){t||="\u0275";let r=new L;return r.queryParams={[t]:n},e.parse(e.serialize(r)).queryParams[t]}function Lt(t,n,e,r,i,s){let o={};for(let[u,l]of Object.entries(r??{}))o[u]=Array.isArray(l)?l.map(v=>Qr(u,v,s)):Qr(u,l,s);let a;t===n?a=e:a=vn(t,n,e);let c=dn(hn(a));return new L(c,o,i)}function vn(t,n,e){let r={};return Object.entries(t.children).forEach(([i,s])=>{s===n?r[i]=e:r[i]=vn(s,n,e)}),new g(t.segments,r)}var ot=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&&it(r[0]))throw new S(4003,!1);let i=r.find(Ue);if(i&&i!==rn(r))throw new S(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function di(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new ot(!0,0,t);let n=0,e=!1,r=t.reduce((i,s,o)=>{if(typeof s=="object"&&s!=null){if(s.outlets){let a={};return Object.entries(s.outlets).forEach(([c,u])=>{a[c]=typeof u=="string"?u.split("/"):u}),[...i,{outlets:a}]}if(s.segmentPath)return[...i,s.segmentPath]}return typeof s!="string"?[...i,s]:o===0?(s.split("/").forEach((a,c)=>{c==0&&a==="."||(c==0&&a===""?e=!0:a===".."?n++:a!=""&&i.push(a))}),i):[...i,s]},[]);return new ot(e,n,r)}var le=class{segmentGroup;processChildren;index;constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function hi(t,n,e){if(t.isAbsolute)return new le(n,!0,0);if(!e)return new le(n,!1,NaN);if(e.parent===null)return new le(e,!0,0);let r=it(t.commands[0])?0:1,i=e.segments.length-1+r;return fi(e,i,t.numberOfDoubleDots)}function fi(t,n,e){let r=t,i=n,s=e;for(;s>i;){if(s-=i,r=r.parent,!r)throw new S(4005,!1);i=r.segments.length}return new le(r,!1,i-s)}function pi(t){return Ue(t[0])?t[0].outlets:{[f]:t}}function mn(t,n,e){if(t??=new g([],{}),t.segments.length===0&&t.hasChildren())return Ne(t,n,e);let r=gi(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndex<t.segments.length){let s=new g(t.segments.slice(0,r.pathIndex),{});return s.children[f]=new g(t.segments.slice(r.pathIndex),t.children),Ne(s,0,i)}else return r.match&&i.length===0?new g(t.segments,{}):r.match&&!t.hasChildren()?qt(t,n,e):r.match?Ne(t,0,i):qt(t,n,e)}function Ne(t,n,e){if(e.length===0)return new g(t.segments,{});{let r=pi(e),i={};if(Object.keys(r).some(s=>s!==f)&&t.children[f]&&t.numberOfChildren===1&&t.children[f].segments.length===0){let s=Ne(t.children[f],n,e);return new g(t.segments,s.children)}return Object.entries(r).forEach(([s,o])=>{typeof o=="string"&&(o=[o]),o!==null&&(i[s]=mn(t.children[s],n,o))}),Object.entries(t.children).forEach(([s,o])=>{r[s]===void 0&&(i[s]=o)}),new g(t.segments,i)}}function gi(t,n,e){let r=0,i=n,s={match:!1,pathIndex:0,commandIndex:0};for(;i<t.segments.length;){if(r>=e.length)return s;let o=t.segments[i],a=e[r];if(Ue(a))break;let c=`${a}`,u=r<e.length-1?e[r+1]:null;if(i>0&&c===void 0)break;if(c&&u&&typeof u=="object"&&u.outlets===void 0){if(!Zr(c,u,o))return s;r+=2}else{if(!Zr(c,{},o))return s;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function qt(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i<e.length;){let s=e[i];if(Ue(s)){let c=vi(s.outlets);return new g(r,c)}if(i===0&&it(e[0])){let c=t.segments[n];r.push(new W(c.path,Kr(e[0]))),i++;continue}let o=Ue(s)?s.outlets[f]:`${s}`,a=i<e.length-1?e[i+1]:null;o&&a&&it(a)?(r.push(new W(o,Kr(a))),i+=2):(r.push(new W(o,{})),i++)}return new g(r,{})}function vi(t){let n={};return Object.entries(t).forEach(([e,r])=>{typeof r=="string"&&(r=[r]),r!==null&&(n[e]=qt(new g([],{}),0,r))}),n}function Kr(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function Zr(t,n,e){return t==e.path&&j(n,e.parameters)}var de="imperative",y=(function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t})(y||{}),E=class{id;url;constructor(n,e){this.id=n,this.url=e}},Z=class extends E{type=y.NavigationStart;navigationTrigger;restoredState;constructor(n,e,r="imperative",i=null){super(n,e),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},N=class extends E{urlAfterRedirects;type=y.NavigationEnd;constructor(n,e,r){super(n,e),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},I=(function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t})(I||{}),fe=(function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t})(fe||{}),$=class extends E{reason;code;type=y.NavigationCancel;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},k=class extends E{reason;code;type=y.NavigationSkipped;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}},pe=class extends E{error;target;type=y.NavigationError;constructor(n,e,r,i){super(n,e),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},_e=class extends E{urlAfterRedirects;state;type=y.RoutesRecognized;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},st=class extends E{urlAfterRedirects;state;type=y.GuardsCheckStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},at=class extends E{urlAfterRedirects;state;shouldActivate;type=y.GuardsCheckEnd;constructor(n,e,r,i,s){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=s}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},ct=class extends E{urlAfterRedirects;state;type=y.ResolveStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},ut=class extends E{urlAfterRedirects;state;type=y.ResolveEnd;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},lt=class{route;type=y.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},dt=class{route;type=y.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},ht=class{snapshot;type=y.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},ft=class{snapshot;type=y.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},pt=class{snapshot;type=y.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},gt=class{snapshot;type=y.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},ge=class{routerEvent;position;anchor;type=y.Scroll;constructor(n,e,r){this.routerEvent=n,this.position=e,this.anchor=r}toString(){let n=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${n}')`}},Le=class{},ve=class{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function mi(t){return!(t instanceof Le)&&!(t instanceof ve)}function yi(t,n){return t.providers&&!t._injector&&(t._injector=Pt(t.providers,n,`Route: ${t.path}`)),t._injector??n}function _(t){return t.outlet||f}function Ri(t,n){let e=t.filter(r=>_(r)===n);return e.push(...t.filter(r=>_(r)!==n)),e}function Se(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){let e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}var vt=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return Se(this.route?.snapshot)??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Ce(this.rootInjector)}},Ce=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new vt(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(r){return new(r||t)(We(ce))};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),mt=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=Bt(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=Bt(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=Vt(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return Vt(n,this._root).map(e=>e.value)}};function Bt(t,n){if(t===n.value)return n;for(let e of n.children){let r=Bt(t,e);if(r)return r}return null}function Vt(t,n){if(t===n.value)return[n];for(let e of n.children){let r=Vt(t,e);if(r.length)return r.unshift(n),r}return[]}var M=class{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function ue(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var xe=class extends mt{snapshot;constructor(n,e){super(n),this.snapshot=e,Zt(this,n)}toString(){return this.snapshot.toString()}};function yn(t){let n=Si(t),e=new O([new W("",{})]),r=new O({}),i=new O({}),s=new O({}),o=new O(""),a=new B(e,r,s,o,i,f,t,n.root);return a.snapshot=n.root,new xe(new M(a,[]),n)}function Si(t){let n={},e={},r={},s=new ie([],n,r,"",e,f,t,null,{});return new je("",new M(s,[]))}var B=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,r,i,s,o,a,c){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=s,this.outlet=o,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe(R(u=>u[ke]))??p(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=s}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(R(n=>oe(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(R(n=>oe(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function yt(t,n,e="emptyOnly"){let r,{routeConfig:i}=t;return n!==null&&(e==="always"||i?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:h(h({},n.params),t.params),data:h(h({},n.data),t.data),resolve:h(h(h(h({},t.data),n.data),i?.data),t._resolvedData)}:r={params:h({},t.params),data:h({},t.data),resolve:h(h({},t.data),t._resolvedData??{})},i&&Sn(i)&&(r.resolve[ke]=i.title),r}var ie=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;get title(){return this.data?.[ke]}constructor(n,e,r,i,s,o,a,c,u){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=s,this.outlet=o,this.component=a,this.routeConfig=c,this._resolve=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=oe(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=oe(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${e}')`}},je=class extends mt{url;constructor(n,e){super(e),this.url=n,Zt(this,e)}toString(){return Rn(this._root)}};function Zt(t,n){n.value._routerState=t,n.children.forEach(e=>Zt(t,e))}function Rn(t){let n=t.children.length>0?` { ${t.children.map(Rn).join(", ")} } `:"";return`${t.value}${n}`}function xt(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,j(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),j(n.params,e.params)||t.paramsSubject.next(e.params),Wn(n.url,e.url)||t.urlSubject.next(e.url),j(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Ht(t,n){let e=j(t.params,n.params)&&Yn(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||Ht(t.parent,n.parent))}function Sn(t){return typeof t.title=="string"||t.title===null}var Cn=new T(""),Yt=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=f;activateEvents=new te;deactivateEvents=new te;attachEvents=new te;detachEvents=new te;routerOutletData=Br();parentContexts=d(Ce);location=d(Er);changeDetector=d(Ze);inputBinder=d(wt,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new S(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new S(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new S(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new S(4013,!1);this._activatedRoute=e;let i=this.location,o=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new Gt(e,a,i.injector,this.routerOutletData);this.activated=i.createComponent(o,{index:i.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(r){return new(r||t)};static \u0275dir=Me({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[Te]})}return t})(),Gt=class{route;childContexts;parent;outletData;constructor(n,e,r,i){this.route=n,this.childContexts=e,this.parent=r,this.outletData=i}get(n,e){return n===B?this.route:n===Ce?this.childContexts:n===Cn?this.outletData:this.parent.get(n,e)}},wt=new T("");var Xt=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275cmp=Dr({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(r,i){r&1&&xr(0,"router-outlet")},dependencies:[Yt],encapsulation:2})}return t})();function Jt(t){let n=t.children&&t.children.map(Jt),e=n?P(h({},t),{children:n}):h({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==f&&(e.component=Xt),e}function Ci(t,n,e){let r=$e(t,n._root,e?e._root:void 0);return new xe(r,n)}function $e(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let r=e.value;r._futureSnapshot=n.value;let i=wi(t,n,e);return new M(r,i)}else{if(t.shouldAttach(n.value)){let s=t.retrieve(n.value);if(s!==null){let o=s.route;return o.value._futureSnapshot=n.value,o.children=n.children.map(a=>$e(t,a)),o}}let r=bi(n.value),i=n.children.map(s=>$e(t,s));return new M(r,i)}}function wi(t,n,e){return n.children.map(r=>{for(let i of e.children)if(t.shouldReuseRoute(r.value,i.value.snapshot))return $e(t,r,i);return $e(t,r)})}function bi(t){return new B(new O(t.url),new O(t.params),new O(t.queryParams),new O(t.fragment),new O(t.data),t.outlet,t.component,t)}var me=class{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}},wn="ngNavigationCancelingError";function Rt(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=K(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=bn(!1,I.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function bn(t,n){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[wn]=!0,e.cancellationCode=n,e}function Ii(t){return In(t)&&K(t.url)}function In(t){return!!t&&t[wn]}var Ai=(t,n,e,r)=>R(i=>(new Wt(n,i.targetRouterState,i.currentRouterState,e,r).activate(t),i)),Wt=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,r,i,s){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=s}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),xt(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=ue(e);n.children.forEach(s=>{let o=s.value.outlet;this.deactivateRoutes(s,i[o],r),delete i[o]}),Object.values(i).forEach(s=>{this.deactivateRouteAndItsChildren(s,r)})}deactivateRoutes(n,e,r){let i=n.value,s=e?e.value:null;if(i===s)if(i.component){let o=r.getContext(i.outlet);o&&this.deactivateChildRoutes(n,e,o.children)}else this.deactivateChildRoutes(n,e,r);else s&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,s=ue(n);for(let o of Object.values(s))this.deactivateRouteAndItsChildren(o,i);if(r&&r.outlet){let o=r.outlet.detach(),a=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:o,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,s=ue(n);for(let o of Object.values(s))this.deactivateRouteAndItsChildren(o,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,e,r){let i=ue(e);n.children.forEach(s=>{this.activateRoutes(s,i[s.value.outlet],r),this.forwardEvent(new gt(s.value.snapshot))}),n.children.length&&this.forwardEvent(new ft(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,s=e?e.value:null;if(xt(i),i===s)if(i.component){let o=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,o.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let o=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let a=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),o.children.onOutletReAttached(a.contexts),o.attachRef=a.componentRef,o.route=a.route.value,o.outlet&&o.outlet.attach(a.componentRef,a.route.value),xt(a.route.value),this.activateChildRoutes(n,null,o.children)}else o.attachRef=null,o.route=i,o.outlet&&o.outlet.activateWith(i,o.injector),this.activateChildRoutes(n,null,o.children)}else this.activateChildRoutes(n,null,r)}},St=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},he=class{component;route;constructor(n,e){this.component=n,this.route=e}};function Ti(t,n,e){let r=t._root,i=n?n._root:null;return De(r,i,e,[r.value])}function Mi(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function we(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t=="function"&&!mr(t)?t:n.get(t):r}function De(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let s=ue(n);return t.children.forEach(o=>{Ei(o,s[o.value.outlet],e,r.concat([o.value]),i),delete s[o.value.outlet]}),Object.entries(s).forEach(([o,a])=>Pe(a,e.getContext(o),i)),i}function Ei(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let s=t.value,o=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(o&&s.routeConfig===o.routeConfig){let c=Oi(o,s,s.routeConfig.runGuardsAndResolvers);c?i.canActivateChecks.push(new St(r)):(s.data=o.data,s._resolvedData=o._resolvedData),s.component?De(t,n,a?a.children:null,r,i):De(t,n,e,r,i),c&&a&&a.outlet&&a.outlet.isActivated&&i.canDeactivateChecks.push(new he(a.outlet.component,o))}else o&&Pe(n,a,i),i.canActivateChecks.push(new St(r)),s.component?De(t,null,a?a.children:null,r,i):De(t,null,e,r,i);return i}function Oi(t,n,e){if(typeof e=="function")return e(t,n);switch(e){case"pathParamsChange":return!ne(t.url,n.url);case"pathParamsOrQueryParamsChange":return!ne(t.url,n.url)||!j(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Ht(t,n)||!j(t.queryParams,n.queryParams);case"paramsChange":default:return!Ht(t,n)}}function Pe(t,n,e){let r=ue(t),i=t.value;Object.entries(r).forEach(([s,o])=>{i.component?n?Pe(o,n.children.getContext(s),e):Pe(o,null,e):Pe(o,n,e)}),i.component?n&&n.outlet&&n.outlet.isActivated?e.canDeactivateChecks.push(new he(n.outlet.component,i)):e.canDeactivateChecks.push(new he(null,i)):e.canDeactivateChecks.push(new he(null,i))}function ze(t){return typeof t=="function"}function Di(t){return typeof t=="boolean"}function Ni(t){return t&&ze(t.canLoad)}function Pi(t){return t&&ze(t.canActivate)}function Ui(t){return t&&ze(t.canActivateChild)}function _i(t){return t&&ze(t.canDeactivate)}function Li(t){return t&&ze(t.canMatch)}function An(t){return t instanceof dr||t?.name==="EmptyError"}var Je=Symbol("INITIAL_VALUE");function ye(){return q(t=>hr(t.map(n=>n.pipe(ae(1),gr(Je)))).pipe(R(n=>{for(let e of n)if(e!==!0){if(e===Je)return Je;if(e===!1||xi(e))return e}return!0}),V(n=>n!==Je),ae(1)))}function xi(t){return K(t)||t instanceof me}function Tn(t){return t.aborted?p(void 0).pipe(ae(1)):new ur(n=>{let e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function Mn(t){return Ge(Tn(t))}function ji(t,n){return F(e=>{let{targetSnapshot:r,currentSnapshot:i,guards:{canActivateChecks:s,canDeactivateChecks:o}}=e;return o.length===0&&s.length===0?p(P(h({},e),{guardsResult:!0})):$i(o,r,i,t).pipe(F(a=>a&&Di(a)?ki(r,s,t,n):p(a)),R(a=>P(h({},e),{guardsResult:a})))})}function $i(t,n,e,r){return U(t).pipe(F(i=>Vi(i.component,i.route,e,n,r)),H(i=>i!==!0,!0))}function ki(t,n,e,r){return U(n).pipe(He(i=>fr(Fi(i.route.parent,r),zi(i.route,r),Bi(t,i.path,e),qi(t,i.route,e))),H(i=>i!==!0,!0))}function zi(t,n){return t!==null&&n&&n(new pt(t)),p(!0)}function Fi(t,n){return t!==null&&n&&n(new ht(t)),p(!0)}function qi(t,n,e){let r=n.routeConfig?n.routeConfig.canActivate:null;if(!r||r.length===0)return p(!0);let i=r.map(s=>Be(()=>{let o=Se(n)??e,a=we(s,o),c=Pi(a)?a.canActivate(n,t):D(o,()=>a(n,t));return se(c).pipe(H())}));return p(i).pipe(ye())}function Bi(t,n,e){let r=n[n.length-1],s=n.slice(0,n.length-1).reverse().map(o=>Mi(o)).filter(o=>o!==null).map(o=>Be(()=>{let a=o.guards.map(c=>{let u=Se(o.node)??e,l=we(c,u),v=Ui(l)?l.canActivateChild(r,t):D(u,()=>l(r,t));return se(v).pipe(H())});return p(a).pipe(ye())}));return p(s).pipe(ye())}function Vi(t,n,e,r,i){let s=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!s||s.length===0)return p(!0);let o=s.map(a=>{let c=Se(n)??i,u=we(a,c),l=_i(u)?u.canDeactivate(t,n,e,r):D(c,()=>u(t,n,e,r));return se(l).pipe(H())});return p(o).pipe(ye())}function Hi(t,n,e,r,i){let s=n.canLoad;if(s===void 0||s.length===0)return p(!0);let o=s.map(a=>{let c=we(a,t),u=Ni(c)?c.canLoad(n,e):D(t,()=>c(n,e)),l=se(u);return i?l.pipe(Mn(i)):l});return p(o).pipe(ye(),En(r))}function En(t){return cr(A(n=>{if(typeof n!="boolean")throw Rt(t,n)}),R(n=>n===!0))}function Gi(t,n,e,r,i){let s=n.canMatch;if(!s||s.length===0)return p(!0);let o=s.map(a=>{let c=we(a,t),u=Li(c)?c.canMatch(n,e):D(t,()=>c(n,e)),l=se(u);return i?l.pipe(Mn(i)):l});return p(o).pipe(ye(),En(r))}var re=class On extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,On.prototype)}},Qt=class Dn extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,Dn.prototype)}};function Wi(t){throw new S(4e3,!1)}function Qi(t){throw bn(!1,I.GuardRejected)}var Ki=class{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){return m(this,null,function*(){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return r;if(i.numberOfChildren>1||!i.children[f])throw Wi(`${n.redirectTo}`);i=i.children[f]}})}applyRedirectCommands(n,e,r,i,s){return m(this,null,function*(){let o=yield Zi(e,i,s);if(o instanceof L)throw new Qt(o);let a=this.applyRedirectCreateUrlTree(o,this.urlSerializer.parse(o),n,r);if(o[0]==="/")throw new Qt(a);return a})}applyRedirectCreateUrlTree(n,e,r,i){let s=this.createSegmentGroup(n,e.root,r,i);return new L(s,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,s])=>{if(typeof s=="string"&&s[0]===":"){let a=s.substring(1);r[i]=e[a]}else r[i]=s}),r}createSegmentGroup(n,e,r,i){let s=this.createSegments(n,e.segments,r,i),o={};return Object.entries(e.children).forEach(([a,c])=>{o[a]=this.createSegmentGroup(n,c,r,i)}),new g(s,o)}createSegments(n,e,r,i){return e.map(s=>s.path[0]===":"?this.findPosParam(n,s,i):this.findOrReturn(s,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new S(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}};function Zi(t,n,e){if(typeof t=="string")return Promise.resolve(t);let r=t,{queryParams:i,fragment:s,routeConfig:o,url:a,outlet:c,params:u,data:l,title:v}=n;return nt(se(D(e,()=>r({params:u,data:l,queryParams:i,fragment:s,routeConfig:o,url:a,outlet:c,title:v}))))}var Kt={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Yi(t,n,e,r,i,s){let o=Nn(t,n,e);return o.matched?(r=yi(n,r),Gi(r,n,e,i,s).pipe(R(a=>a===!0?o:h({},Kt)))):p(o)}function Nn(t,n,e){if(n.path==="**")return Xi(e);if(n.path==="")return n.pathMatch==="full"&&(t.hasChildren()||e.length>0)?h({},Kt):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||en)(e,t,n);if(!i)return h({},Kt);let s={};Object.entries(i.posParams??{}).forEach(([a,c])=>{s[a]=c.path});let o=i.consumed.length>0?h(h({},s),i.consumed[i.consumed.length-1].parameters):s;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:o,positionalParamSegments:i.posParams??{}}}function Xi(t){return{matched:!0,parameters:t.length>0?rn(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Yr(t,n,e,r){return e.length>0&&to(t,e,r)?{segmentGroup:new g(n,eo(r,new g(e,t.children))),slicedSegments:[]}:e.length===0&&ro(t,e,r)?{segmentGroup:new g(t.segments,Ji(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new g(t.segments,t.children),slicedSegments:e}}function Ji(t,n,e,r){let i={};for(let s of e)if(bt(t,n,s)&&!r[_(s)]){let o=new g([],{});i[_(s)]=o}return h(h({},r),i)}function eo(t,n){let e={};e[f]=n;for(let r of t)if(r.path===""&&_(r)!==f){let i=new g([],{});e[_(r)]=i}return e}function to(t,n,e){return e.some(r=>bt(t,n,r)&&_(r)!==f)}function ro(t,n,e){return e.some(r=>bt(t,n,r))}function bt(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch==="full"?!1:e.path===""}function no(t,n,e){return n.length===0&&!t.children[e]}var io=class{};function oo(t,n,e,r,i,s,o="emptyOnly",a){return m(this,null,function*(){return new ao(t,n,e,r,i,o,s,a).recognize()})}var so=31,ao=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,r,i,s,o,a,c){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=s,this.paramsInheritanceStrategy=o,this.urlSerializer=a,this.abortSignal=c,this.applyRedirects=new Ki(this.urlSerializer,this.urlTree)}noMatchError(n){return new S(4002,`'${n.segmentGroup}'`)}recognize(){return m(this,null,function*(){let n=Yr(this.urlTree.root,[],[],this.config).segmentGroup,{children:e,rootSnapshot:r}=yield this.match(n),i=new M(r,e),s=new je("",i),o=fn(r,[],this.urlTree.queryParams,this.urlTree.fragment);return o.queryParams=this.urlTree.queryParams,s.url=this.urlSerializer.serialize(o),{state:s,tree:o}})}match(n){return m(this,null,function*(){let e=new ie([],Object.freeze({}),Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),f,this.rootComponentType,null,{});try{return{children:yield this.processSegmentGroup(this.injector,this.config,n,f,e),rootSnapshot:e}}catch(r){if(r instanceof Qt)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof re?this.noMatchError(r):r}})}processSegmentGroup(n,e,r,i,s){return m(this,null,function*(){if(r.segments.length===0&&r.hasChildren())return this.processChildren(n,e,r,s);let o=yield this.processSegment(n,e,r,r.segments,i,!0,s);return o instanceof M?[o]:[]})}processChildren(n,e,r,i){return m(this,null,function*(){let s=[];for(let c of Object.keys(r.children))c==="primary"?s.unshift(c):s.push(c);let o=[];for(let c of s){let u=r.children[c],l=Ri(e,c),v=yield this.processSegmentGroup(n,l,u,c,i);o.push(...v)}let a=Pn(o);return co(a),a})}processSegment(n,e,r,i,s,o,a){return m(this,null,function*(){for(let c of e)try{return yield this.processSegmentAgainstRoute(c._injector??n,e,c,r,i,s,o,a)}catch(u){if(u instanceof re||An(u))continue;throw u}if(no(r,i,s))return new io;throw new re(r)})}processSegmentAgainstRoute(n,e,r,i,s,o,a,c){return m(this,null,function*(){if(_(r)!==o&&(o===f||!bt(i,s,r)))throw new re(i);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(n,i,r,s,o,c);if(this.allowRedirects&&a)return this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,s,o,c);throw new re(i)})}expandSegmentAgainstRouteUsingRedirect(n,e,r,i,s,o,a){return m(this,null,function*(){let{matched:c,parameters:u,consumedSegments:l,positionalParamSegments:v,remainingSegments:w}=Nn(e,i,s);if(!c)throw new re(e);typeof i.redirectTo=="string"&&i.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>so&&(this.allowRedirects=!1));let b=new ie(s,u,Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Xr(i),_(i),i.component??i._loadedComponent??null,i,Jr(i)),Y=yt(b,a,this.paramsInheritanceStrategy);if(b.params=Object.freeze(Y.params),b.data=Object.freeze(Y.data),this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let X=yield this.applyRedirects.applyRedirectCommands(l,i.redirectTo,v,b,n),J=yield this.applyRedirects.lineralizeSegments(i,X);return this.processSegment(n,r,e,J.concat(w),o,!1,a)})}matchSegmentAgainstRoute(n,e,r,i,s,o){return m(this,null,function*(){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let a=yield nt(Yi(e,r,i,n,this.urlSerializer,this.abortSignal));if(r.path==="**"&&(e.children={}),!a?.matched)throw new re(e);n=r._injector??n;let{routes:c}=yield this.getChildConfig(n,r,i),u=r._loadedInjector??n,{parameters:l,consumedSegments:v,remainingSegments:w}=a,b=new ie(v,l,Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Xr(r),_(r),r.component??r._loadedComponent??null,r,Jr(r)),Y=yt(b,o,this.paramsInheritanceStrategy);b.params=Object.freeze(Y.params),b.data=Object.freeze(Y.data);let{segmentGroup:X,slicedSegments:J}=Yr(e,v,w,c);if(J.length===0&&X.hasChildren()){let Hn=yield this.processChildren(u,c,X,b);return new M(b,Hn)}if(c.length===0&&J.length===0)return new M(b,[]);let qe=_(r)===s,sr=yield this.processSegment(u,c,X,J,qe?f:s,!0,b);return new M(b,sr instanceof M?[sr]:[])})}getChildConfig(n,e,r){return m(this,null,function*(){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(e._loadedRoutes!==void 0)return{routes:e._loadedRoutes,injector:e._loadedInjector};if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(yield nt(Hi(n,e,r,this.urlSerializer,this.abortSignal))){let s=yield this.configLoader.loadChildren(n,e);return e._loadedRoutes=s.routes,e._loadedInjector=s.injector,s}throw Qi(e)}return{routes:[],injector:n}})}};function co(t){t.sort((n,e)=>n.value.outlet===f?-1:e.value.outlet===f?1:n.value.outlet.localeCompare(e.value.outlet))}function uo(t){let n=t.value.routeConfig;return n&&n.path===""}function Pn(t){let n=[],e=new Set;for(let r of t){if(!uo(r)){n.push(r);continue}let i=n.find(s=>r.value.routeConfig===s.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=Pn(r.children);n.push(new M(r.value,i))}return n.filter(r=>!e.has(r))}function Xr(t){return t.data||{}}function Jr(t){return t.resolve||{}}var lo=new T("",{factory:()=>oo});function ho(t,n,e,r,i,s,o){let a=t.get(lo);return F(c=>p(c).pipe(q(u=>a(t,n,e,r,u.extractedUrl,i,s,o)),R(({state:u,tree:l})=>P(h({},c),{targetSnapshot:u,urlAfterRedirects:l}))))}function fo(t,n){return F(e=>{let{targetSnapshot:r,guards:{canActivateChecks:i}}=e;if(!i.length)return p(e);let s=new Set(i.map(c=>c.route)),o=new Set;for(let c of s)if(!o.has(c))for(let u of Un(c))o.add(u);let a=0;return U(o).pipe(He(c=>s.has(c)?po(c,r,t,n):(c.data=yt(c,c.parent,t).resolve,p(void 0))),A(()=>a++),Et(1),F(c=>a===o.size?p(e):z))})}function Un(t){let n=t.children.map(e=>Un(e)).flat();return[t,...n]}function po(t,n,e,r){let i=t.routeConfig,s=t._resolve;return i?.title!==void 0&&!Sn(i)&&(s[ke]=i.title),Be(()=>(t.data=yt(t,t.parent,e).resolve,go(s,t,n,r).pipe(R(o=>(t._resolvedData=o,t.data=h(h({},t.data),o),null)))))}function go(t,n,e,r){let i=kt(t);if(i.length===0)return p({});let s={};return U(i).pipe(F(o=>vo(t[o],n,e,r).pipe(H(),A(a=>{if(a instanceof me)throw Rt(new Q,a);s[o]=a}))),Et(1),R(()=>s),Ve(o=>An(o)?z:lr(o)))}function vo(t,n,e,r){let i=Se(n)??r,s=we(t,i),o=s.resolve?s.resolve(n,e):D(i,()=>s(n,e));return se(o)}function jt(t){return q(n=>{let e=t(n);return e?U(e).pipe(R(()=>n)):p(n)})}var er=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(s=>s.outlet===f);return r}getResolvedTitleForRoute(e){return e.data[ke]}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(_n),providedIn:"root"})}return t})(),_n=(()=>{class t extends er{title;constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static \u0275fac=function(r){return new(r||t)(We(Hr))};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),be=new T("",{factory:()=>({})}),Fe=new T(""),Ln=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=d(Fr);loadComponent(e,r){return m(this,null,function*(){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=m(this,null,function*(){try{let s=yield nn(D(e,()=>r.loadComponent())),o=yield $n(jn(s));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=o,o}finally{this.componentLoaders.delete(r)}});return this.componentLoaders.set(r,i),i})}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=m(this,null,function*(){try{let s=yield xn(r,this.compiler,e,this.onLoadEndListener);return r._loadedRoutes=s.routes,r._loadedInjector=s.injector,s}finally{this.childrenLoaders.delete(r)}});return this.childrenLoaders.set(r,i),i}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function xn(t,n,e,r){return m(this,null,function*(){let i=yield nn(D(e,()=>t.loadChildren())),s=yield $n(jn(i)),o;s instanceof Or||Array.isArray(s)?o=s:o=yield n.compileModuleAsync(s),r&&r(t);let a,c,u=!1;return Array.isArray(o)?(c=o,u=!0):(a=o.create(e).injector,c=a.get(Fe,[],{optional:!0,self:!0}).flat()),{routes:c.map(Jt),injector:a}})}function mo(t){return t&&typeof t=="object"&&"default"in t}function jn(t){return mo(t)?t.default:t}function $n(t){return m(this,null,function*(){return t})}var It=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(yo),providedIn:"root"})}return t})(),yo=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),tr=new T(""),rr=new T("");function kn(t,n,e){let r=t.get(rr),i=t.get(Rr);if(!i.startViewTransition||r.skipNextTransition)return r.skipNextTransition=!1,new Promise(u=>setTimeout(u));let s,o=new Promise(u=>{s=u}),a=i.startViewTransition(()=>(s(),Ro(t)));a.ready.catch(u=>{}),a.finished.catch(u=>{});let{onViewTransitionCreated:c}=r;return c&&D(t,()=>c({transition:a,from:n,to:e})),o}function Ro(t){return new Promise(n=>{Tr({read:()=>setTimeout(n)},{injector:t})})}var So=()=>{},zn=new T(""),nr=(()=>{class t{currentNavigation=Ae(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=Ae(null);events=new ee;transitionAbortWithErrorSubject=new ee;configLoader=d(Ln);environmentInjector=d(ce);destroyRef=d(Sr);urlSerializer=d(Re);rootContexts=d(Ce);location=d(Ee);inputBindingEnabled=d(wt,{optional:!0})!==null;titleStrategy=d(er);options=d(be,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=d(It);createViewTransition=d(tr,{optional:!0});navigationErrorHandler=d(zn,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>p(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=i=>this.events.next(new lt(i)),r=i=>this.events.next(new dt(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;G(()=>{this.transitions?.next(P(h({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r}))})}setupNavigations(e){return this.transitions=new O(null),this.transitions.pipe(V(r=>r!==null),q(r=>{let i=!1,s=new AbortController;return p(r).pipe(q(o=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",I.SupersededByNewNavigation),z;this.currentTransition=r;let a=this.lastSuccessfulNavigation();this.currentNavigation.set({id:o.id,initialUrl:o.rawUrl,extractedUrl:o.extractedUrl,targetBrowserUrl:typeof o.extras.browserUrl=="string"?this.urlSerializer.parse(o.extras.browserUrl):o.extras.browserUrl,trigger:o.source,extras:o.extras,previousNavigation:a?P(h({},a),{previousNavigation:null}):null,abort:()=>s.abort()});let c=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),u=o.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!c&&u!=="reload")return this.events.next(new k(o.id,this.urlSerializer.serialize(o.rawUrl),"",fe.IgnoredSameUrlNavigation)),o.resolve(!1),z;if(this.urlHandlingStrategy.shouldProcessUrl(o.rawUrl))return p(o).pipe(q(l=>(this.events.next(new Z(l.id,this.urlSerializer.serialize(l.extractedUrl),l.source,l.restoredState)),l.id!==this.navigationId?z:Promise.resolve(l))),ho(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,s.signal),A(l=>{r.targetSnapshot=l.targetSnapshot,r.urlAfterRedirects=l.urlAfterRedirects,this.currentNavigation.update(w=>(w.finalUrl=l.urlAfterRedirects,w));let v=new _e(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(v)}));if(c&&this.urlHandlingStrategy.shouldProcessUrl(o.currentRawUrl)){let{id:l,extractedUrl:v,source:w,restoredState:b,extras:Y}=o,X=new Z(l,this.urlSerializer.serialize(v),w,b);this.events.next(X);let J=yn(this.rootComponentType).snapshot;return this.currentTransition=r=P(h({},o),{targetSnapshot:J,urlAfterRedirects:v,extras:P(h({},Y),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(qe=>(qe.finalUrl=v,qe)),p(r)}else return this.events.next(new k(o.id,this.urlSerializer.serialize(o.extractedUrl),"",fe.IgnoredByUrlHandlingStrategy)),o.resolve(!1),z}),A(o=>{let a=new st(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects),o.targetSnapshot);this.events.next(a)}),R(o=>(this.currentTransition=r=P(h({},o),{guards:Ti(o.targetSnapshot,o.currentSnapshot,this.rootContexts)}),r)),ji(this.environmentInjector,o=>this.events.next(o)),A(o=>{if(r.guardsResult=o.guardsResult,o.guardsResult&&typeof o.guardsResult!="boolean")throw Rt(this.urlSerializer,o.guardsResult);let a=new at(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects),o.targetSnapshot,!!o.guardsResult);this.events.next(a)}),V(o=>o.guardsResult?!0:(this.cancelNavigationTransition(o,"",I.GuardRejected),!1)),jt(o=>{if(o.guards.canActivateChecks.length!==0)return p(o).pipe(A(a=>{let c=new ct(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(c)}),q(a=>{let c=!1;return p(a).pipe(fo(this.paramsInheritanceStrategy,this.environmentInjector),A({next:()=>c=!0,complete:()=>{c||this.cancelNavigationTransition(a,"",I.NoDataFromResolver)}}))}),A(a=>{let c=new ut(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(c)}))}),jt(o=>{let a=u=>{let l=[];if(u.routeConfig?._loadedComponent)u.component=u.routeConfig?._loadedComponent;else if(u.routeConfig?.loadComponent){let v=Se(u)??this.environmentInjector;l.push(this.configLoader.loadComponent(v,u.routeConfig).then(w=>{u.component=w}))}for(let v of u.children)l.push(...a(v));return l},c=a(o.targetSnapshot.root);return c.length===0?p(o):U(Promise.all(c).then(()=>o))}),jt(()=>this.afterPreactivation()),q(()=>{let{currentSnapshot:o,targetSnapshot:a}=r,c=this.createViewTransition?.(this.environmentInjector,o.root,a.root);return c?U(c).pipe(R(()=>r)):p(r)}),R(o=>{let a=Ci(e.routeReuseStrategy,o.targetSnapshot,o.currentRouterState);return this.currentTransition=r=P(h({},o),{targetRouterState:a}),this.currentNavigation.update(c=>(c.targetRouterState=a,c)),r}),A(()=>{this.events.next(new Le)}),Ai(this.rootContexts,e.routeReuseStrategy,o=>this.events.next(o),this.inputBindingEnabled),ae(1),Ge(Tn(s.signal).pipe(V(()=>!i&&!r.targetRouterState),A(()=>{this.cancelNavigationTransition(r,s.signal.reason+"",I.Aborted)}))),A({next:o=>{i=!0,this.currentNavigation.update(a=>(a.abort=So,a)),this.lastSuccessfulNavigation.set(G(this.currentNavigation)),this.events.next(new N(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects))),this.titleStrategy?.updateTitle(o.targetRouterState.snapshot),o.resolve(!0)},complete:()=>{i=!0}}),Ge(this.transitionAbortWithErrorSubject.pipe(A(o=>{throw o}))),pr(()=>{s.abort(),i||this.cancelNavigationTransition(r,"",I.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),Ve(o=>{if(this.destroyed)return r.resolve(!1),z;if(i=!0,In(o))this.events.next(new $(r.id,this.urlSerializer.serialize(r.extractedUrl),o.message,o.cancellationCode)),Ii(o)?this.events.next(new ve(o.url,o.navigationBehaviorOptions)):r.resolve(!1);else{let a=new pe(r.id,this.urlSerializer.serialize(r.extractedUrl),o,r.targetSnapshot??void 0);try{let c=D(this.environmentInjector,()=>this.navigationErrorHandler?.(a));if(c instanceof me){let{message:u,cancellationCode:l}=Rt(this.urlSerializer,c);this.events.next(new $(r.id,this.urlSerializer.serialize(r.extractedUrl),u,l)),this.events.next(new ve(c.redirectTo,c.navigationBehaviorOptions))}else throw this.events.next(a),o}catch(c){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(c)}}return z}))}))}cancelNavigationTransition(e,r,i){let s=new $(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(s),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=G(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return e.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Co(t){return t!==de}var Fn=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(wo),providedIn:"root"})}return t})(),Ct=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}},wo=(()=>{class t extends Ct{static \u0275fac=(()=>{let e;return function(i){return(e||(e=Ke(t)))(i||t)}})();static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ir=(()=>{class t{urlSerializer=d(Re);options=d(be,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=d(Ee);urlHandlingStrategy=d(It);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new L;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:r,targetBrowserUrl:i}){let s=e!==void 0?this.urlHandlingStrategy.merge(e,r):r,o=i??s;return o instanceof L?this.urlSerializer.serialize(o):o}commitTransition({targetRouterState:e,finalUrl:r,initialUrl:i}){r&&e?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=e):this.rawUrlTree=i}routerState=yn(null);getRouterState(){return this.routerState}stateMemento=this.createStateMemento();updateStateMemento(){this.stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(qn),providedIn:"root"})}return t})(),qn=(()=>{class t extends ir{currentPageId=0;lastSuccessfulId=-1;restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type==="popstate"&&setTimeout(()=>{e(r.url,r.state,"popstate")})})}handleRouterEvent(e,r){e instanceof Z?this.updateStateMemento():e instanceof k?this.commitTransition(r):e instanceof _e?this.urlUpdateStrategy==="eager"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof Le?(this.commitTransition(r),this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof $&&e.code!==I.SupersededByNewNavigation&&e.code!==I.Redirect?this.restoreHistory(r):e instanceof pe?this.restoreHistory(r,!0):e instanceof N&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:r,id:i}){let{replaceUrl:s,state:o}=r;if(this.location.isCurrentPathEqualTo(e)||s){let a=this.browserPageId,c=h(h({},o),this.generateNgRouterState(i,a));this.location.replaceState(e,"",c)}else{let a=h(h({},o),this.generateNgRouterState(i,this.browserPageId+1));this.location.go(e,"",a)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,s=this.currentPageId-i;s!==0?this.location.historyGo(s):this.getCurrentUrlTree()===e.finalUrl&&s===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r){return this.canceledNavigationResolution==="computed"?{navigationId:e,\u0275routerPageId:r}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Ke(t)))(i||t)}})();static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function or(t,n){t.events.pipe(V(e=>e instanceof N||e instanceof $||e instanceof pe||e instanceof k),R(e=>e instanceof N||e instanceof k?0:(e instanceof $?e.code===I.Redirect||e.code===I.SupersededByNewNavigation:!1)?2:1),V(e=>e!==2),ae(1)).subscribe(()=>{n()})}var bo={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Io={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},Ie=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=d(Nr);stateManager=d(ir);options=d(be,{optional:!0})||{};pendingTasks=d(Cr);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=d(nr);urlSerializer=d(Re);location=d(Ee);urlHandlingStrategy=d(It);injector=d(ce);_events=new ee;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=d(Fn);onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=d(Fe,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!d(wt,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{this.console.warn(e)}}),this.subscribeToNavigationEvents()}eventsSubscription=new ar;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,s=G(this.navigationTransitions.currentNavigation);if(i!==null&&s!==null){if(this.stateManager.handleRouterEvent(r,s),r instanceof $&&r.code!==I.Redirect&&r.code!==I.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof N)this.navigated=!0;else if(r instanceof ve){let o=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),c=h({browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy==="eager"||Co(i.source)},o);this.scheduleNavigation(a,de,null,c,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}mi(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),de,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r,i)=>{this.navigateToSyncWithBrowser(e,i,r)})}navigateToSyncWithBrowser(e,r,i){let s={replaceUrl:!0},o=i?.navigationId?i:null;if(i){let c=h({},i);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(s.state=c)}let a=this.parseUrl(e);this.scheduleNavigation(a,r,o,s).catch(c=>{this.disposed||this.injector.get(Qe)(c)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return G(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(Jt),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:s,fragment:o,queryParamsHandling:a,preserveFragment:c}=r,u=c?this.currentUrlTree.fragment:o,l=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":l=h(h({},this.currentUrlTree.queryParams),s);break;case"preserve":l=this.currentUrlTree.queryParams;break;default:l=s||null}l!==null&&(l=this.removeEmptyProps(l));let v;try{let w=i?i.snapshot:this.routerState.snapshot.root;v=pn(w)}catch{(typeof e[0]!="string"||e[0][0]!=="/")&&(e=[]),v=this.currentUrlTree.root}return gn(v,e,l,u??null,this.urlSerializer)}navigateByUrl(e,r={skipLocationChange:!1}){let i=K(e)?e:this.parseUrl(e),s=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(s,de,null,r)}navigate(e,r={skipLocationChange:!1}){return Ao(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.console.warn(vr(4018,!1)),this.urlSerializer.parse("/")}}isActive(e,r){let i;if(r===!0?i=h({},bo):r===!1?i=h({},Io):i=r,K(e))return Gr(this.currentUrlTree,e,i);let s=this.parseUrl(e);return Gr(this.currentUrlTree,s,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,s])=>(s!=null&&(r[i]=s),r),{})}scheduleNavigation(e,r,i,s,o){if(this.disposed)return Promise.resolve(!1);let a,c,u;o?(a=o.resolve,c=o.reject,u=o.promise):u=new Promise((v,w)=>{a=v,c=w});let l=this.pendingTasks.add();return or(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(l))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:s,resolve:a,reject:c,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(v=>Promise.reject(v))}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ao(t){for(let n=0;n<t.length;n++)if(t[n]==null)throw new S(4008,!1)}var At=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;reactiveHref=Ae(null);get href(){return G(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}target;queryParams;fragment;queryParamsHandling;state;info;relativeTo;isAnchorElement;subscription;onChanges=new ee;applicationErrorHandler=d(Qe);options=d(be,{optional:!0});constructor(e,r,i,s,o,a){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=s,this.el=o,this.locationStrategy=a,this.reactiveHref.set(d(new qr("href"),{optional:!0}));let c=o.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c==="a"||c==="area"||!!(typeof customElements=="object"&&customElements.get(c)?.observedAttributes?.includes?.("href")),this.isAnchorElement?this.setTabIndexIfNotOnNativeEl("0"):this.subscribeToNavigationEventsIfNecessary()}subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0||!this.isAnchorElement)return;let e=this.preserveFragment,r=i=>i==="merge"||i==="preserve";e||=r(this.queryParamsHandling),e||=!this.queryParamsHandling&&!r(this.options?.defaultQueryParamsHandling),e&&(this.subscription=this.router.events.subscribe(i=>{i instanceof N&&this.updateHref()}))}preserveFragment=!1;skipLocationChange=!1;replaceUrl=!1;setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&(this.updateHref(),this.subscribeToNavigationEventsIfNecessary()),this.onChanges.next(this)}routerLinkInput=null;set routerLink(e){e==null?(this.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(K(e)?this.routerLinkInput=e:this.routerLinkInput=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,r,i,s,o){let a=this.urlTree;if(a===null||this.isAnchorElement&&(e!==0||r||i||s||o||typeof this.target=="string"&&this.target!="_self"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,c)?.catch(u=>{this.applicationErrorHandler(u)}),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let e=this.urlTree;this.reactiveHref.set(e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null)}applyAttributeValue(e,r){let i=this.renderer,s=this.el.nativeElement;r!==null?i.setAttribute(s,e,r):i.removeAttribute(s,e)}get urlTree(){return this.routerLinkInput===null?null:K(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static \u0275fac=function(r){return new(r||t)(x(Ie),x(B),br("tabindex"),x(Nt),x(Dt),x(Ut))};static \u0275dir=Me({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(r,i){r&1&&jr("click",function(o){return i.onClick(o.button,o.ctrlKey,o.shiftKey,o.altKey,o.metaKey)}),r&2&&Lr("href",i.reactiveHref(),Ir)("target",i.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",Ye],skipLocationChange:[2,"skipLocationChange","skipLocationChange",Ye],replaceUrl:[2,"replaceUrl","replaceUrl",Ye],routerLink:"routerLink"},features:[Te]})}return t})(),To=(()=>{class t{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new te;link=d(At,{optional:!0});constructor(e,r,i,s){this.router=e,this.element=r,this.renderer=i,this.cdr=s,this.routerEventsSubscription=e.events.subscribe(o=>{o instanceof N&&this.update()})}ngAfterContentInit(){p(this.links.changes,p(null)).pipe(Mt()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=U(e).pipe(Mt()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){let r=Array.isArray(e)?e:e.split(" ");this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=Mo(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return i=>{let s=i.urlTree;return s?e.isActive(s,r):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static \u0275fac=function(r){return new(r||t)(x(Ie),x(Dt),x(Nt),x(Ze))};static \u0275dir=Me({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(r,i,s){if(r&1&&$r(s,At,5),r&2){let o;kr(o=zr())&&(i.links=o)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],features:[Te]})}return t})();function Mo(t){return!!t.paths}var Bn=new T(""),Eo=(()=>{class t{urlSerializer;transitions;viewportScroller;zone;options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=de;restoredId=0;store={};constructor(e,r,i,s,o={}){this.urlSerializer=e,this.transitions=r,this.viewportScroller=i,this.zone=s,this.options=o,o.scrollPositionRestoration||="disabled",o.anchorScrolling||="disabled"}init(){this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof Z?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof N?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof k&&e.code===fe.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof ge))return;let r={behavior:"instant"};e.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0],r):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(e.position,r):e.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(e.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,r){this.zone.runOutsideAngular(()=>m(this,null,function*(){yield new Promise(i=>{setTimeout(i),typeof requestAnimationFrame<"u"&&requestAnimationFrame(i)}),this.zone.run(()=>{this.transitions.events.next(new ge(e,this.lastSource==="popstate"?this.store[this.restoredId]:null,r))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(r){Mr()};static \u0275prov=C({token:t,factory:t.\u0275fac})}return t})();function Oo(t,...n){return Ot([{provide:Fe,multi:!0,useValue:t},[],{provide:B,useFactory:Do},{provide:Ur,multi:!0,useFactory:Po},n.map(e=>e.\u0275providers)])}function Do(){return d(Ie).routerState.root}function Vn(t,n){return{\u0275kind:t,\u0275providers:n}}function No(t={}){return Vn(4,[{provide:Bn,useFactory:()=>{let e=d(Vr),r=d(wr),i=d(nr),s=d(Re);return new Eo(s,i,e,r,t)}}])}function Po(){let t=d(yr);return n=>{let e=t.get(_r);if(n!==e.components[0])return;let r=t.get(Ie),i=t.get(Uo);t.get(_o)===1&&r.initialNavigation(),t.get(Lo,null,{optional:!0})?.setUpPreloading(),t.get(Bn,null,{optional:!0})?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var Uo=new T("",{factory:()=>new ee}),_o=new T("",{factory:()=>1});var Lo=new T("");function xo(t){Ar("NgRouterViewTransitions");let n=[{provide:tr,useValue:kn},{provide:rr,useValue:h({skipNextTransition:!!t?.skipInitialTransition},t)}];return Vn(9,n)}export{Z as a,N as b,B as c,Yt as d,Ie as e,At as f,To as g,Oo as h,No as i,xo as j};
@@ -0,0 +1 @@
1
+ import{r as oe}from"./chunk-MIE7YXOK.js";import{m as se}from"./chunk-I3JZLSHE.js";import{e as G}from"./chunk-KWACPVX5.js";import{C as ne,e as Y,l as Z,t as ee,u as te,w as ie}from"./chunk-C25O3HDQ.js";import{b as X}from"./chunk-RQ6OKEXK.js";import{C as H,D as J,F as K,I as Q}from"./chunk-GTH5BSXR.js";import{Ab as h,Cb as R,Db as F,Dc as u,Eb as V,Ec as _,Fb as w,Gb as a,Hb as r,Ib as $,Rb as E,Xb as y,Za as s,Zb as p,aa as x,ga as b,ha as I,jc as k,kc as m,lc as f,mc as B,nb as O,nc as P,rc as j,sa as S,sc as q,tc as W,yb as T,yc as N,zb as v,zc as z}from"./chunk-VX4RXOTH.js";import{a as U,b as L,h as D}from"./chunk-B4AJQJMI.js";var ce=(t,l)=>({"fa-matter":t,"fa-hap":l}),le=(t,l)=>({"btn-danger":t,"btn-elegant":l}),de=(t,l,e)=>({"fa-trash":t,"fa-undo":l,"fa-spinner fa-pulse":e});function me(t,l){t&1&&(a(0,"div",12),$(1,"i",13),r(),a(2,"p",14),m(3),u(4,"translate"),r()),t&2&&(s(3),f(_(4,1,"reset.no_accessories")))}function pe(t,l){if(t&1&&(a(0,"option",24),m(1),r()),t&2){let e=l.$implicit;w("value",e._id),s(),P("",e.name," (",e._username,")")}}function ue(t,l){if(t&1){let e=E();a(0,"li",20),m(1),u(2,"translate"),r(),a(3,"li",18)(4,"label",21),m(5),u(6,"translate"),r(),a(7,"div",22)(8,"select",23),W("ngModelChange",function(i){b(e);let o=p(2);return q(o.selectedBridge,i)||(o.selectedBridge=i),I(i)}),y("change",function(i){b(e);let o=p(2);return I(o.onBridgeChange(i))}),F(9,pe,2,3,"option",24,R),r()()()}if(t&2){let e=p(2);s(),f(_(2,3,"form.label.changes_kept")),s(4),f(_(6,5,"reset.accessory_ind.bridge")),s(3),j("ngModel",e.selectedBridge),s(),V(e.pairings())}}function _e(t,l){if(t&1&&(a(0,"li",18)(1,"label",25),m(2),u(3,"translate"),r(),a(4,"div",26),m(5),r()()),t&2){let e=p(2);s(2),f(_(3,2,"reset.accessory_ind.bridge")),s(3),B(" ",e.getCurrentlySelectedBridge()," ")}}function ge(t,l){if(t&1){let e=E();a(0,"li",19)(1,"span",27),$(2,"i",28),r(),a(3,"span",29),m(4),$(5,"br"),a(6,"small")(7,"span",30),m(8),r()()(),a(9,"button",31),u(10,"translate"),y("click",function(){let i=b(e).$implicit,o=p(2);return I(o.toggleList(i.UUID||i.uuid,i.$cacheFile,i.$protocol,i.$deviceId))}),$(11,"i",32),r()()}if(t&2){let e=l.$implicit,n=p(2);s(2),k(N(12,ce,e.$protocol==="matter",e.$protocol!=="matter")),s(2),B(" ",e.displayName," "),s(4),f(e.UUID||e.uuid),s(),k(N(15,le,!n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol),n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol))),w("disabled",n.clicked()),T("aria-label",_(10,10,"form.button_delete")),s(2),k(z(18,de,!n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol),n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol)&&!n.clicked(),n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol)&&n.clicked()))}}function ve(t,l){if(t&1&&(a(0,"div",12),$(1,"i",15),r(),a(2,"ul",16)(3,"li"),m(4),u(5,"translate"),r(),a(6,"li"),m(7),u(8,"translate"),r(),a(9,"li"),m(10),u(11,"translate"),r()(),a(12,"ul",17),v(13,ue,11,7),v(14,_e,6,4,"li",18),F(15,ge,12,22,"li",19,R),r()),t&2){let e=p();s(4),f(_(5,5,"reset.accessory_ind.list_1")),s(3),f(_(8,7,"reset.accessory_ind.list_2")),s(3),f(_(11,9,"reset.accessory_ind.list_3")),s(3),h(e.pairings().length>1?13:-1),s(),h(e.pairings().length===1?14:-1),s(),V(e.selectedBridgeAccessories())}}function he(t,l){if(t&1){let e=E();a(0,"button",33),y("click",function(){b(e);let i=p();return I(i.dismissModal())}),m(1),u(2,"translate"),r()}if(t&2){let e=p();w("disabled",e.clicked()),s(),B(" ",_(2,2,"form.button_close")," ")}}function fe(t,l){if(t&1){let e=E();a(0,"button",34),y("click",function(){b(e);let i=p();return I(i.dismissModal())}),m(1),u(2,"translate"),r()}t&2&&(s(),B(" ",_(2,1,"form.button_close")," "))}function xe(t,l){if(t&1&&m(0),t&2){let e=p(3);B(" (",e.toDelete().length,") ")}}function Ce(t,l){if(t&1&&(m(0),u(1,"translate"),v(2,xe,1,1)),t&2){let e=p(2);B(" ",_(1,2,"form.button_remove")," "),s(2),h(e.toDelete().length>0?2:-1)}}function be(t,l){t&1&&$(0,"i",36)}function Ie(t,l){if(t&1){let e=E();a(0,"button",35),y("click",function(){b(e);let i=p();return I(i.removeAccessories())}),v(1,Ce,3,4),v(2,be,1,0,"i",36),r()}if(t&2){let e=p();w("disabled",!e.toDelete().length||e.clicked()),s(),h(e.clicked()?-1:1),s(),h(e.clicked()?2:-1)}}var Fe=(()=>{class t{$activeModal=x(se);$api=x(Q);$router=x(G);$settings=x(X);$toastr=x(K);$translate=x(H);modalData=x(oe);selectedBridge=this.modalData.selectedBridge;pairings=S([]);clicked=S(!1);currentSelectedBridge=S("");selectedBridgeAccessories=S([]);accessoriesExist=S(!1);toDelete=S([]);isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");ngOnInit(){this.currentSelectedBridge.set(this.selectedBridge),this.loadCachedAccessories()}onBridgeChange(e){let n=e.target.value;this.currentSelectedBridge.set(n),this.selectedBridgeAccessories.set(this.pairings().find(i=>i._id===this.currentSelectedBridge())?.accessories||[])}getCurrentlySelectedBridge(){let e=this.pairings().find(n=>n._id===this.currentSelectedBridge());return e?`${e.name} - ${e._username}`:""}toggleList(e,n,i,o){this.toDelete().some(g=>g.uuid===e&&g.cacheFile===n&&g.protocol===i)?this.toDelete.set(this.toDelete().filter(g=>g.uuid!==e||g.cacheFile!==n||g.protocol!==i)):this.toDelete.update(g=>[...g,{cacheFile:n,uuid:e,protocol:i,deviceId:o}])}isInList(e,n,i){return this.toDelete().some(o=>o.uuid===e&&o.cacheFile===n&&o.protocol===i)}removeAccessories(){return D(this,null,function*(){this.clicked.set(!0);let e=this.toDelete().filter(o=>o.protocol==="hap").map(o=>({uuid:o.uuid,cacheFile:o.cacheFile})),n=this.toDelete().filter(o=>o.protocol==="matter").map(o=>({uuid:o.uuid,deviceId:o.deviceId})),i=[];if(e.length>0&&i.push(this.$api.delete("/server/cached-accessories",{body:e})),this.isMatterSupported&&n.length>0&&i.push(this.$api.delete("/server/matter-accessories",{body:n})),i.length===0){this.clicked.set(!1);return}try{yield Promise.all(i),this.$toastr.success(this.$translate.instant("reset.accessory_ind.done"),this.$translate.instant("toast.title_success")),this.$activeModal.close(),this.$router.navigate(["/restart"],{queryParams:{restarting:!0}})}catch(o){this.clicked.set(!1),console.error(o),this.$toastr.error(this.$translate.instant("reset.accessory_ind.fail"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}loadCachedAccessories(){return D(this,null,function*(){try{let e=this.isMatterSupported?[this.$api.get("/server/cached-accessories"),this.$api.get("/server/matter-accessories"),this.$api.get("/server/pairings")]:[this.$api.get("/server/cached-accessories"),this.$api.get("/server/pairings")],n=yield Promise.all(e),i=n[0],o=this.isMatterSupported?n[1]:[],g=this.isMatterSupported?n[2]:n[1],C=new Map(g.map(c=>[c._id,L(U({},c),{accessories:[]})]));i.sort((c,d)=>c.displayName.localeCompare(d.displayName)).forEach(c=>{let d=g.find(re=>re._main),A=c.$cacheFile?.split(".")?.[1]||d._id;(!this.selectedBridge||this.selectedBridge===A)&&(C.has(A)||C.set(A,{_id:A,_username:A.match(/.{1,2}/g).join(":"),name:this.$translate.instant("reset.accessory_ind.unknown"),accessories:[]}),c.$protocol="hap",C.get(A).accessories.push(c))}),this.isMatterSupported&&o.sort((c,d)=>c.displayName.localeCompare(d.displayName)).forEach(c=>{let d=c.$deviceId;(!this.selectedBridge||this.selectedBridge===d)&&(C.has(d)||C.set(d,{_id:d,_username:d.match(/.{1,2}/g).join(":"),name:this.$translate.instant("reset.accessory_ind.unknown"),accessories:[]}),c.$protocol="matter",c.$cacheFile=d,C.get(d).accessories.push(c))});let ae=Array.from(C.values()).filter(c=>c.accessories.length>0).sort((c,d)=>c._main&&!d._main?-1:!c._main&&d._main?1:c.name.localeCompare(d.name));this.pairings.set(ae);let M=this.selectedBridge||this.pairings()[0]?._id;M&&(this.selectedBridge=M,this.currentSelectedBridge.set(M),this.accessoriesExist.set(!0),this.selectedBridgeAccessories.set(this.pairings().find(c=>c._id===M)?.accessories||[]))}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("reset.error_message"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=O({type:t,selectors:[["ng-component"]],decls:17,vars:12,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"disabled"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"disabled"],[1,"text-center","mb-3"],[1,"fas","fa-circle-check","primary-text",2,"font-size","75px"],[1,"mb-0","text-center"],[1,"fas","fa-network-wired","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"list-group-item","text-center","grey-text","small"],["for","bridgeSelect",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["id","bridgeSelect",1,"custom-select",3,"ngModelChange","change","ngModel"],[3,"value"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text","font-monospace"],[1,"me-3"],[1,"fas","fa-lg"],[1,"flex-grow-1"],[1,"font-monospace","grey-text"],[1,"btn","btn-danger","m-0","ms-3",3,"click","disabled"],[1,"fas"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"fas","fa-spinner","fa-pulse"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),r(),a(5,"button",3),u(6,"translate"),y("click",function(){return i.dismissModal()}),r()(),a(7,"div",4),v(8,me,5,3),v(9,ve,17,11),r(),a(10,"div",5)(11,"div",6),v(12,he,3,4,"button",7),r(),a(13,"div",8),v(14,fe,3,3,"button",9),r(),a(15,"div",10),v(16,Ie,3,3,"button",11),r()()()),n&2&&(s(3),f(_(4,8,"reset.accessory_ind.title")),s(2),w("disabled",i.clicked()),T("aria-label",_(6,10,"form.button_close")),s(3),h(i.accessoriesExist()?-1:8),s(),h(i.accessoriesExist()?9:-1),s(3),h(i.accessoriesExist()?12:-1),s(2),h(i.accessoriesExist()?-1:14),s(2),h(i.accessoriesExist()?16:-1))},dependencies:[ne,te,ie,ee,Y,Z,J],encapsulation:2})}return t})();export{Fe as a};