homebridge-config-ui-x 5.11.2-beta.8 → 5.11.2

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 +3 -21
  2. package/dist/core/auth/auth.controller.d.ts +0 -4
  3. package/dist/core/config/config.interfaces.d.ts +0 -14
  4. package/dist/core/config/config.service.d.ts +0 -6
  5. package/dist/core/config/config.service.js +0 -8
  6. package/dist/core/config/config.service.js.map +1 -1
  7. package/dist/core/config/config.startup.js +17 -48
  8. package/dist/core/config/config.startup.js.map +1 -1
  9. package/dist/core/feature-flags/feature-flags.registry.js +0 -5
  10. package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
  11. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +0 -1
  12. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  13. package/dist/core/spa/spa.filter.d.ts +0 -3
  14. package/dist/core/spa/spa.filter.js +2 -22
  15. package/dist/core/spa/spa.filter.js.map +1 -1
  16. package/dist/globalDefaults.js +0 -3
  17. package/dist/globalDefaults.js.map +1 -1
  18. package/dist/main.js +4 -18
  19. package/dist/main.js.map +1 -1
  20. package/dist/modules/accessories/accessories.controller.d.ts +1 -1
  21. package/dist/modules/accessories/accessories.module.js +0 -2
  22. package/dist/modules/accessories/accessories.module.js.map +1 -1
  23. package/dist/modules/accessories/accessories.service.d.ts +3 -21
  24. package/dist/modules/accessories/accessories.service.js +17 -280
  25. package/dist/modules/accessories/accessories.service.js.map +1 -1
  26. package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +0 -9
  27. package/dist/modules/config-editor/config-editor.controller.d.ts +0 -4
  28. package/dist/modules/config-editor/config-editor.controller.js +0 -64
  29. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  30. package/dist/modules/config-editor/config-editor.service.d.ts +1 -6
  31. package/dist/modules/config-editor/config-editor.service.js +1 -45
  32. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  33. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
  34. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  35. package/dist/modules/plugins/plugins.module.js +1 -1
  36. package/dist/modules/plugins/plugins.service.js +2 -17
  37. package/dist/modules/plugins/plugins.service.js.map +1 -1
  38. package/dist/modules/server/server.controller.d.ts +0 -50
  39. package/dist/modules/server/server.controller.js +2 -201
  40. package/dist/modules/server/server.controller.js.map +1 -1
  41. package/dist/modules/server/server.service.d.ts +0 -48
  42. package/dist/modules/server/server.service.js +14 -502
  43. package/dist/modules/server/server.service.js.map +1 -1
  44. package/dist/modules/status/status.gateway.d.ts +0 -2
  45. package/dist/modules/status/status.interfaces.d.ts +0 -11
  46. package/dist/modules/status/status.service.d.ts +1 -4
  47. package/dist/modules/status/status.service.js +2 -21
  48. package/dist/modules/status/status.service.js.map +1 -1
  49. package/package.json +7 -9
  50. package/public/3rdpartylicenses.txt +620 -594
  51. package/public/assets/plugin-ui-utils/ui.js +0 -3
  52. package/public/assets/plugin-ui-utils/ui.js.map +1 -1
  53. package/public/chunk-2BB4D4TW.js +1 -0
  54. package/public/chunk-2GCZ3AMH.js +1 -0
  55. package/public/chunk-2K5FWBCK.js +8 -0
  56. package/public/chunk-2LQBMVWH.js +1 -0
  57. package/public/chunk-34ZN4GVA.js +3 -0
  58. package/public/chunk-3JW6FD5V.js +1 -0
  59. package/public/chunk-57XTQ6PK.js +1 -0
  60. package/public/chunk-5DBV5PYR.js +19 -0
  61. package/public/chunk-5GKTPXPE.js +1 -0
  62. package/public/chunk-5X7ARCKG.js +5 -0
  63. package/public/chunk-67HOYJJ2.js +1 -0
  64. package/public/chunk-6MZHUZRT.js +4 -0
  65. package/public/chunk-77CMUO6J.js +1 -0
  66. package/public/chunk-7LJYL7EH.js +1 -0
  67. package/public/chunk-7TFBELRD.js +1 -0
  68. package/public/chunk-AXOHPUQR.js +1 -0
  69. package/public/chunk-BMAZBLAT.js +1 -0
  70. package/public/chunk-C554TVZA.js +2 -0
  71. package/public/chunk-DGDNSN6I.js +1 -0
  72. package/public/chunk-E6RSPO2D.js +1 -0
  73. package/public/chunk-ESQ665GW.js +5 -0
  74. package/public/chunk-G4QH622U.js +5 -0
  75. package/public/chunk-GKPR5M7S.js +1 -0
  76. package/public/chunk-GT7UMMFF.js +2 -0
  77. package/public/chunk-HBIQJCSE.js +1 -0
  78. package/public/{chunk-BMOLDRJ3.js → chunk-JLZ5WU6N.js} +1 -1
  79. package/public/chunk-JSZIAFBJ.js +1 -0
  80. package/public/chunk-JWQRV434.js +1 -0
  81. package/public/chunk-JX72JCMA.js +1 -0
  82. package/public/chunk-KT26K4DO.js +1 -0
  83. package/public/chunk-L63FND3A.js +1 -0
  84. package/public/chunk-LSXTHVKB.js +1 -0
  85. package/public/chunk-N5VXONVW.js +1 -0
  86. package/public/{chunk-H7F7H5MW.js → chunk-N6JGA2PG.js} +1 -1
  87. package/public/chunk-NVCJ3EJS.js +1 -0
  88. package/public/chunk-OPJZWDSO.js +1 -0
  89. package/public/chunk-OXBXHVWY.js +8 -0
  90. package/public/chunk-QHROK73U.js +50 -0
  91. package/public/chunk-QNEXPAIT.js +1 -0
  92. package/public/chunk-R2G2YWV4.js +51 -0
  93. package/public/chunk-RCNF365Q.js +1 -0
  94. package/public/chunk-RT6EDRIH.js +1 -0
  95. package/public/chunk-RWM6K46M.js +1 -0
  96. package/public/chunk-SVVR6UMH.js +1 -0
  97. package/public/chunk-UI4U37MO.js +1 -0
  98. package/public/chunk-ULKYNDD3.js +16 -0
  99. package/public/chunk-UPZ5UT6G.js +1 -0
  100. package/public/chunk-UQFIBBEZ.js +1 -0
  101. package/public/chunk-UWUTC3BD.js +1 -0
  102. package/public/chunk-UZ6QYM64.js +1 -0
  103. package/public/{chunk-CP6FP6S2.js → chunk-VKHX6FUQ.js} +2 -52
  104. package/public/chunk-VM2MV3DC.js +1 -0
  105. package/public/chunk-VM6FMRHY.js +1 -0
  106. package/public/chunk-VYK3U745.js +1 -0
  107. package/public/chunk-VZJJWHRX.js +1 -0
  108. package/public/chunk-WHC4E7WY.js +1 -0
  109. package/public/chunk-WJKVPIP2.js +1 -0
  110. package/public/chunk-WOBQOQPU.js +1 -0
  111. package/public/chunk-WTGHGHPV.js +1 -0
  112. package/public/chunk-WY6UQ47H.js +1 -0
  113. package/public/chunk-X4ZEQSRY.js +4 -0
  114. package/public/{chunk-WVG4A2SW.js → chunk-XVO5247V.js} +1 -1
  115. package/public/chunk-XWNU2MFJ.js +1 -0
  116. package/public/chunk-YD3GJ2C6.js +1 -0
  117. package/public/chunk-YUEGV7HK.js +4 -0
  118. package/public/chunk-ZLRFR32W.js +1 -0
  119. package/public/chunk-ZZ5IX26U.js +40 -0
  120. package/public/chunk-ZZQEWRDE.js +1 -0
  121. package/public/index.html +2 -2
  122. package/public/main-VKVUZHHA.js +1 -0
  123. package/public/polyfills-5KWHJ7II.js +2 -0
  124. package/public/styles-7EFV5QBG.css +1 -0
  125. package/scripts/extract-plugin-alias.js +2 -53
  126. package/dist/core/spa/spa-html.service.d.ts +0 -5
  127. package/dist/core/spa/spa-html.service.js +0 -32
  128. package/dist/core/spa/spa-html.service.js.map +0 -1
  129. package/dist/core/ssl/ssl-cert-generator.service.d.ts +0 -15
  130. package/dist/core/ssl/ssl-cert-generator.service.js +0 -125
  131. package/dist/core/ssl/ssl-cert-generator.service.js.map +0 -1
  132. package/dist/modules/accessories/accessories.interfaces.d.ts +0 -94
  133. package/dist/modules/accessories/accessories.interfaces.js +0 -2
  134. package/dist/modules/accessories/accessories.interfaces.js.map +0 -1
  135. package/docs/matter-todo.md +0 -15
  136. package/docs/ssl-upload-pr.md +0 -103
  137. package/public/assets/matter.svg +0 -8
  138. package/public/chunk-2V4LIZUH.js +0 -1
  139. package/public/chunk-4UVYLGCZ.js +0 -1
  140. package/public/chunk-4WEBTV3N.js +0 -1
  141. package/public/chunk-4YNYBAGL.js +0 -1
  142. package/public/chunk-52X3LPJH.js +0 -1
  143. package/public/chunk-5R6AJZGA.js +0 -1
  144. package/public/chunk-5WSUQV2C.js +0 -1
  145. package/public/chunk-6DLZEENG.js +0 -1
  146. package/public/chunk-6INJQUJQ.js +0 -16
  147. package/public/chunk-6QWPGE2L.js +0 -1
  148. package/public/chunk-77S5CL3V.js +0 -1
  149. package/public/chunk-7BMHIIBT.js +0 -1
  150. package/public/chunk-7DFQDPRM.js +0 -1
  151. package/public/chunk-7WKZ7EMI.js +0 -1
  152. package/public/chunk-7WUBDTA6.js +0 -1
  153. package/public/chunk-AXMO2G45.js +0 -1
  154. package/public/chunk-B46EWHBD.js +0 -1
  155. package/public/chunk-B4AJQJMI.js +0 -1
  156. package/public/chunk-B75B723G.js +0 -1
  157. package/public/chunk-BB35SJH2.js +0 -2
  158. package/public/chunk-BFGRDXJK.js +0 -35
  159. package/public/chunk-BQRKHSGH.js +0 -1
  160. package/public/chunk-BXRCPOIK.js +0 -1
  161. package/public/chunk-BZ3XB6O4.js +0 -1
  162. package/public/chunk-CEMVTOZG.js +0 -4
  163. package/public/chunk-CMERG3AC.js +0 -1
  164. package/public/chunk-CMO4UANJ.js +0 -1
  165. package/public/chunk-CPT52C2F.js +0 -1
  166. package/public/chunk-D3Q5QTFY.js +0 -1
  167. package/public/chunk-ETWBSGPI.js +0 -1
  168. package/public/chunk-EWS4VSZB.js +0 -1
  169. package/public/chunk-F5AJLGGI.js +0 -1
  170. package/public/chunk-G2GGYHA2.js +0 -3
  171. package/public/chunk-G2KWTNHR.js +0 -1
  172. package/public/chunk-GDWF2NMA.js +0 -2
  173. package/public/chunk-GGTS2YBW.js +0 -4
  174. package/public/chunk-GJG6QZ7P.js +0 -1
  175. package/public/chunk-GU5F3H4I.js +0 -1
  176. package/public/chunk-H3BKW5W3.js +0 -1
  177. package/public/chunk-H4WASUXW.js +0 -1
  178. package/public/chunk-HUTYOGRH.js +0 -4
  179. package/public/chunk-IBUR2RIO.js +0 -1
  180. package/public/chunk-IDJSTIFL.js +0 -1
  181. package/public/chunk-IP6FLYVL.js +0 -1
  182. package/public/chunk-IPI77WYV.js +0 -1
  183. package/public/chunk-J2DDS6ED.js +0 -1
  184. package/public/chunk-J6ND4K5Q.js +0 -1
  185. package/public/chunk-J7UDRE66.js +0 -2
  186. package/public/chunk-JUQRWAIR.js +0 -1
  187. package/public/chunk-JWGWPSC6.js +0 -1
  188. package/public/chunk-JWRZMMRO.js +0 -68
  189. package/public/chunk-JWUEJV6S.js +0 -1
  190. package/public/chunk-JY5ZEEL2.js +0 -1
  191. package/public/chunk-KFPYUDGJ.js +0 -1
  192. package/public/chunk-KIRW7NMH.js +0 -1
  193. package/public/chunk-KTQBVBY4.js +0 -1
  194. package/public/chunk-LKJRMUOE.js +0 -1
  195. package/public/chunk-LVQWSVHA.js +0 -1
  196. package/public/chunk-LZ7S7WKH.js +0 -1
  197. package/public/chunk-MDHWQ5V2.js +0 -8
  198. package/public/chunk-MJP4XVUI.js +0 -1
  199. package/public/chunk-N5ONV6TU.js +0 -1
  200. package/public/chunk-N7UWTPTT.js +0 -1
  201. package/public/chunk-NAICVRJH.js +0 -1
  202. package/public/chunk-NCFDA3W4.js +0 -1
  203. package/public/chunk-NIS65GVY.js +0 -1
  204. package/public/chunk-OBV66CW4.js +0 -1
  205. package/public/chunk-OF2SRCQW.js +0 -5
  206. package/public/chunk-OOILCTQ3.js +0 -19
  207. package/public/chunk-PAZUAFSZ.js +0 -1
  208. package/public/chunk-PEUDPLH6.js +0 -1
  209. package/public/chunk-PRGOUVRO.js +0 -1
  210. package/public/chunk-PWCLNQBI.js +0 -1
  211. package/public/chunk-Q7EXN4JA.js +0 -1
  212. package/public/chunk-QE7VI3JB.js +0 -1
  213. package/public/chunk-QES44GQE.js +0 -1
  214. package/public/chunk-QMWN5KPC.js +0 -1
  215. package/public/chunk-R6MQZ2DW.js +0 -1
  216. package/public/chunk-RESZLSD7.js +0 -1
  217. package/public/chunk-RGWFM4OK.js +0 -1
  218. package/public/chunk-RI4GLH22.js +0 -1
  219. package/public/chunk-RP5JPYDI.js +0 -1
  220. package/public/chunk-RT25QBCQ.js +0 -1
  221. package/public/chunk-RVWZNTDJ.js +0 -1
  222. package/public/chunk-RXDY2NMJ.js +0 -1
  223. package/public/chunk-SDRRZFEQ.js +0 -1
  224. package/public/chunk-SPC2DLZR.js +0 -3
  225. package/public/chunk-TCUQZ3QO.js +0 -1
  226. package/public/chunk-TPUA4UIN.js +0 -1
  227. package/public/chunk-TQBVDY26.js +0 -1
  228. package/public/chunk-U24HWDVU.js +0 -1
  229. package/public/chunk-U2NM4L2D.js +0 -1
  230. package/public/chunk-UWYTPKKV.js +0 -1
  231. package/public/chunk-VKR3GG6K.js +0 -1
  232. package/public/chunk-VY7HWBNV.js +0 -5
  233. package/public/chunk-W55SP3LJ.js +0 -1
  234. package/public/chunk-WP3AD6W5.js +0 -1
  235. package/public/chunk-XNZA4UBO.js +0 -12
  236. package/public/chunk-XOPZ7U6G.js +0 -1
  237. package/public/chunk-XORPUWNC.js +0 -1
  238. package/public/chunk-XPFMPBEG.js +0 -1
  239. package/public/chunk-XTYMIZVV.js +0 -1
  240. package/public/chunk-Y3PXWRYQ.js +0 -1
  241. package/public/chunk-Y5WP66WK.js +0 -1
  242. package/public/chunk-YCQCWGBG.js +0 -1
  243. package/public/chunk-Z5PUNNUZ.js +0 -1
  244. package/public/chunk-ZCGZM7LU.js +0 -1
  245. package/public/chunk-ZNN6GWYK.js +0 -19
  246. package/public/main-O5PA2XOA.js +0 -1
  247. package/public/media/matter-P563JGDL.svg +0 -8
  248. package/public/polyfills-34U4WL3Z.js +0 -1
  249. package/public/styles-CT2LPGES.css +0 -1
@@ -1,2 +0,0 @@
1
- import{$ as p,$a as yi,$c as bt,Aa as _e,Ba as ui,Ca as ln,Da as ci,E as ht,Ea as mt,Fb as P,G as xe,Ga as dn,Gb as H,Ha as li,Hb as q,Ia as hn,Ib as ze,Ja as Dt,Jc as vn,K as nn,Ka as he,La as Ae,Ma as di,Mb as mn,N as rn,Na as hi,Nb as Dn,Oa as fi,Pa as pi,Q as ke,Qa as gi,Ra as mi,Rb as yn,Rc as Ze,Sa as Di,Sc as Ti,Ta as X,Tb as Ci,Tc as wn,U as v,Ua as fn,Ub as Ei,Uc as _i,V as Be,Vb as B,Vc as Ye,Wb as M,Wc as bn,X as f,Xb as Ge,Y as De,Za as O,Zb as j,_ as C,_a as ye,_c as Cn,aa as h,ab as yt,ba as je,bb as vi,bd as Ke,c as Qt,cd as We,d as N,da as oi,dd as Ct,ea as sn,eb as pn,fa as ai,fb as wi,ga as on,gb as bi,ha as an,hb as vt,hc as we,i as ue,ib as S,jc as Q,k as me,ka as le,kb as wt,kc as ee,la as I,ma as ft,mc as be,n as Te,nb as gn,o as ce,ob as ve,pa as de,pb as J,qa as un,qb as fe,s as en,sa as Ue,t as tn,tb as $e,u as ri,ua as cn,xa as pt,xb as Ve,ya as gt,yb as He,z as si}from"./chunk-HUTYOGRH.js";import{a as _,b as G,h as dt}from"./chunk-B4AJQJMI.js";var Fi=null;function te(){return Fi}function En(t){Fi??=t}var Xe=class{},Tn=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:()=>h(Ii),providedIn:"platform"})}return t})();var Ii=(()=>{class t extends Tn{_location;_history;_doc=h(I);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return te().getBaseHref(this._doc)}onPopState(e){let n=te().getGlobalEventTarget(this._doc,"window");return n.addEventListener("popstate",e,!1),()=>n.removeEventListener("popstate",e)}onHashChange(e){let n=te().getGlobalEventTarget(this._doc,"window");return n.addEventListener("hashchange",e,!1),()=>n.removeEventListener("hashchange",e)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(e){this._location.pathname=e}pushState(e,n,r){this._history.pushState(e,n,r)}replaceState(e,n,r){this._history.replaceState(e,n,r)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:()=>new t,providedIn:"platform"})}return t})();function Mi(t,i){return t?i?t.endsWith("/")?i.startsWith("/")?t+i.slice(1):t+i:i.startsWith("/")?t+i:`${t}/${i}`:t:i}function Ai(t){let i=t.search(/#|\?|$/);return t[i-1]==="/"?t.slice(0,i-1)+t.slice(i):t}function pe(t){return t&&t[0]!=="?"?`?${t}`:t}var Et=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:()=>h(Oi),providedIn:"root"})}return t})(),Ri=new C(""),Oi=(()=>{class t extends Et{_platformLocation;_baseHref;_removeListenerFns=[];constructor(e,n){super(),this._platformLocation=e,this._baseHref=n??this._platformLocation.getBaseHrefFromDOM()??h(I).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return Mi(this._baseHref,e)}path(e=!1){let n=this._platformLocation.pathname+pe(this._platformLocation.search),r=this._platformLocation.hash;return r&&e?`${n}${r}`:n}pushState(e,n,r,s){let o=this.prepareExternalUrl(r+pe(s));this._platformLocation.pushState(e,n,o)}replaceState(e,n,r,s){let o=this.prepareExternalUrl(r+pe(s));this._platformLocation.replaceState(e,n,o)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(n){return new(n||t)(p(Tn),p(Ri,8))};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Li=(()=>{class t{_subject=new N;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(e){this._locationStrategy=e;let n=this._locationStrategy.getBaseHref();this._basePath=Nr(Ai(Si(n))),this._locationStrategy.onPopState(r=>{this._subject.next({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,n=""){return this.path()==this.normalize(e+pe(n))}normalize(e){return t.stripTrailingSlash(Pr(this._basePath,Si(e)))}prepareExternalUrl(e){return e&&e[0]!=="/"&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,n="",r=null){this._locationStrategy.pushState(r,"",e,n),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+pe(n)),r)}replaceState(e,n="",r=null){this._locationStrategy.replaceState(r,"",e,n),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+pe(n)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??=this.subscribe(n=>{this._notifyUrlChangeListeners(n.url,n.state)}),()=>{let n=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(n,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",n){this._urlChangeListeners.forEach(r=>r(e,n))}subscribe(e,n,r){return this._subject.subscribe({next:e,error:n??void 0,complete:r??void 0})}static normalizeQueryParams=pe;static joinWithSlash=Mi;static stripTrailingSlash=Ai;static \u0275fac=function(n){return new(n||t)(p(Et))};static \u0275prov=f({token:t,factory:()=>Lr(),providedIn:"root"})}return t})();function Lr(){return new Li(p(Et))}function Pr(t,i){if(!t||!i.startsWith(t))return i;let e=i.substring(t.length);return e===""||["/",";","?","#"].includes(e[0])?e:i}function Si(t){return t.replace(/\/index.html$/,"")}function Nr(t){if(new RegExp("^(https?:)?//").test(t)){let[,e]=t.split(/\/\/[^\/]+/);return e}return t}var Mn=(function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t})(Mn||{});var L=(function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t})(L||{}),w=(function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t})(w||{}),x=(function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t})(x||{}),k={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function ji(t){return B(t)[M.LocaleId]}function Ui(t,i,e){let n=B(t),r=[n[M.DayPeriodsFormat],n[M.DayPeriodsStandalone]],s=U(r,i);return U(s,e)}function $i(t,i,e){let n=B(t),r=[n[M.DaysFormat],n[M.DaysStandalone]],s=U(r,i);return U(s,e)}function Vi(t,i,e){let n=B(t),r=[n[M.MonthsFormat],n[M.MonthsStandalone]],s=U(r,i);return U(s,e)}function Hi(t,i){let n=B(t)[M.Eras];return U(n,i)}function Je(t,i){let e=B(t);return U(e[M.DateFormat],i)}function qe(t,i){let e=B(t);return U(e[M.TimeFormat],i)}function Qe(t,i){let n=B(t)[M.DateTimeFormat];return U(n,i)}function Z(t,i){let e=B(t),n=e[M.NumberSymbols][i];if(typeof n>"u"){if(i===k.CurrencyDecimal)return e[M.NumberSymbols][k.Decimal];if(i===k.CurrencyGroup)return e[M.NumberSymbols][k.Group]}return n}function zi(t,i){return B(t)[M.NumberFormats][i]}function Gi(t){if(!t[M.ExtraData])throw new v(2303,!1)}function Zi(t){let i=B(t);return Gi(i),(i[M.ExtraData][2]||[]).map(n=>typeof n=="string"?_n(n):[_n(n[0]),_n(n[1])])}function Yi(t,i,e){let n=B(t);Gi(n);let r=[n[M.ExtraData][0],n[M.ExtraData][1]],s=U(r,i)||[];return U(s,e)||[]}function U(t,i){for(let e=i;e>-1;e--)if(typeof t[e]<"u")return t[e];throw new v(2304,!1)}function _n(t){let[i,e]=t.split(":");return{hours:+i,minutes:+e}}var xr=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Tt={},kr=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;function Ki(t,i,e,n){let r=Zr(t);i=ie(e,i)||i;let o=[],a;for(;i;)if(a=kr.exec(i),a){o=o.concat(a.slice(1));let c=o.pop();if(!c)break;i=c}else{o.push(i);break}let u=r.getTimezoneOffset();n&&(u=Xi(n,u),r=Gr(r,n));let l="";return o.forEach(c=>{let d=Hr(c);l+=d?d(r,e,u):c==="''"?"'":c.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),l}function It(t,i,e){let n=new Date(0);return n.setFullYear(t,i,e),n.setHours(0,0,0),n}function ie(t,i){let e=ji(t);if(Tt[e]??={},Tt[e][i])return Tt[e][i];let n="";switch(i){case"shortDate":n=Je(t,x.Short);break;case"mediumDate":n=Je(t,x.Medium);break;case"longDate":n=Je(t,x.Long);break;case"fullDate":n=Je(t,x.Full);break;case"shortTime":n=qe(t,x.Short);break;case"mediumTime":n=qe(t,x.Medium);break;case"longTime":n=qe(t,x.Long);break;case"fullTime":n=qe(t,x.Full);break;case"short":let r=ie(t,"shortTime"),s=ie(t,"shortDate");n=_t(Qe(t,x.Short),[r,s]);break;case"medium":let o=ie(t,"mediumTime"),a=ie(t,"mediumDate");n=_t(Qe(t,x.Medium),[o,a]);break;case"long":let u=ie(t,"longTime"),l=ie(t,"longDate");n=_t(Qe(t,x.Long),[u,l]);break;case"full":let c=ie(t,"fullTime"),d=ie(t,"fullDate");n=_t(Qe(t,x.Full),[c,d]);break}return n&&(Tt[e][i]=n),n}function _t(t,i){return i&&(t=t.replace(/\{([^}]+)}/g,function(e,n){return i!=null&&n in i?i[n]:e})),t}function z(t,i,e="-",n,r){let s="";(t<0||r&&t<=0)&&(r?t=-t+1:(t=-t,s=e));let o=String(t);for(;o.length<i;)o="0"+o;return n&&(o=o.slice(o.length-i)),s+o}function Br(t,i){return z(t,3).substring(0,i)}function R(t,i,e=0,n=!1,r=!1){return function(s,o){let a=jr(t,s);if((e>0||a>-e)&&(a+=e),t===3)a===0&&e===-12&&(a=12);else if(t===6)return Br(a,i);let u=Z(o,k.MinusSign);return z(a,i,u,n,r)}}function jr(t,i){switch(t){case 0:return i.getFullYear();case 1:return i.getMonth();case 2:return i.getDate();case 3:return i.getHours();case 4:return i.getMinutes();case 5:return i.getSeconds();case 6:return i.getMilliseconds();case 7:return i.getDay();default:throw new v(2301,!1)}}function E(t,i,e=L.Format,n=!1){return function(r,s){return Ur(r,s,t,i,e,n)}}function Ur(t,i,e,n,r,s){switch(e){case 2:return Vi(i,r,n)[t.getMonth()];case 1:return $i(i,r,n)[t.getDay()];case 0:let o=t.getHours(),a=t.getMinutes();if(s){let l=Zi(i),c=Yi(i,r,n),d=l.findIndex(D=>{if(Array.isArray(D)){let[g,T]=D,A=o>=g.hours&&a>=g.minutes,m=o<T.hours||o===T.hours&&a<T.minutes;if(g.hours<T.hours){if(A&&m)return!0}else if(A||m)return!0}else if(D.hours===o&&D.minutes===a)return!0;return!1});if(d!==-1)return c[d]}return Ui(i,r,n)[o<12?0:1];case 3:return Hi(i,n)[t.getFullYear()<=0?0:1];default:let u=e;throw new v(2302,!1)}}function At(t){return function(i,e,n){let r=-1*n,s=Z(e,k.MinusSign),o=r>0?Math.floor(r/60):Math.ceil(r/60);switch(t){case 0:return(r>=0?"+":"")+z(o,2,s)+z(Math.abs(r%60),2,s);case 1:return"GMT"+(r>=0?"+":"")+z(o,1,s);case 2:return"GMT"+(r>=0?"+":"")+z(o,2,s)+":"+z(Math.abs(r%60),2,s);case 3:return n===0?"Z":(r>=0?"+":"")+z(o,2,s)+":"+z(Math.abs(r%60),2,s);default:throw new v(2310,!1)}}}var $r=0,Ft=4;function Vr(t){let i=It(t,$r,1).getDay();return It(t,0,1+(i<=Ft?Ft:Ft+7)-i)}function Wi(t){let i=t.getDay(),e=i===0?-3:Ft-i;return It(t.getFullYear(),t.getMonth(),t.getDate()+e)}function An(t,i=!1){return function(e,n){let r;if(i){let s=new Date(e.getFullYear(),e.getMonth(),1).getDay()-1,o=e.getDate();r=1+Math.floor((o+s)/7)}else{let s=Wi(e),o=Vr(s.getFullYear()),a=s.getTime()-o.getTime();r=1+Math.round(a/6048e5)}return z(r,t,Z(n,k.MinusSign))}}function St(t,i=!1){return function(e,n){let s=Wi(e).getFullYear();return z(s,t,Z(n,k.MinusSign),i)}}var Sn={};function Hr(t){if(Sn[t])return Sn[t];let i;switch(t){case"G":case"GG":case"GGG":i=E(3,w.Abbreviated);break;case"GGGG":i=E(3,w.Wide);break;case"GGGGG":i=E(3,w.Narrow);break;case"y":i=R(0,1,0,!1,!0);break;case"yy":i=R(0,2,0,!0,!0);break;case"yyy":i=R(0,3,0,!1,!0);break;case"yyyy":i=R(0,4,0,!1,!0);break;case"Y":i=St(1);break;case"YY":i=St(2,!0);break;case"YYY":i=St(3);break;case"YYYY":i=St(4);break;case"M":case"L":i=R(1,1,1);break;case"MM":case"LL":i=R(1,2,1);break;case"MMM":i=E(2,w.Abbreviated);break;case"MMMM":i=E(2,w.Wide);break;case"MMMMM":i=E(2,w.Narrow);break;case"LLL":i=E(2,w.Abbreviated,L.Standalone);break;case"LLLL":i=E(2,w.Wide,L.Standalone);break;case"LLLLL":i=E(2,w.Narrow,L.Standalone);break;case"w":i=An(1);break;case"ww":i=An(2);break;case"W":i=An(1,!0);break;case"d":i=R(2,1);break;case"dd":i=R(2,2);break;case"c":case"cc":i=R(7,1);break;case"ccc":i=E(1,w.Abbreviated,L.Standalone);break;case"cccc":i=E(1,w.Wide,L.Standalone);break;case"ccccc":i=E(1,w.Narrow,L.Standalone);break;case"cccccc":i=E(1,w.Short,L.Standalone);break;case"E":case"EE":case"EEE":i=E(1,w.Abbreviated);break;case"EEEE":i=E(1,w.Wide);break;case"EEEEE":i=E(1,w.Narrow);break;case"EEEEEE":i=E(1,w.Short);break;case"a":case"aa":case"aaa":i=E(0,w.Abbreviated);break;case"aaaa":i=E(0,w.Wide);break;case"aaaaa":i=E(0,w.Narrow);break;case"b":case"bb":case"bbb":i=E(0,w.Abbreviated,L.Standalone,!0);break;case"bbbb":i=E(0,w.Wide,L.Standalone,!0);break;case"bbbbb":i=E(0,w.Narrow,L.Standalone,!0);break;case"B":case"BB":case"BBB":i=E(0,w.Abbreviated,L.Format,!0);break;case"BBBB":i=E(0,w.Wide,L.Format,!0);break;case"BBBBB":i=E(0,w.Narrow,L.Format,!0);break;case"h":i=R(3,1,-12);break;case"hh":i=R(3,2,-12);break;case"H":i=R(3,1);break;case"HH":i=R(3,2);break;case"m":i=R(4,1);break;case"mm":i=R(4,2);break;case"s":i=R(5,1);break;case"ss":i=R(5,2);break;case"S":i=R(6,1);break;case"SS":i=R(6,2);break;case"SSS":i=R(6,3);break;case"Z":case"ZZ":case"ZZZ":i=At(0);break;case"ZZZZZ":i=At(3);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":i=At(1);break;case"OOOO":case"ZZZZ":case"zzzz":i=At(2);break;default:return null}return Sn[t]=i,i}function Xi(t,i){t=t.replace(/:/g,"");let e=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(e)?i:e}function zr(t,i){return t=new Date(t.getTime()),t.setMinutes(t.getMinutes()+i),t}function Gr(t,i,e){let r=t.getTimezoneOffset(),s=Xi(i,r);return zr(t,-1*(s-r))}function Zr(t){if(Pi(t))return t;if(typeof t=="number"&&!isNaN(t))return new Date(t);if(typeof t=="string"){if(t=t.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(t)){let[r,s=1,o=1]=t.split("-").map(a=>+a);return It(r,s-1,o)}let e=parseFloat(t);if(!isNaN(t-e))return new Date(e);let n;if(n=t.match(xr))return Yr(n)}let i=new Date(t);if(!Pi(i))throw new v(2311,!1);return i}function Yr(t){let i=new Date(0),e=0,n=0,r=t[8]?i.setUTCFullYear:i.setFullYear,s=t[8]?i.setUTCHours:i.setHours;t[9]&&(e=Number(t[9]+t[10]),n=Number(t[9]+t[11])),r.call(i,Number(t[1]),Number(t[2])-1,Number(t[3]));let o=Number(t[4]||0)-e,a=Number(t[5]||0)-n,u=Number(t[6]||0),l=Math.floor(parseFloat("0."+(t[7]||0))*1e3);return s.call(i,o,a,u,l),i}function Pi(t){return t instanceof Date&&!isNaN(t.valueOf())}var Kr=/^(\d+)?\.((\d+)(-(\d+))?)?$/,Ni=22,Mt=".",et="0",Wr=";",Xr=",",Fn="#";function Jr(t,i,e,n,r,s,o=!1){let a="",u=!1;if(!isFinite(t))a=Z(e,k.Infinity);else{let l=es(t);o&&(l=Qr(l));let c=i.minInt,d=i.minFrac,D=i.maxFrac;if(s){let F=s.match(Kr);if(F===null)throw new v(2306,!1);let $=F[1],b=F[3],V=F[5];$!=null&&(c=In($)),b!=null&&(d=In(b)),V!=null?D=In(V):b!=null&&d>D&&(D=d)}ts(l,d,D);let g=l.digits,T=l.integerLen,A=l.exponent,m=[];for(u=g.every(F=>!F);T<c;T++)g.unshift(0);for(;T<0;T++)g.unshift(0);T>0?m=g.splice(T,g.length):(m=g,g=[0]);let y=[];for(g.length>=i.lgSize&&y.unshift(g.splice(-i.lgSize,g.length).join(""));g.length>i.gSize;)y.unshift(g.splice(-i.gSize,g.length).join(""));g.length&&y.unshift(g.join("")),a=y.join(Z(e,n)),m.length&&(a+=Z(e,r)+m.join("")),A&&(a+=Z(e,k.Exponential)+"+"+A)}return t<0&&!u?a=i.negPre+a+i.negSuf:a=i.posPre+a+i.posSuf,a}function Ji(t,i,e){let n=zi(i,Mn.Decimal),r=qr(n,Z(i,k.MinusSign));return Jr(t,r,i,k.Group,k.Decimal,e)}function qr(t,i="-"){let e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},n=t.split(Wr),r=n[0],s=n[1],o=r.indexOf(Mt)!==-1?r.split(Mt):[r.substring(0,r.lastIndexOf(et)+1),r.substring(r.lastIndexOf(et)+1)],a=o[0],u=o[1]||"";e.posPre=a.substring(0,a.indexOf(Fn));for(let c=0;c<u.length;c++){let d=u.charAt(c);d===et?e.minFrac=e.maxFrac=c+1:d===Fn?e.maxFrac=c+1:e.posSuf+=d}let l=a.split(Xr);if(e.gSize=l[1]?l[1].length:0,e.lgSize=l[2]||l[1]?(l[2]||l[1]).length:0,s){let c=r.length-e.posPre.length-e.posSuf.length,d=s.indexOf(Fn);e.negPre=s.substring(0,d).replace(/'/g,""),e.negSuf=s.slice(d+c).replace(/'/g,"")}else e.negPre=i+e.posPre,e.negSuf=e.posSuf;return e}function Qr(t){if(t.digits[0]===0)return t;let i=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(i===0?t.digits.push(0,0):i===1&&t.digits.push(0),t.integerLen+=2),t}function es(t){let i=Math.abs(t)+"",e=0,n,r,s,o,a;for((r=i.indexOf(Mt))>-1&&(i=i.replace(Mt,"")),(s=i.search(/e/i))>0?(r<0&&(r=s),r+=+i.slice(s+1),i=i.substring(0,s)):r<0&&(r=i.length),s=0;i.charAt(s)===et;s++);if(s===(a=i.length))n=[0],r=1;else{for(a--;i.charAt(a)===et;)a--;for(r-=s,n=[],o=0;s<=a;s++,o++)n[o]=Number(i.charAt(s))}return r>Ni&&(n=n.splice(0,Ni-1),e=r-1,r=1),{digits:n,exponent:e,integerLen:r}}function ts(t,i,e){if(i>e)throw new v(2307,!1);let n=t.digits,r=n.length-t.integerLen,s=Math.min(Math.max(i,r),e),o=s+t.integerLen,a=n[o];if(o>0){n.splice(Math.max(t.integerLen,o));for(let d=o;d<n.length;d++)n[d]=0}else{r=Math.max(0,r),t.integerLen=1,n.length=Math.max(1,o=s+1),n[0]=0;for(let d=1;d<o;d++)n[d]=0}if(a>=5)if(o-1<0){for(let d=0;d>o;d--)n.unshift(0),t.integerLen++;n.unshift(1),t.integerLen++}else n[o-1]++;for(;r<Math.max(0,s);r++)n.push(0);let u=s!==0,l=i+t.integerLen,c=n.reduceRight(function(d,D,g,T){return D=D+d,T[g]=D<10?D:D-10,u&&(T[g]===0&&g>=l?T.pop():u=!1),D>=10?1:0},0);c&&(n.unshift(c),t.integerLen++)}function In(t){let i=parseInt(t);if(isNaN(i))throw new v(2305,!1);return i}var Rt=class{$implicit;ngForOf;index;count;constructor(i,e,n,r){this.$implicit=i,this.ngForOf=e,this.index=n,this.count=r}get first(){return this.index===0}get last(){return this.index===this.count-1}get even(){return this.index%2===0}get odd(){return!this.even}},qi=(()=>{class t{_viewContainer;_template;_differs;set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}_ngForOf=null;_ngForOfDirty=!0;_differ=null;_trackByFn;constructor(e,n,r){this._viewContainer=e,this._template=n,this._differs=r}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;let e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){let e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){let n=this._viewContainer;e.forEachOperation((r,s,o)=>{if(r.previousIndex==null)n.createEmbeddedView(this._template,new Rt(r.item,this._ngForOf,-1,-1),o===null?void 0:o);else if(o==null)n.remove(s===null?void 0:s);else if(s!==null){let a=n.get(s);n.move(a,o),xi(a,r)}});for(let r=0,s=n.length;r<s;r++){let a=n.get(r).context;a.index=r,a.count=s,a.ngForOf=this._ngForOf}e.forEachIdentityChange(r=>{let s=n.get(r.currentIndex);xi(s,r)})}static ngTemplateContextGuard(e,n){return!0}static \u0275fac=function(n){return new(n||t)(S(wt),S(pn),S(Ti))};static \u0275dir=J({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}})}return t})();function xi(t,i){t.context.$implicit=i.item}var Lt=(()=>{class t{_viewContainer;_context=new Ot;_thenTemplateRef=null;_elseTemplateRef=null;_thenViewRef=null;_elseViewRef=null;constructor(e,n){this._viewContainer=e,this._thenTemplateRef=n}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){ki(e,!1),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){ki(e,!1),this._elseTemplateRef=e,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngIfUseIfTypeGuard;static ngTemplateGuard_ngIf;static ngTemplateContextGuard(e,n){return!0}static \u0275fac=function(n){return new(n||t)(S(wt),S(pn))};static \u0275dir=J({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}})}return t})(),Ot=class{$implicit=null;ngIf=null};function ki(t,i){if(t&&!t.createEmbeddedView)throw new v(2020,!1)}var ns=(()=>{class t{_ngEl;_differs;_renderer;_ngStyle=null;_differ=null;constructor(e,n,r){this._ngEl=e,this._differs=n,this._renderer=r}set ngStyle(e){this._ngStyle=e,!this._differ&&e&&(this._differ=this._differs.find(e).create())}ngDoCheck(){if(this._differ){let e=this._differ.diff(this._ngStyle);e&&this._applyChanges(e)}}_setStyle(e,n){let[r,s]=e.split("."),o=r.indexOf("-")===-1?void 0:ye.DashCase;n!=null?this._renderer.setStyle(this._ngEl.nativeElement,r,s?`${n}${s}`:n,o):this._renderer.removeStyle(this._ngEl.nativeElement,r,o)}_applyChanges(e){e.forEachRemovedItem(n=>this._setStyle(n.key,null)),e.forEachAddedItem(n=>this._setStyle(n.key,n.currentValue)),e.forEachChangedItem(n=>this._setStyle(n.key,n.currentValue))}static \u0275fac=function(n){return new(n||t)(S(_e),S(wn),S(vt))};static \u0275dir=J({type:t,selectors:[["","ngStyle",""]],inputs:{ngStyle:"ngStyle"}})}return t})(),is=(()=>{class t{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){let n=this._viewContainerRef;if(this._viewRef&&n.remove(n.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let r=this._createContextForwardProxy();this._viewRef=n.createEmbeddedView(this.ngTemplateOutlet,r,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,n,r)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,n,r):!1,get:(e,n,r)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,n,r)}})}static \u0275fac=function(n){return new(n||t)(S(wt))};static \u0275dir=J({type:t,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},features:[pt]})}return t})();function Pt(t,i){return new v(2100,!1)}var rs=/(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])\S*/g,ss=(()=>{class t{transform(e){if(e==null)return null;if(typeof e!="string")throw Pt(t,e);return e.replace(rs,n=>n[0].toUpperCase()+n.slice(1).toLowerCase())}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=fe({name:"titlecase",type:t,pure:!0})}return t})(),os=(()=>{class t{transform(e){if(e==null)return null;if(typeof e!="string")throw Pt(t,e);return e.toUpperCase()}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=fe({name:"uppercase",type:t,pure:!0})}return t})(),as="mediumDate",Qi=new C(""),er=new C(""),us=(()=>{class t{locale;defaultTimezone;defaultOptions;constructor(e,n,r){this.locale=e,this.defaultTimezone=n,this.defaultOptions=r}transform(e,n,r,s){if(e==null||e===""||e!==e)return null;try{let o=n??this.defaultOptions?.dateFormat??as,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Ki(e,o,s||this.locale,a)}catch(o){throw Pt(t,o.message)}}static \u0275fac=function(n){return new(n||t)(S(vn,16),S(Qi,24),S(er,24))};static \u0275pipe=fe({name:"date",type:t,pure:!0})}return t})();function cs(t,i){return{key:t,value:i}}var ls=(()=>{class t{differs;constructor(e){this.differs=e}differ;keyValues=[];compareFn=Bi;transform(e,n=Bi){if(!e||!(e instanceof Map)&&typeof e!="object")return null;this.differ??=this.differs.find(e).create();let r=this.differ.diff(e),s=n!==this.compareFn;return r&&(this.keyValues=[],r.forEachItem(o=>{this.keyValues.push(cs(o.key,o.currentValue))})),(r||s)&&(n&&this.keyValues.sort(n),this.compareFn=n),this.keyValues}static \u0275fac=function(n){return new(n||t)(S(wn,16))};static \u0275pipe=fe({name:"keyvalue",type:t,pure:!1})}return t})();function Bi(t,i){let e=t.key,n=i.key;if(e===n)return 0;if(e==null)return 1;if(n==null)return-1;if(typeof e=="string"&&typeof n=="string")return e<n?-1:1;if(typeof e=="number"&&typeof n=="number")return e-n;if(typeof e=="boolean"&&typeof n=="boolean")return e<n?-1:1;let r=String(e),s=String(n);return r==s?0:r<s?-1:1}var ds=(()=>{class t{_locale;constructor(e){this._locale=e}transform(e,n,r){if(!hs(e))return null;r||=this._locale;try{let s=fs(e);return Ji(s,r,n)}catch(s){throw Pt(t,s.message)}}static \u0275fac=function(n){return new(n||t)(S(vn,16))};static \u0275pipe=fe({name:"number",type:t,pure:!0})}return t})();function hs(t){return!(t==null||t===""||t!==t)}function fs(t){if(typeof t=="string"&&!isNaN(Number(t)-parseFloat(t)))return Number(t);if(typeof t!="number")throw new v(2309,!1);return t}var tr=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=ve({type:t});static \u0275inj=De({})}return t})();function tt(t,i){i=encodeURIComponent(i);for(let e of t.split(";")){let n=e.indexOf("="),[r,s]=n==-1?[e,""]:[e.slice(0,n),e.slice(n+1)];if(r.trim()===i)return decodeURIComponent(s)}return null}var Ce=class{};function au(t,i,e){return Ei(t,i,e)}var On="browser";function uu(t){return t===On}var cu=(()=>{class t{static \u0275prov=f({token:t,providedIn:"root",factory:()=>new Rn(h(I),window)})}return t})(),Rn=class{document;window;offset=()=>[0,0];constructor(i,e){this.document=i,this.window=e}setOffset(i){Array.isArray(i)?this.offset=()=>i:this.offset=i}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(i,e){this.window.scrollTo(G(_({},e),{left:i[0],top:i[1]}))}scrollToAnchor(i,e){let n=gs(this.document,i);n&&(this.scrollToElement(n,e),n.focus())}setHistoryScrollRestoration(i){try{this.window.history.scrollRestoration=i}catch{console.warn(Be(2400,!1))}}scrollToElement(i,e){let n=i.getBoundingClientRect(),r=n.left+this.window.pageXOffset,s=n.top+this.window.pageYOffset,o=this.offset();this.window.scrollTo(G(_({},e),{left:r-o[0],top:s-o[1]}))}};function gs(t,i){let e=t.getElementById(i)||t.getElementsByName(i)[0];if(e)return e;if(typeof t.createTreeWalker=="function"&&t.body&&typeof t.body.attachShadow=="function"){let n=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT),r=n.currentNode;for(;r;){let s=r.shadowRoot;if(s){let o=s.getElementById(i)||s.querySelector(`[name="${i}"]`);if(o)return o}r=n.nextNode()}}return null}var ir=t=>t.src,ms=new C("",{factory:()=>ir});var nr=/^((\s*\d+w\s*(,|$)){1,})$/;var Ds=[1,2],ys=640;var vs=1920,ws=1080;var lu=(()=>{class t{imageLoader=h(ms);config=bs(h(hn));renderer=h(vt);imgElement=h(_e).nativeElement;injector=h(le);destroyRef=h(ft);lcpObserver;_renderedSrc=null;ngSrc;ngSrcset;sizes;width;height;decoding;loading;priority=!1;loaderParams;disableOptimizedSrcset=!1;fill=!1;placeholder;placeholderConfig;src;srcset;constructor(){}ngOnInit(){vi("NgOptimizedImage"),this.placeholder&&this.removePlaceholderOnLoad(this.imgElement),this.setHostAttributes()}setHostAttributes(){this.fill?this.sizes||="100vw":(this.setHostAttribute("width",this.width.toString()),this.setHostAttribute("height",this.height.toString())),this.setHostAttribute("loading",this.getLoadingBehavior()),this.setHostAttribute("fetchpriority",this.getFetchPriority()),this.setHostAttribute("decoding",this.getDecoding()),this.setHostAttribute("ng-img","true");let e=this.updateSrcAndSrcset();this.sizes?this.getLoadingBehavior()==="lazy"?this.setHostAttribute("sizes","auto, "+this.sizes):this.setHostAttribute("sizes",this.sizes):this.ngSrcset&&nr.test(this.ngSrcset)&&this.getLoadingBehavior()==="lazy"&&this.setHostAttribute("sizes","auto, 100vw")}ngOnChanges(e){if(e.ngSrc&&!e.ngSrc.isFirstChange()){let n=this._renderedSrc;this.updateSrcAndSrcset(!0)}}callImageLoader(e){let n=e;return this.loaderParams&&(n.loaderParams=this.loaderParams),this.imageLoader(n)}getLoadingBehavior(){return!this.priority&&this.loading!==void 0?this.loading:this.priority?"eager":"lazy"}getFetchPriority(){return this.priority?"high":"auto"}getDecoding(){return this.priority?"sync":this.decoding??"auto"}getRewrittenSrc(){if(!this._renderedSrc){let e={src:this.ngSrc};this._renderedSrc=this.callImageLoader(e)}return this._renderedSrc}getRewrittenSrcset(){let e=nr.test(this.ngSrcset);return this.ngSrcset.split(",").filter(r=>r!=="").map(r=>{r=r.trim();let s=e?parseFloat(r):parseFloat(r)*this.width;return`${this.callImageLoader({src:this.ngSrc,width:s})} ${r}`}).join(", ")}getAutomaticSrcset(){return this.sizes?this.getResponsiveSrcset():this.getFixedSrcset()}getResponsiveSrcset(){let{breakpoints:e}=this.config,n=e;return this.sizes?.trim()==="100vw"&&(n=e.filter(s=>s>=ys)),n.map(s=>`${this.callImageLoader({src:this.ngSrc,width:s})} ${s}w`).join(", ")}updateSrcAndSrcset(e=!1){e&&(this._renderedSrc=null);let n=this.getRewrittenSrc();this.setHostAttribute("src",n);let r;return this.ngSrcset?r=this.getRewrittenSrcset():this.shouldGenerateAutomaticSrcset()&&(r=this.getAutomaticSrcset()),r&&this.setHostAttribute("srcset",r),r}getFixedSrcset(){return Ds.map(n=>`${this.callImageLoader({src:this.ngSrc,width:this.width*n})} ${n}x`).join(", ")}shouldGenerateAutomaticSrcset(){let e=!1;return this.sizes||(e=this.width>vs||this.height>ws),!this.disableOptimizedSrcset&&!this.srcset&&this.imageLoader!==ir&&!e}generatePlaceholder(e){let{placeholderResolution:n}=this.config;return e===!0?`url(${this.callImageLoader({src:this.ngSrc,width:n,isPlaceholder:!0})})`:typeof e=="string"?`url(${e})`:null}shouldBlurPlaceholder(e){return!e||!e.hasOwnProperty("blur")?!0:!!e.blur}removePlaceholderOnLoad(e){let n=()=>{let o=this.injector.get(Ze);r(),s(),this.placeholder=!1,o.markForCheck()},r=this.renderer.listen(e,"load",n),s=this.renderer.listen(e,"error",n);this.destroyRef.onDestroy(()=>{r(),s()}),Cs(e,n)}setHostAttribute(e,n){this.renderer.setAttribute(this.imgElement,e,n)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=J({type:t,selectors:[["img","ngSrc",""]],hostVars:18,hostBindings:function(n,r){n&2&&we("position",r.fill?"absolute":null)("width",r.fill?"100%":null)("height",r.fill?"100%":null)("inset",r.fill?"0":null)("background-size",r.placeholder?"cover":null)("background-position",r.placeholder?"50% 50%":null)("background-repeat",r.placeholder?"no-repeat":null)("background-image",r.placeholder?r.generatePlaceholder(r.placeholder):null)("filter",r.placeholder&&r.shouldBlurPlaceholder(r.placeholderConfig)?"blur(15px)":null)},inputs:{ngSrc:[2,"ngSrc","ngSrc",Es],ngSrcset:"ngSrcset",sizes:"sizes",width:[2,"width","width",bn],height:[2,"height","height",bn],decoding:"decoding",loading:"loading",priority:[2,"priority","priority",Ye],loaderParams:"loaderParams",disableOptimizedSrcset:[2,"disableOptimizedSrcset","disableOptimizedSrcset",Ye],fill:[2,"fill","fill",Ye],placeholder:[2,"placeholder","placeholder",Ts],placeholderConfig:"placeholderConfig",src:"src",srcset:"srcset"},features:[pt]})}return t})();function bs(t){let i={};return t.breakpoints&&(i.breakpoints=t.breakpoints.sort((e,n)=>e-n)),Object.assign({},li,t,i)}function Cs(t,i){t.complete&&t.naturalWidth&&i()}function Es(t){return typeof t=="string"?t:he(t)}function Ts(t){return typeof t=="string"&&t!=="true"&&t!=="false"&&t!==""?t:Ye(t)}var nt=class{_doc;constructor(i){this._doc=i}manager},Nt=(()=>{class t extends nt{constructor(e){super(e)}supports(e){return!0}addEventListener(e,n,r,s){return e.addEventListener(n,r,s),()=>this.removeEventListener(e,n,r,s)}removeEventListener(e,n,r,s){return e.removeEventListener(n,r,s)}static \u0275fac=function(n){return new(n||t)(p(I))};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),Bt=new C(""),xn=(()=>{class t{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,n){this._zone=n,e.forEach(o=>{o.manager=this});let r=e.filter(o=>!(o instanceof Nt));this._plugins=r.slice().reverse();let s=e.find(o=>o instanceof Nt);s&&this._plugins.push(s)}addEventListener(e,n,r,s){return this._findPluginFor(n).addEventListener(e,n,r,s)}getZone(){return this._zone}_findPluginFor(e){let n=this._eventNameToPlugin.get(e);if(n)return n;if(n=this._plugins.find(s=>s.supports(e)),!n)throw new v(5101,!1);return this._eventNameToPlugin.set(e,n),n}static \u0275fac=function(n){return new(n||t)(p(Bt),p(de))};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),Ln="ng-app-id";function rr(t){for(let i of t)i.remove()}function sr(t,i){let e=i.createElement("style");return e.textContent=t,e}function _s(t,i,e,n){let r=t.head?.querySelectorAll(`style[${Ln}="${i}"],link[${Ln}="${i}"]`);if(r)for(let s of r)s.removeAttribute(Ln),s instanceof HTMLLinkElement?n.set(s.href.slice(s.href.lastIndexOf("/")+1),{usage:0,elements:[s]}):s.textContent&&e.set(s.textContent,{usage:0,elements:[s]})}function Nn(t,i){let e=i.createElement("link");return e.setAttribute("rel","stylesheet"),e.setAttribute("href",t),e}var kn=(()=>{class t{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,n,r,s={}){this.doc=e,this.appId=n,this.nonce=r,_s(e,n,this.inline,this.external),this.hosts.add(e.head)}addStyles(e,n){for(let r of e)this.addUsage(r,this.inline,sr);n?.forEach(r=>this.addUsage(r,this.external,Nn))}removeStyles(e,n){for(let r of e)this.removeUsage(r,this.inline);n?.forEach(r=>this.removeUsage(r,this.external))}addUsage(e,n,r){let s=n.get(e);s?s.usage++:n.set(e,{usage:1,elements:[...this.hosts].map(o=>this.addElement(o,r(e,this.doc)))})}removeUsage(e,n){let r=n.get(e);r&&(r.usage--,r.usage<=0&&(rr(r.elements),n.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])rr(e);this.hosts.clear()}addHost(e){this.hosts.add(e);for(let[n,{elements:r}]of this.inline)r.push(this.addElement(e,sr(n,this.doc)));for(let[n,{elements:r}]of this.external)r.push(this.addElement(e,Nn(n,this.doc)))}removeHost(e){this.hosts.delete(e)}addElement(e,n){return this.nonce&&n.setAttribute("nonce",this.nonce),e.appendChild(n)}static \u0275fac=function(n){return new(n||t)(p(I),p(ln),p(dn,8),p(mt))};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),Pn={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/Math/MathML"},Bn=/%COMP%/g;var ar="%COMP%",As=`_nghost-${ar}`,Ss=`_ngcontent-${ar}`,Fs=!0,Is=new C("",{factory:()=>Fs});function Ms(t){return Ss.replace(Bn,t)}function Rs(t){return As.replace(Bn,t)}function ur(t,i){return i.map(e=>e.replace(Bn,t))}var jn=(()=>{class t{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;platformIsServer;constructor(e,n,r,s,o,a,u=null,l=null){this.eventManager=e,this.sharedStylesHost=n,this.appId=r,this.removeStylesOnCompDestroy=s,this.doc=o,this.ngZone=a,this.nonce=u,this.tracingService=l,this.platformIsServer=!1,this.defaultRenderer=new it(e,o,a,this.platformIsServer,this.tracingService)}createRenderer(e,n){if(!e||!n)return this.defaultRenderer;let r=this.getOrCreateRenderer(e,n);return r instanceof kt?r.applyToHost(e):r instanceof rt&&r.applyStyles(),r}getOrCreateRenderer(e,n){let r=this.rendererByCompId,s=r.get(n.id);if(!s){let o=this.doc,a=this.ngZone,u=this.eventManager,l=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,d=this.platformIsServer,D=this.tracingService;switch(n.encapsulation){case Dt.Emulated:s=new kt(u,l,n,this.appId,c,o,a,d,D);break;case Dt.ShadowDom:return new xt(u,e,n,o,a,this.nonce,d,D,l);case Dt.ExperimentalIsolatedShadowDom:return new xt(u,e,n,o,a,this.nonce,d,D);default:s=new rt(u,l,n,c,o,a,d,D);break}r.set(n.id,s)}return s}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static \u0275fac=function(n){return new(n||t)(p(xn),p(kn),p(ln),p(Is),p(I),p(de),p(dn),p(yt,8))};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),it=class{eventManager;doc;ngZone;platformIsServer;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(i,e,n,r,s){this.eventManager=i,this.doc=e,this.ngZone=n,this.platformIsServer=r,this.tracingService=s}destroy(){}destroyNode=null;createElement(i,e){return e?this.doc.createElementNS(Pn[e]||e,i):this.doc.createElement(i)}createComment(i){return this.doc.createComment(i)}createText(i){return this.doc.createTextNode(i)}appendChild(i,e){(or(i)?i.content:i).appendChild(e)}insertBefore(i,e,n){i&&(or(i)?i.content:i).insertBefore(e,n)}removeChild(i,e){e.remove()}selectRootElement(i,e){let n=typeof i=="string"?this.doc.querySelector(i):i;if(!n)throw new v(-5104,!1);return e||(n.textContent=""),n}parentNode(i){return i.parentNode}nextSibling(i){return i.nextSibling}setAttribute(i,e,n,r){if(r){e=r+":"+e;let s=Pn[r];s?i.setAttributeNS(s,e,n):i.setAttribute(e,n)}else i.setAttribute(e,n)}removeAttribute(i,e,n){if(n){let r=Pn[n];r?i.removeAttributeNS(r,e):i.removeAttribute(`${n}:${e}`)}else i.removeAttribute(e)}addClass(i,e){i.classList.add(e)}removeClass(i,e){i.classList.remove(e)}setStyle(i,e,n,r){r&(ye.DashCase|ye.Important)?i.style.setProperty(e,n,r&ye.Important?"important":""):i.style[e]=n}removeStyle(i,e,n){n&ye.DashCase?i.style.removeProperty(e):i.style[e]=""}setProperty(i,e,n){i!=null&&(i[e]=n)}setValue(i,e){i.nodeValue=e}listen(i,e,n,r){if(typeof i=="string"&&(i=te().getGlobalEventTarget(this.doc,i),!i))throw new v(5102,!1);let s=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(s=this.tracingService.wrapEventListener(i,e,s)),this.eventManager.addEventListener(i,e,s,r)}decoratePreventDefault(i){return e=>{if(e==="__ngUnwrap__")return i;i(e)===!1&&e.preventDefault()}}};function or(t){return t.tagName==="TEMPLATE"&&t.content!==void 0}var xt=class extends it{hostEl;sharedStylesHost;shadowRoot;constructor(i,e,n,r,s,o,a,u,l){super(i,r,s,a,u),this.hostEl=e,this.sharedStylesHost=l,this.shadowRoot=e.attachShadow({mode:"open"}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let c=n.styles;c=ur(n.id,c);for(let D of c){let g=document.createElement("style");o&&g.setAttribute("nonce",o),g.textContent=D,this.shadowRoot.appendChild(g)}let d=n.getExternalStyles?.();if(d)for(let D of d){let g=Nn(D,r);o&&g.setAttribute("nonce",o),this.shadowRoot.appendChild(g)}}nodeOrShadowRoot(i){return i===this.hostEl?this.shadowRoot:i}appendChild(i,e){return super.appendChild(this.nodeOrShadowRoot(i),e)}insertBefore(i,e,n){return super.insertBefore(this.nodeOrShadowRoot(i),e,n)}removeChild(i,e){return super.removeChild(null,e)}parentNode(i){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(i)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},rt=class extends it{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(i,e,n,r,s,o,a,u,l){super(i,s,o,a,u),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=r;let c=n.styles;this.styles=l?ur(l,c):c,this.styleUrls=n.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&yi.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},kt=class extends rt{contentAttr;hostAttr;constructor(i,e,n,r,s,o,a,u,l){let c=r+"-"+n.id;super(i,e,n,s,o,a,u,l,c),this.contentAttr=Ms(c),this.hostAttr=Rs(c)}applyToHost(i){this.applyStyles(),this.setAttribute(i,this.hostAttr,"")}createElement(i,e){let n=super.createElement(i,e);return super.setAttribute(n,this.contentAttr,""),n}};var jt=class t extends Xe{supportsDOMEvents=!0;static makeCurrent(){En(new t)}onAndCancel(i,e,n,r){return i.addEventListener(e,n,r),()=>{i.removeEventListener(e,n,r)}}dispatchEvent(i,e){i.dispatchEvent(e)}remove(i){i.remove()}createElement(i,e){return e=e||this.getDefaultDocument(),e.createElement(i)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(i){return i.nodeType===Node.ELEMENT_NODE}isShadowRoot(i){return i instanceof DocumentFragment}getGlobalEventTarget(i,e){return e==="window"?window:e==="document"?i:e==="body"?i.body:null}getBaseHref(i){let e=Ls();return e==null?null:Ps(e)}resetBaseElement(){st=null}getUserAgent(){return window.navigator.userAgent}getCookie(i){return tt(document.cookie,i)}},st=null;function Ls(){return st=st||document.head.querySelector("base"),st?st.getAttribute("href"):null}function Ps(t){return new URL(t,document.baseURI).pathname}var Ns=(()=>{class t{build(){return new XMLHttpRequest}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),cr=["alt","control","meta","shift"],xs={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},ks={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey},lr=(()=>{class t extends nt{constructor(e){super(e)}supports(e){return t.parseEventName(e)!=null}addEventListener(e,n,r,s){let o=t.parseEventName(n),a=t.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>te().onAndCancel(e,o.domEventName,a,s))}static parseEventName(e){let n=e.toLowerCase().split("."),r=n.shift();if(n.length===0||!(r==="keydown"||r==="keyup"))return null;let s=t._normalizeKey(n.pop()),o="",a=n.indexOf("code");if(a>-1&&(n.splice(a,1),o="code."),cr.forEach(l=>{let c=n.indexOf(l);c>-1&&(n.splice(c,1),o+=l+".")}),o+=s,n.length!=0||s.length===0)return null;let u={};return u.domEventName=r,u.fullKey=o,u}static matchEventFullKeyCode(e,n){let r=xs[e.key]||e.key,s="";return n.indexOf("code.")>-1&&(r=e.code,s="code."),r==null||!r?!1:(r=r.toLowerCase(),r===" "?r="space":r==="."&&(r="dot"),cr.forEach(o=>{if(o!==r){let a=ks[o];a(e)&&(s+=o+".")}}),s+=r,s===n)}static eventCallback(e,n,r){return s=>{t.matchEventFullKeyCode(s,e)&&r.runGuarded(()=>n(s))}}static _normalizeKey(e){return e==="esc"?"escape":e}static \u0275fac=function(n){return new(n||t)(p(I))};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})();function Bs(t,i,e){let n=_({rootComponent:t,platformRef:e?.platformRef},js(i));return _i(n)}function js(t){return{appProviders:[...zs,...t?.providers??[]],platformProviders:Hs}}function Us(){jt.makeCurrent()}function $s(){return new un}function Vs(){return ui(document),document}var Hs=[{provide:mt,useValue:On},{provide:ci,useValue:Us,multi:!0},{provide:I,useFactory:Vs}];var zs=[{provide:oi,useValue:"root"},{provide:un,useFactory:$s},{provide:Bt,useClass:Nt,multi:!0},{provide:Bt,useClass:lr,multi:!0},jn,kn,xn,{provide:bi,useExisting:jn},{provide:Ce,useClass:Ns},[]];var K=class t{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(i){i?typeof i=="string"?this.lazyInit=()=>{this.headers=new Map,i.split(`
2
- `).forEach(e=>{let n=e.indexOf(":");if(n>0){let r=e.slice(0,n),s=e.slice(n+1).trim();this.addHeaderEntry(r,s)}})}:typeof Headers<"u"&&i instanceof Headers?(this.headers=new Map,i.forEach((e,n)=>{this.addHeaderEntry(n,e)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(i).forEach(([e,n])=>{this.setHeaderEntries(e,n)})}:this.headers=new Map}has(i){return this.init(),this.headers.has(i.toLowerCase())}get(i){this.init();let e=this.headers.get(i.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(i){return this.init(),this.headers.get(i.toLowerCase())||null}append(i,e){return this.clone({name:i,value:e,op:"a"})}set(i,e){return this.clone({name:i,value:e,op:"s"})}delete(i,e){return this.clone({name:i,value:e,op:"d"})}maybeSetNormalizedName(i,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,i)}init(){this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(i=>this.applyUpdate(i)),this.lazyUpdate=null))}copyFrom(i){i.init(),Array.from(i.headers.keys()).forEach(e=>{this.headers.set(e,i.headers.get(e)),this.normalizedNames.set(e,i.normalizedNames.get(e))})}clone(i){let e=new t;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([i]),e}applyUpdate(i){let e=i.name.toLowerCase();switch(i.op){case"a":case"s":let n=i.value;if(typeof n=="string"&&(n=[n]),n.length===0)return;this.maybeSetNormalizedName(i.name,e);let r=(i.op==="a"?this.headers.get(e):void 0)||[];r.push(...n),this.headers.set(e,r);break;case"d":let s=i.value;if(!s)this.headers.delete(e),this.normalizedNames.delete(e);else{let o=this.headers.get(e);if(!o)return;o=o.filter(a=>s.indexOf(a)===-1),o.length===0?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,o)}break}}addHeaderEntry(i,e){let n=i.toLowerCase();this.maybeSetNormalizedName(i,n),this.headers.has(n)?this.headers.get(n).push(e):this.headers.set(n,[e])}setHeaderEntries(i,e){let n=(Array.isArray(e)?e:[e]).map(s=>s.toString()),r=i.toLowerCase();this.headers.set(r,n),this.maybeSetNormalizedName(i,r)}forEach(i){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>i(this.normalizedNames.get(e),this.headers.get(e)))}};var Vt=class{map=new Map;set(i,e){return this.map.set(i,e),this}get(i){return this.map.has(i)||this.map.set(i,i.defaultValue()),this.map.get(i)}delete(i){return this.map.delete(i),this}has(i){return this.map.has(i)}keys(){return this.map.keys()}},Ht=class{encodeKey(i){return dr(i)}encodeValue(i){return dr(i)}decodeKey(i){return decodeURIComponent(i)}decodeValue(i){return decodeURIComponent(i)}};function Gs(t,i){let e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(r=>{let s=r.indexOf("="),[o,a]=s==-1?[i.decodeKey(r),""]:[i.decodeKey(r.slice(0,s)),i.decodeValue(r.slice(s+1))],u=e.get(o)||[];u.push(a),e.set(o,u)}),e}var Zs=/%(\d[a-f0-9])/gi,Ys={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function dr(t){return encodeURIComponent(t).replace(Zs,(i,e)=>Ys[e]??i)}function Ut(t){return`${t}`}var re=class t{map;encoder;updates=null;cloneFrom=null;constructor(i={}){if(this.encoder=i.encoder||new Ht,i.fromString){if(i.fromObject)throw new v(2805,!1);this.map=Gs(i.fromString,this.encoder)}else i.fromObject?(this.map=new Map,Object.keys(i.fromObject).forEach(e=>{let n=i.fromObject[e],r=Array.isArray(n)?n.map(Ut):[Ut(n)];this.map.set(e,r)})):this.map=null}has(i){return this.init(),this.map.has(i)}get(i){this.init();let e=this.map.get(i);return e?e[0]:null}getAll(i){return this.init(),this.map.get(i)||null}keys(){return this.init(),Array.from(this.map.keys())}append(i,e){return this.clone({param:i,value:e,op:"a"})}appendAll(i){let e=[];return Object.keys(i).forEach(n=>{let r=i[n];Array.isArray(r)?r.forEach(s=>{e.push({param:n,value:s,op:"a"})}):e.push({param:n,value:r,op:"a"})}),this.clone(e)}set(i,e){return this.clone({param:i,value:e,op:"s"})}delete(i,e){return this.clone({param:i,value:e,op:"d"})}toString(){return this.init(),this.keys().map(i=>{let e=this.encoder.encodeKey(i);return this.map.get(i).map(n=>e+"="+this.encoder.encodeValue(n)).join("&")}).filter(i=>i!=="").join("&")}clone(i){let e=new t({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(i),e}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(i=>this.map.set(i,this.cloneFrom.map.get(i))),this.updates.forEach(i=>{switch(i.op){case"a":case"s":let e=(i.op==="a"?this.map.get(i.param):void 0)||[];e.push(Ut(i.value)),this.map.set(i.param,e);break;case"d":if(i.value!==void 0){let n=this.map.get(i.param)||[],r=n.indexOf(Ut(i.value));r!==-1&&n.splice(r,1),n.length>0?this.map.set(i.param,n):this.map.delete(i.param)}else{this.map.delete(i.param);break}}}),this.cloneFrom=this.updates=null)}};function Ks(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function hr(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function fr(t){return typeof Blob<"u"&&t instanceof Blob}function pr(t){return typeof FormData<"u"&&t instanceof FormData}function Ws(t){return typeof URLSearchParams<"u"&&t instanceof URLSearchParams}var ot="Content-Type",zt="Accept",mr="text/plain",Dr="application/json",yr=`${Dr}, ${mr}, */*`,Se=class t{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;referrerPolicy;responseType="json";method;params;urlWithParams;transferCache;timeout;constructor(i,e,n,r){this.url=e,this.method=i.toUpperCase();let s;if(Ks(this.method)||r?(this.body=n!==void 0?n:null,s=r):s=n,s){if(this.reportProgress=!!s.reportProgress,this.withCredentials=!!s.withCredentials,this.keepalive=!!s.keepalive,s.responseType&&(this.responseType=s.responseType),s.headers&&(this.headers=s.headers),s.context&&(this.context=s.context),s.params&&(this.params=s.params),s.priority&&(this.priority=s.priority),s.cache&&(this.cache=s.cache),s.credentials&&(this.credentials=s.credentials),typeof s.timeout=="number"){if(s.timeout<1||!Number.isInteger(s.timeout))throw new v(2822,"");this.timeout=s.timeout}s.mode&&(this.mode=s.mode),s.redirect&&(this.redirect=s.redirect),s.integrity&&(this.integrity=s.integrity),s.referrer&&(this.referrer=s.referrer),s.referrerPolicy&&(this.referrerPolicy=s.referrerPolicy),this.transferCache=s.transferCache}if(this.headers??=new K,this.context??=new Vt,!this.params)this.params=new re,this.urlWithParams=e;else{let o=this.params.toString();if(o.length===0)this.urlWithParams=e;else{let a=e.indexOf("?"),u=a===-1?"?":a<e.length-1?"&":"";this.urlWithParams=e+u+o}}}serializeBody(){return this.body===null?null:typeof this.body=="string"||hr(this.body)||fr(this.body)||pr(this.body)||Ws(this.body)?this.body:this.body instanceof re?this.body.toString():typeof this.body=="object"||typeof this.body=="boolean"||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return this.body===null||pr(this.body)?null:fr(this.body)?this.body.type||null:hr(this.body)?null:typeof this.body=="string"?mr:this.body instanceof re?"application/x-www-form-urlencoded;charset=UTF-8":typeof this.body=="object"||typeof this.body=="number"||typeof this.body=="boolean"?Dr:null}clone(i={}){let e=i.method||this.method,n=i.url||this.url,r=i.responseType||this.responseType,s=i.keepalive??this.keepalive,o=i.priority||this.priority,a=i.cache||this.cache,u=i.mode||this.mode,l=i.redirect||this.redirect,c=i.credentials||this.credentials,d=i.referrer||this.referrer,D=i.integrity||this.integrity,g=i.referrerPolicy||this.referrerPolicy,T=i.transferCache??this.transferCache,A=i.timeout??this.timeout,m=i.body!==void 0?i.body:this.body,y=i.withCredentials??this.withCredentials,F=i.reportProgress??this.reportProgress,$=i.headers||this.headers,b=i.params||this.params,V=i.context??this.context;return i.setHeaders!==void 0&&($=Object.keys(i.setHeaders).reduce((ae,W)=>ae.set(W,i.setHeaders[W]),$)),i.setParams&&(b=Object.keys(i.setParams).reduce((ae,W)=>ae.set(W,i.setParams[W]),b)),new t(e,n,m,{params:b,headers:$,context:V,reportProgress:F,responseType:r,withCredentials:y,transferCache:T,keepalive:s,cache:a,priority:o,timeout:A,mode:u,redirect:l,credentials:c,referrer:d,integrity:D,referrerPolicy:g})}},se=(function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t})(se||{}),Fe=class{headers;status;statusText;url;ok;type;redirected;responseType;constructor(i,e=200,n="OK"){this.headers=i.headers||new K,this.status=i.status!==void 0?i.status:e,this.statusText=i.statusText||n,this.url=i.url||null,this.redirected=i.redirected,this.responseType=i.responseType,this.ok=this.status>=200&&this.status<300}},at=class t extends Fe{constructor(i={}){super(i)}type=se.ResponseHeader;clone(i={}){return new t({headers:i.headers||this.headers,status:i.status!==void 0?i.status:this.status,statusText:i.statusText||this.statusText,url:i.url||this.url||void 0})}},Ie=class t extends Fe{body;constructor(i={}){super(i),this.body=i.body!==void 0?i.body:null}type=se.Response;clone(i={}){return new t({body:i.body!==void 0?i.body:this.body,headers:i.headers||this.headers,status:i.status!==void 0?i.status:this.status,statusText:i.statusText||this.statusText,url:i.url||this.url||void 0,redirected:i.redirected??this.redirected,responseType:i.responseType??this.responseType})}},Y=class extends Fe{name="HttpErrorResponse";message;error;ok=!1;constructor(i){super(i,0,"Unknown Error"),this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${i.url||"(unknown url)"}`:this.message=`Http failure response for ${i.url||"(unknown url)"}: ${i.status} ${i.statusText}`,this.error=i.error||null}},vr=200,Xs=204;var Js=/^\)\]\}',?\n/,wr=new C(""),$t=(()=>{class t{fetchImpl=h($n,{optional:!0})?.fetch??((...e)=>globalThis.fetch(...e));ngZone=h(de);destroyRef=h(ft);handle(e){return new Qt(n=>{let r=new AbortController;this.doRequest(e,r.signal,n).then(Vn,o=>n.error(new Y({error:o})));let s;return e.timeout&&(s=this.ngZone.runOutsideAngular(()=>setTimeout(()=>{r.signal.aborted||r.abort(new DOMException("signal timed out","TimeoutError"))},e.timeout))),()=>{s!==void 0&&clearTimeout(s),r.abort()}})}doRequest(e,n,r){return dt(this,null,function*(){let s=this.createRequestInit(e),o;try{let A=this.ngZone.runOutsideAngular(()=>this.fetchImpl(e.urlWithParams,_({signal:n},s)));qs(A),r.next({type:se.Sent}),o=yield A}catch(A){r.error(new Y({error:A,status:A.status??0,statusText:A.statusText,url:e.urlWithParams,headers:A.headers}));return}let a=new K(o.headers),u=o.statusText,l=o.url||e.urlWithParams,c=o.status,d=null;if(e.reportProgress&&r.next(new at({headers:a,status:c,statusText:u,url:l})),o.body){let A=o.headers.get("content-length"),m=[],y=o.body.getReader(),F=0,$,b,V=typeof Zone<"u"&&Zone.current,ae=!1;if(yield this.ngZone.runOutsideAngular(()=>dt(this,null,function*(){for(;;){if(this.destroyRef.destroyed){yield y.cancel(),ae=!0;break}let{done:Ne,value:qt}=yield y.read();if(Ne)break;if(m.push(qt),F+=qt.length,e.reportProgress){b=e.responseType==="text"?(b??"")+($??=new TextDecoder).decode(qt,{stream:!0}):void 0;let ii=()=>r.next({type:se.DownloadProgress,total:A?+A:void 0,loaded:F,partialText:b});V?V.run(ii):ii()}}})),ae){r.complete();return}let W=this.concatChunks(m,F);try{let Ne=o.headers.get(ot)??"";d=this.parseBody(e,W,Ne,c)}catch(Ne){r.error(new Y({error:Ne,headers:new K(o.headers),status:o.status,statusText:o.statusText,url:o.url||e.urlWithParams}));return}}c===0&&(c=d?vr:0);let D=c>=200&&c<300,g=o.redirected,T=o.type;D?(r.next(new Ie({body:d,headers:a,status:c,statusText:u,url:l,redirected:g,responseType:T})),r.complete()):r.error(new Y({error:d,headers:a,status:c,statusText:u,url:l,redirected:g,responseType:T}))})}parseBody(e,n,r,s){switch(e.responseType){case"json":let o=new TextDecoder().decode(n).replace(Js,"");if(o==="")return null;try{return JSON.parse(o)}catch(a){if(s<200||s>=300)return o;throw a}case"text":return new TextDecoder().decode(n);case"blob":return new Blob([n],{type:r});case"arraybuffer":return n.buffer}}createRequestInit(e){let n={},r;if(r=e.credentials,e.withCredentials&&(r="include"),e.headers.forEach((s,o)=>n[s]=o.join(",")),e.headers.has(zt)||(n[zt]=yr),!e.headers.has(ot)){let s=e.detectContentTypeHeader();s!==null&&(n[ot]=s)}return{body:e.serializeBody(),method:e.method,headers:n,credentials:r,keepalive:e.keepalive,cache:e.cache,priority:e.priority,mode:e.mode,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity,referrerPolicy:e.referrerPolicy}}concatChunks(e,n){let r=new Uint8Array(n),s=0;for(let o of e)r.set(o,s),s+=o.length;return r}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),$n=class{};function Vn(){}function qs(t){t.then(Vn,Vn)}var Qs=/^\)\]\}',?\n/;var Hn=(()=>{class t{xhrFactory;tracingService=h(yt,{optional:!0});constructor(e){this.xhrFactory=e}maybePropagateTrace(e){return this.tracingService?.propagate?this.tracingService.propagate(e):e}handle(e){if(e.method==="JSONP")throw new v(-2800,!1);let n=this.xhrFactory;return ue(null).pipe(ke(()=>new Qt(s=>{let o=n.build();if(o.open(e.method,e.urlWithParams),e.withCredentials&&(o.withCredentials=!0),e.headers.forEach((m,y)=>o.setRequestHeader(m,y.join(","))),e.headers.has(zt)||o.setRequestHeader(zt,yr),!e.headers.has(ot)){let m=e.detectContentTypeHeader();m!==null&&o.setRequestHeader(ot,m)}if(e.timeout&&(o.timeout=e.timeout),e.responseType){let m=e.responseType.toLowerCase();o.responseType=m!=="json"?m:"text"}let a=e.serializeBody(),u=null,l=()=>{if(u!==null)return u;let m=o.statusText||"OK",y=new K(o.getAllResponseHeaders()),F=o.responseURL||e.url;return u=new at({headers:y,status:o.status,statusText:m,url:F}),u},c=this.maybePropagateTrace(()=>{let{headers:m,status:y,statusText:F,url:$}=l(),b=null;y!==Xs&&(b=typeof o.response>"u"?o.responseText:o.response),y===0&&(y=b?vr:0);let V=y>=200&&y<300;if(e.responseType==="json"&&typeof b=="string"){let ae=b;b=b.replace(Qs,"");try{b=b!==""?JSON.parse(b):null}catch(W){b=ae,V&&(V=!1,b={error:W,text:b})}}V?(s.next(new Ie({body:b,headers:m,status:y,statusText:F,url:$||void 0})),s.complete()):s.error(new Y({error:b,headers:m,status:y,statusText:F,url:$||void 0}))}),d=this.maybePropagateTrace(m=>{let{url:y}=l(),F=new Y({error:m,status:o.status||0,statusText:o.statusText||"Unknown Error",url:y||void 0});s.error(F)}),D=d;e.timeout&&(D=this.maybePropagateTrace(m=>{let{url:y}=l(),F=new Y({error:new DOMException("Request timed out","TimeoutError"),status:o.status||0,statusText:o.statusText||"Request timeout",url:y||void 0});s.error(F)}));let g=!1,T=this.maybePropagateTrace(m=>{g||(s.next(l()),g=!0);let y={type:se.DownloadProgress,loaded:m.loaded};m.lengthComputable&&(y.total=m.total),e.responseType==="text"&&o.responseText&&(y.partialText=o.responseText),s.next(y)}),A=this.maybePropagateTrace(m=>{let y={type:se.UploadProgress,loaded:m.loaded};m.lengthComputable&&(y.total=m.total),s.next(y)});return o.addEventListener("load",c),o.addEventListener("error",d),o.addEventListener("timeout",D),o.addEventListener("abort",d),e.reportProgress&&(o.addEventListener("progress",T),a!==null&&o.upload&&o.upload.addEventListener("progress",A)),o.send(a),s.next({type:se.Sent}),()=>{o.removeEventListener("error",d),o.removeEventListener("abort",d),o.removeEventListener("load",c),o.removeEventListener("timeout",D),e.reportProgress&&(o.removeEventListener("progress",T),a!==null&&o.upload&&o.upload.removeEventListener("progress",A)),o.readyState!==o.DONE&&o.abort()}})))}static \u0275fac=function(n){return new(n||t)(p(Ce))};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function br(t,i){return i(t)}function eo(t,i){return(e,n)=>i.intercept(e,{handle:r=>t(r,n)})}function to(t,i,e){return(n,r)=>ai(e,()=>i(n,s=>t(s,r)))}var Cr=new C(""),zn=new C("",{factory:()=>[]}),Er=new C(""),Gn=new C("",{providedIn:"root",factory:()=>!0});function no(){let t=null;return(i,e)=>{t===null&&(t=(h(Cr,{optional:!0})??[]).reduceRight(eo,br));let n=h(cn);if(h(Gn)){let s=n.add();return t(i,e).pipe(nn(s))}else return t(i,e)}}var Zt=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:function(n){let r=null;return n?r=new(n||t):r=p(Hn),r},providedIn:"root"})}return t})();var Gt=(()=>{class t{backend;injector;chain=null;pendingTasks=h(cn);contributeToStability=h(Gn);constructor(e,n){this.backend=e,this.injector=n}handle(e){if(this.chain===null){let n=Array.from(new Set([...this.injector.get(zn),...this.injector.get(Er,[])]));this.chain=n.reduceRight((r,s)=>to(r,s,this.injector),br)}if(this.contributeToStability){let n=this.pendingTasks.add();return this.chain(e,r=>this.backend.handle(r)).pipe(nn(n))}else return this.chain(e,n=>this.backend.handle(n))}static \u0275fac=function(n){return new(n||t)(p(Zt),p(sn))};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Zn=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:function(n){let r=null;return n?r=new(n||t):r=p(Gt),r},providedIn:"root"})}return t})();function Un(t,i){return{body:i,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,credentials:t.credentials,transferCache:t.transferCache,timeout:t.timeout,keepalive:t.keepalive,priority:t.priority,cache:t.cache,mode:t.mode,redirect:t.redirect,integrity:t.integrity,referrer:t.referrer,referrerPolicy:t.referrerPolicy}}var Yt=(()=>{class t{handler;constructor(e){this.handler=e}request(e,n,r={}){let s;if(e instanceof Se)s=e;else{let u;r.headers instanceof K?u=r.headers:u=new K(r.headers);let l;r.params&&(r.params instanceof re?l=r.params:l=new re({fromObject:r.params})),s=new Se(e,n,r.body!==void 0?r.body:null,{headers:u,context:r.context,params:l,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials,transferCache:r.transferCache,keepalive:r.keepalive,priority:r.priority,cache:r.cache,mode:r.mode,redirect:r.redirect,credentials:r.credentials,referrer:r.referrer,referrerPolicy:r.referrerPolicy,integrity:r.integrity,timeout:r.timeout})}let o=ue(s).pipe(ht(u=>this.handler.handle(u)));if(e instanceof Se||r.observe==="events")return o;let a=o.pipe(si(u=>u instanceof Ie));switch(r.observe||"body"){case"body":switch(s.responseType){case"arraybuffer":return a.pipe(ce(u=>{if(u.body!==null&&!(u.body instanceof ArrayBuffer))throw new v(2806,!1);return u.body}));case"blob":return a.pipe(ce(u=>{if(u.body!==null&&!(u.body instanceof Blob))throw new v(2807,!1);return u.body}));case"text":return a.pipe(ce(u=>{if(u.body!==null&&typeof u.body!="string")throw new v(2808,!1);return u.body}));case"json":default:return a.pipe(ce(u=>u.body))}case"response":return a;default:throw new v(2809,!1)}}delete(e,n={}){return this.request("DELETE",e,n)}get(e,n={}){return this.request("GET",e,n)}head(e,n={}){return this.request("HEAD",e,n)}jsonp(e,n){return this.request("JSONP",e,{params:new re().append(n,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,n={}){return this.request("OPTIONS",e,n)}patch(e,n,r={}){return this.request("PATCH",e,Un(r,n))}post(e,n,r={}){return this.request("POST",e,Un(r,n))}put(e,n,r={}){return this.request("PUT",e,Un(r,n))}static \u0275fac=function(n){return new(n||t)(p(Zn))};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var io=new C("",{factory:()=>!0}),ro="XSRF-TOKEN",so=new C("",{providedIn:"root",factory:()=>ro}),oo="X-XSRF-TOKEN",ao=new C("",{providedIn:"root",factory:()=>oo}),uo=(()=>{class t{cookieName=h(so);doc=h(I);lastCookieString="";lastToken=null;parseCount=0;getToken(){let e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=tt(e,this.cookieName),this.lastCookieString=e),this.lastToken}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Tr=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:function(n){let r=null;return n?r=new(n||t):r=p(uo),r},providedIn:"root"})}return t})(),co=/^(?:https?:)?\/\//i;function lo(t,i){if(!h(io)||t.method==="GET"||t.method==="HEAD"||co.test(t.url))return i(t);let e=h(Tr).getToken(),n=h(ao);return e!=null&&!t.headers.has(n)&&(t=t.clone({headers:t.headers.set(n,e)})),i(t)}var Kt=(function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t})(Kt||{});function _r(t,i){return{\u0275kind:t,\u0275providers:i}}function ho(...t){let i=[Yt,Gt,{provide:Zn,useExisting:Gt},{provide:Zt,useFactory:()=>h(wr,{optional:!0})??h(Hn)},{provide:zn,useValue:lo,multi:!0}];for(let e of t)i.push(...e.\u0275providers);return je(i)}var gr=new C("");function fo(){return _r(Kt.LegacyInterceptors,[{provide:gr,useFactory:no},{provide:zn,useExisting:gr,multi:!0}])}function po(){return _r(Kt.Fetch,[$t,{provide:wr,useExisting:$t},{provide:Zt,useExisting:$t}])}var Pc=(()=>{class t{_doc;constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static \u0275fac=function(n){return new(n||t)(p(I))};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Yn=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:function(n){let r=null;return n?r=new(n||t):r=p(go),r},providedIn:"root"})}return t})(),go=(()=>{class t extends Yn{_doc;constructor(e){super(),this._doc=e}sanitize(e,n){if(n==null)return null;switch(e){case X.NONE:return n;case X.HTML:return Ae(n,"HTML")?he(n):Di(this._doc,String(n)).toString();case X.STYLE:return Ae(n,"Style")?he(n):n;case X.SCRIPT:if(Ae(n,"Script"))return he(n);throw new v(5200,!1);case X.URL:return Ae(n,"URL")?he(n):mi(String(n));case X.RESOURCE_URL:if(Ae(n,"ResourceURL"))return he(n);throw new v(5201,!1);default:throw new v(5202,!1)}}bypassSecurityTrustHtml(e){return di(e)}bypassSecurityTrustStyle(e){return hi(e)}bypassSecurityTrustScript(e){return fi(e)}bypassSecurityTrustUrl(e){return pi(e)}bypassSecurityTrustResourceUrl(e){return gi(e)}static \u0275fac=function(n){return new(n||t)(p(I))};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var lt=class{},Do=(()=>{class t{handle(e){return e.key}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),Me=class{},yo=(()=>{class t extends Me{compile(e,n){return e}compileTranslations(e,n){return e}static \u0275fac=(()=>{let e;return function(r){return(e||(e=gt(t)))(r||t)}})();static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),Re=class{},vo=(()=>{class t extends Re{getTranslation(e){return ue({})}static \u0275fac=(()=>{let e;return function(r){return(e||(e=gt(t)))(r||t)}})();static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})();function Wt(t,i){if(t===i)return!0;if(t===null||i===null)return!1;if(t!==t&&i!==i)return!0;let e=typeof t,n=typeof i,r;if(e==n&&e=="object")if(Array.isArray(t)){if(!Array.isArray(i))return!1;if((r=t.length)==i.length){for(let s=0;s<r;s++)if(!Wt(t[s],i[s]))return!1;return!0}}else{if(Array.isArray(i))return!1;if(oe(t)&&oe(i)){let s=Object.create(null);for(let o in t){if(!Wt(t[o],i[o]))return!1;s[o]=!0}for(let o in i)if(!(o in s)&&typeof i[o]<"u")return!1;return!0}}return!1}function ge(t){return typeof t<"u"&&t!==null}function Ar(t){return t!==void 0}function oe(t){return ct(t)&&!Ee(t)&&t!==null}function ct(t){return typeof t=="object"&&t!==null}function Ee(t){return Array.isArray(t)}function Xt(t){return typeof t=="string"}function wo(t){return typeof t=="function"}function Jt(t){if(Ee(t))return t.map(i=>Jt(i));if(oe(t)){let i={};return Object.keys(t).forEach(e=>{i[e]=Jt(t[e])}),i}else return t}function Jn(t,i){if(!ct(t))return Jt(i);let e=Jt(t);return ct(e)&&ct(i)&&Object.keys(i).forEach(n=>{oe(i[n])?n in t?e[n]=Jn(t[n],i[n]):Object.assign(e,{[n]:i[n]}):Object.assign(e,{[n]:i[n]})}),e}function Sr(t,i){let e=i.split(".");i="";do{i+=e.shift();let n=!e.length;if(ge(t)){if(oe(t)&&Ar(t[i])&&(oe(t[i])||Ee(t[i])||n)){t=t[i],i="";continue}if(Ee(t)){let r=parseInt(i,10);if(Ar(t[r])&&(oe(t[r])||Ee(t[r])||n)){t=t[r],i="";continue}}}if(n){t=void 0;continue}i+="."}while(e.length);return t}function bo(t,i,e){return Jn(t,Co(i,e))}function Co(t,i){return t.split(".").reduceRight((e,n)=>({[n]:e}),i)}var Oe=class{},Eo=(()=>{class t extends Oe{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,n){if(Xt(e))return this.interpolateString(e,n);if(wo(e))return this.interpolateFunction(e,n)}interpolateFunction(e,n){return e(n)}interpolateString(e,n){return n?e.replace(this.templateMatcher,(r,s)=>{let o=this.getInterpolationReplacement(n,s);return o!==void 0?o:r}):e}getInterpolationReplacement(e,n){return this.formatValue(Sr(e,n))}formatValue(e){if(Xt(e))return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(e===null)return"null";if(Ee(e))return e.join(", ");if(ct(e))return typeof e.toString=="function"&&e.toString!==Object.prototype.toString?e.toString():JSON.stringify(e)}static \u0275fac=(()=>{let e;return function(r){return(e||(e=gt(t)))(r||t)}})();static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),Kn=(()=>{class t{_onTranslationChange=new N;_onLangChange=new N;_onFallbackLangChange=new N;fallbackLang=null;currentLang;translations={};languages=[];getTranslations(e){return this.translations[e]}setTranslations(e,n,r){this.translations[e]=r&&this.hasTranslationFor(e)?Jn(this.translations[e],n):n,this.addLanguages([e]),this._onTranslationChange.next({lang:e,translations:this.getTranslations(e)})}getLanguages(){return this.languages}getCurrentLang(){return this.currentLang}getFallbackLang(){return this.fallbackLang}setFallbackLang(e,n=!0){this.fallbackLang=e,n&&this._onFallbackLangChange.next({lang:e,translations:this.translations[e]})}setCurrentLang(e,n=!0){this.currentLang=e,n&&this._onLangChange.next({lang:e,translations:this.translations[e]})}get onTranslationChange(){return this._onTranslationChange.asObservable()}get onLangChange(){return this._onLangChange.asObservable()}get onFallbackLangChange(){return this._onFallbackLangChange.asObservable()}addLanguages(e){this.languages=Array.from(new Set([...this.languages,...e]))}hasTranslationFor(e){return typeof this.translations[e]<"u"}deleteTranslations(e){delete this.translations[e]}getTranslation(e){let n=this.getValue(this.currentLang,e);return n===void 0&&this.fallbackLang!=null&&this.fallbackLang!==this.currentLang&&(n=this.getValue(this.fallbackLang,e)),n}getValue(e,n){return Sr(this.getTranslations(e),n)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})(),Wn=new C("TRANSLATE_CONFIG"),ut=t=>me(t)?t:ue(t);var Xn=(()=>{class t{loadingTranslations;pending=!1;_translationRequests={};lastUseLanguage=null;currentLoader=h(Re);compiler=h(Me);parser=h(Oe);missingTranslationHandler=h(lt);store=h(Kn);extend=!1;get onTranslationChange(){return this.store.onTranslationChange}get onLangChange(){return this.store.onLangChange}get onFallbackLangChange(){return this.store.onFallbackLangChange}get onDefaultLangChange(){return this.store.onFallbackLangChange}constructor(){let e=_({extend:!1,fallbackLang:null},h(Wn,{optional:!0}));e.lang&&this.use(e.lang),e.fallbackLang&&this.setFallbackLang(e.fallbackLang),e.extend&&(this.extend=!0)}setFallbackLang(e){this.getFallbackLang()||this.store.setFallbackLang(e,!1);let n=this.loadOrExtendLanguage(e);return me(n)?(n.pipe(xe(1)).subscribe({next:()=>{this.store.setFallbackLang(e)},error:()=>{}}),n):(this.store.setFallbackLang(e),ue(this.store.getTranslations(e)))}use(e){this.lastUseLanguage=e,this.getCurrentLang()||this.store.setCurrentLang(e,!1);let n=this.loadOrExtendLanguage(e);return me(n)?(n.pipe(xe(1)).subscribe({next:()=>{this.changeLang(e)},error:()=>{}}),n):(this.changeLang(e),ue(this.store.getTranslations(e)))}loadOrExtendLanguage(e){if(!this.store.hasTranslationFor(e)||this.extend)return this._translationRequests[e]=this._translationRequests[e]||this.loadAndCompileTranslations(e),this._translationRequests[e]}changeLang(e){e===this.lastUseLanguage&&this.store.setCurrentLang(e)}getCurrentLang(){return this.store.getCurrentLang()}loadAndCompileTranslations(e){this.pending=!0;let n=this.currentLoader.getTranslation(e).pipe(rn(1),xe(1));return this.loadingTranslations=n.pipe(ce(r=>this.compiler.compileTranslations(r,e)),rn(1),xe(1)),this.loadingTranslations.subscribe({next:r=>{this.store.setTranslations(e,r,this.extend),this.pending=!1},error:r=>{this.pending=!1}}),n}setTranslation(e,n,r=!1){let s=this.compiler.compileTranslations(n,e);this.store.setTranslations(e,s,r||this.extend)}getLangs(){return this.store.getLanguages()}addLangs(e){this.store.addLanguages(e)}getParsedResultForKey(e,n){let r=this.getTextToInterpolate(e);if(ge(r))return this.runInterpolation(r,n);let s=this.missingTranslationHandler.handle(_({key:e,translateService:this},n!==void 0&&{interpolateParams:n}));return s!==void 0?s:e}getFallbackLang(){return this.store.getFallbackLang()}getTextToInterpolate(e){return this.store.getTranslation(e)}runInterpolation(e,n){if(ge(e))return Ee(e)?this.runInterpolationOnArray(e,n):oe(e)?this.runInterpolationOnDict(e,n):this.parser.interpolate(e,n)}runInterpolationOnArray(e,n){return e.map(r=>this.runInterpolation(r,n))}runInterpolationOnDict(e,n){let r={};for(let s in e){let o=this.runInterpolation(e[s],n);o!==void 0&&(r[s]=o)}return r}getParsedResult(e,n){return e instanceof Array?this.getParsedResultForArray(e,n):this.getParsedResultForKey(e,n)}getParsedResultForArray(e,n){let r={},s=!1;for(let a of e)r[a]=this.getParsedResultForKey(a,n),s=s||me(r[a]);if(!s)return r;let o=e.map(a=>ut(r[a]));return ri(o).pipe(ce(a=>{let u={};return a.forEach((l,c)=>{u[e[c]]=l}),u}))}get(e,n){if(!ge(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return this.pending?this.loadingTranslations.pipe(ht(()=>ut(this.getParsedResult(e,n)))):ut(this.getParsedResult(e,n))}getStreamOnTranslationChange(e,n){if(!ge(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return en(tn(()=>this.get(e,n)),this.onTranslationChange.pipe(ke(()=>{let r=this.getParsedResult(e,n);return ut(r)})))}stream(e,n){if(!ge(e)||!e.length)throw new Error('Parameter "key" required');return en(tn(()=>this.get(e,n)),this.onLangChange.pipe(ke(()=>{let r=this.getParsedResult(e,n);return ut(r)})))}instant(e,n){if(!ge(e)||e.length===0)throw new Error('Parameter "key" is required and cannot be empty');let r=this.getParsedResult(e,n);return me(r)?Array.isArray(e)?e.reduce((s,o)=>(s[o]=o,s),{}):e:r}set(e,n,r=this.getCurrentLang()){this.store.setTranslations(r,bo(this.store.getTranslations(r),e,Xt(n)?this.compiler.compile(n,r):this.compiler.compileTranslations(n,r)),!1)}reloadLang(e){return this.resetLang(e),this.loadAndCompileTranslations(e)}resetLang(e){delete this._translationRequests[e],this.store.deleteTranslations(e)}static getBrowserLang(){if(typeof window>"u"||!window.navigator)return;let e=this.getBrowserCultureLang();return e?e.split(/[-_]/)[0]:void 0}static getBrowserCultureLang(){if(!(typeof window>"u"||typeof window.navigator>"u"))return window.navigator.languages?window.navigator.languages[0]:window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}getBrowserLang(){return t.getBrowserLang()}getBrowserCultureLang(){return t.getBrowserCultureLang()}get defaultLang(){return this.getFallbackLang()}get currentLang(){return this.store.getCurrentLang()}get langs(){return this.store.getLanguages()}setDefaultLang(e){return this.setFallbackLang(e)}getDefaultLang(){return this.getFallbackLang()}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})();var zc=(()=>{class t{translate=h(Xn);_ref=h(Ze);value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onFallbackLangChange;updateValue(e,n,r){let s=o=>{this.value=o!==void 0?o:e,this.lastKey=e,this._ref.markForCheck()};if(r){let o=this.translate.getParsedResult(e,n);me(o)?o.subscribe(s):s(o)}this.translate.get(e,n).subscribe(s)}transform(e,...n){if(!e||!e.length)return e;if(Wt(e,this.lastKey)&&Wt(n,this.lastParams))return this.value;let r;if(ge(n[0])&&n.length)if(Xt(n[0])&&n[0].length){let s=n[0].replace(/(')?([a-zA-Z0-9_]+)(')?(\s)?:/g,'"$2":').replace(/:(\s)?(')(.*?)(')/g,':"$3"');try{r=JSON.parse(s)}catch(o){throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${n[0]}`)}}else oe(n[0])&&(r=n[0]);return this.lastKey=e,this.lastParams=n,this.updateValue(e,r),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(s=>{(this.lastKey&&s.lang===this.translate.getCurrentLang()||s.lang===this.translate.getFallbackLang())&&(this.lastKey=null,this.updateValue(e,r,s.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(s=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,r,s.translations))})),this.onFallbackLangChange||(this.onFallbackLangChange=this.translate.onFallbackLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,r))})),this.value}_dispose(){typeof this.onTranslationChange<"u"&&(this.onTranslationChange.unsubscribe(),this.onTranslationChange=void 0),typeof this.onLangChange<"u"&&(this.onLangChange.unsubscribe(),this.onLangChange=void 0),typeof this.onFallbackLangChange<"u"&&(this.onFallbackLangChange.unsubscribe(),this.onFallbackLangChange=void 0)}ngOnDestroy(){this._dispose()}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=fe({name:"translate",type:t,pure:!1});static \u0275prov=f({token:t,factory:t.\u0275fac})}return t})();function To(t){return{provide:Re,useClass:t}}function _o(t){return{provide:Me,useClass:t}}function Ao(t){return{provide:Oe,useClass:t}}function So(t){return{provide:lt,useClass:t}}function Gc(t={}){return Fo(_({compiler:_o(yo),parser:Ao(Eo),loader:To(vo),missingTranslationHandler:So(Do)},t),!0)}function Fo(t={},i){let e=[];t.loader&&e.push(t.loader),t.compiler&&e.push(t.compiler),t.parser&&e.push(t.parser),t.missingTranslationHandler&&e.push(t.missingTranslationHandler),i&&e.push(Kn),(t.useDefaultLang||t.defaultLanguage)&&(console.warn("The `useDefaultLang` and `defaultLanguage` options are deprecated. Please use `fallbackLang` instead."),t.useDefaultLang===!0&&t.defaultLanguage&&(t.fallbackLang=t.defaultLanguage));let n={fallbackLang:t.fallbackLang??null,lang:t.lang,extend:t.extend??!1};return e.push({provide:Wn,useValue:n}),e.push({provide:Xn,useClass:Xn,deps:[Kn,Re,Me,Oe,lt,Wn]}),e}var Fr=["toast-component",""];function Io(t,i){if(t&1){let e=yn();H(0,"button",5),Ge("click",function(){on(e);let r=j();return an(r.remove())}),H(1,"span",6),ee(2,"\xD7"),q()()}}function Mo(t,i){if(t&1&&(mn(0),ee(1),Dn()),t&2){let e=j(2);O(),be("[",e.duplicatesCount+1,"]")}}function Ro(t,i){if(t&1&&(H(0,"div"),ee(1),$e(2,Mo,2,1,"ng-container",4),q()),t&2){let e=j();Q(e.options.titleClass),He("aria-label",e.title),O(),be(" ",e.title," "),O(),P("ngIf",e.duplicatesCount)}}function Oo(t,i){if(t&1&&ze(0,"div",7),t&2){let e=j();Q(e.options.messageClass),P("innerHTML",e.message,fn)}}function Lo(t,i){if(t&1&&(H(0,"div",8),ee(1),q()),t&2){let e=j();Q(e.options.messageClass),He("aria-label",e.message),O(),be(" ",e.message," ")}}function Po(t,i){if(t&1&&(H(0,"div"),ze(1,"div",9),q()),t&2){let e=j();O(),we("width",e.width()+"%")}}function No(t,i){if(t&1){let e=yn();H(0,"button",5),Ge("click",function(){on(e);let r=j();return an(r.remove())}),H(1,"span",6),ee(2,"\xD7"),q()()}}function xo(t,i){if(t&1&&(mn(0),ee(1),Dn()),t&2){let e=j(2);O(),be("[",e.duplicatesCount+1,"]")}}function ko(t,i){if(t&1&&(H(0,"div"),ee(1),$e(2,xo,2,1,"ng-container",4),q()),t&2){let e=j();Q(e.options.titleClass),He("aria-label",e.title),O(),be(" ",e.title," "),O(),P("ngIf",e.duplicatesCount)}}function Bo(t,i){if(t&1&&ze(0,"div",7),t&2){let e=j();Q(e.options.messageClass),P("innerHTML",e.message,fn)}}function jo(t,i){if(t&1&&(H(0,"div",8),ee(1),q()),t&2){let e=j();Q(e.options.messageClass),He("aria-label",e.message),O(),be(" ",e.message," ")}}function Uo(t,i){if(t&1&&(H(0,"div"),ze(1,"div",9),q()),t&2){let e=j();O(),we("width",e.width()+"%")}}var qn=class{_attachedHost;component;viewContainerRef;injector;constructor(i,e){this.component=i,this.injector=e}attach(i,e){return this._attachedHost=i,i.attach(this,e)}detach(){let i=this._attachedHost;if(i)return this._attachedHost=void 0,i.detach()}get isAttached(){return this._attachedHost!=null}setAttachedHost(i){this._attachedHost=i}},Qn=class{_attachedPortal;_disposeFn;attach(i,e){return this._attachedPortal=i,this.attachComponentPortal(i,e)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(i){this._disposeFn=i}},ei=class{_overlayRef;componentInstance;duplicatesCount=0;_afterClosed=new N;_activate=new N;_manualClose=new N;_resetTimeout=new N;_countDuplicate=new N;constructor(i){this._overlayRef=i}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(i,e){i&&this._resetTimeout.next(),e&&this._countDuplicate.next(++this.duplicatesCount)}},Le=class{toastId;config;message;title;toastType;toastRef;_onTap=new N;_onAction=new N;constructor(i,e,n,r,s,o){this.toastId=i,this.config=e,this.message=n,this.title=r,this.toastType=s,this.toastRef=o,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(i){this._onAction.next(i)}onAction(){return this._onAction.asObservable()}},Ir={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,includeTitleDuplicates:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing"},Mr=new C("ToastConfig"),ti=class extends Qn{_hostDomElement;_componentFactoryResolver;_appRef;constructor(i,e,n){super(),this._hostDomElement=i,this._componentFactoryResolver=e,this._appRef=n}attachComponentPortal(i,e){let n=this._componentFactoryResolver.resolveComponentFactory(i.component),r;return r=n.create(i.injector),this._appRef.attachView(r.hostView),this.setDisposeFn(()=>{this._appRef.detachView(r.hostView),r.destroy()}),e?this._hostDomElement.insertBefore(this._getComponentRootNode(r),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(r)),r}_getComponentRootNode(i){return i.hostView.rootNodes[0]}},$o=(()=>{class t{_document=h(I);_containerElement;ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let e=this._document.createElement("div");e.classList.add("overlay-container"),e.setAttribute("aria-live","polite"),this._document.body.appendChild(e),this._containerElement=e}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ni=class{_portalHost;constructor(i){this._portalHost=i}attach(i,e=!0){return this._portalHost.attach(i,e)}detach(){return this._portalHost.detach()}},Vo=(()=>{class t{_overlayContainer=h($o);_componentFactoryResolver=h(wi);_appRef=h(Ve);_document=h(I);_paneElements=new Map;create(e,n){return this._createOverlayRef(this.getPaneElement(e,n))}getPaneElement(e="",n){return this._paneElements.get(n)||this._paneElements.set(n,{}),this._paneElements.get(n)[e]||(this._paneElements.get(n)[e]=this._createPaneElement(e,n)),this._paneElements.get(n)[e]}_createPaneElement(e,n){let r=this._document.createElement("div");return r.id="toast-container",r.classList.add(e),r.classList.add("toast-container"),n?n.getContainerElement().appendChild(r):this._overlayContainer.getContainerElement().appendChild(r),r}_createPortalHost(e){return new ti(e,this._componentFactoryResolver,this._appRef)}_createOverlayRef(e){return new ni(this._createPortalHost(e))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Rr=(()=>{class t{overlay;_injector;sanitizer;ngZone;toastrConfig;currentlyActive=0;toasts=[];overlayContainer;previousToastMessage;index=0;constructor(e,n,r,s,o){this.overlay=n,this._injector=r,this.sanitizer=s,this.ngZone=o,this.toastrConfig=_(_({},e.default),e.config),e.config.iconClasses&&(this.toastrConfig.iconClasses=_(_({},e.default.iconClasses),e.config.iconClasses))}show(e,n,r={},s=""){return this._preBuildNotification(s,e,n,this.applyConfig(r))}success(e,n,r={}){let s=this.toastrConfig.iconClasses.success||"";return this._preBuildNotification(s,e,n,this.applyConfig(r))}error(e,n,r={}){let s=this.toastrConfig.iconClasses.error||"";return this._preBuildNotification(s,e,n,this.applyConfig(r))}info(e,n,r={}){let s=this.toastrConfig.iconClasses.info||"";return this._preBuildNotification(s,e,n,this.applyConfig(r))}warning(e,n,r={}){let s=this.toastrConfig.iconClasses.warning||"";return this._preBuildNotification(s,e,n,this.applyConfig(r))}clear(e){for(let n of this.toasts)if(e!==void 0){if(n.toastId===e){n.toastRef.manualClose();return}}else n.toastRef.manualClose()}remove(e){let n=this._findToast(e);if(!n||(n.activeToast.toastRef.close(),this.toasts.splice(n.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length))return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){let r=this.toasts[this.currentlyActive].toastRef;r.isInactive()||(this.currentlyActive=this.currentlyActive+1,r.activate())}return!0}findDuplicate(e="",n="",r,s){let{includeTitleDuplicates:o}=this.toastrConfig;for(let a of this.toasts){let u=o&&a.title===e;if((!o||u)&&a.message===n)return a.toastRef.onDuplicate(r,s),a}return null}applyConfig(e={}){return _(_({},this.toastrConfig),e)}_findToast(e){for(let n=0;n<this.toasts.length;n++)if(this.toasts[n].toastId===e)return{index:n,activeToast:this.toasts[n]};return null}_preBuildNotification(e,n,r,s){return s.onActivateTick?this.ngZone.run(()=>this._buildNotification(e,n,r,s)):this._buildNotification(e,n,r,s)}_buildNotification(e,n,r,s){if(!s.toastComponent)throw new Error("toastComponent required");let o=this.findDuplicate(r,n,this.toastrConfig.resetTimeoutOnDuplicate&&s.timeOut>0,this.toastrConfig.countDuplicates);if((this.toastrConfig.includeTitleDuplicates&&r||n)&&this.toastrConfig.preventDuplicates&&o!==null)return o;this.previousToastMessage=n;let a=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(a=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));let u=this.overlay.create(s.positionClass,this.overlayContainer);this.index=this.index+1;let l=n;n&&s.enableHtml&&(l=this.sanitizer.sanitize(X.HTML,n));let c=new ei(u),d=new Le(this.index,s,l,r,e,c),D=[{provide:Le,useValue:d}],g=le.create({providers:D,parent:this._injector}),T=new qn(s.toastComponent,g),A=u.attach(T,s.newestOnTop);c.componentInstance=A.instance;let m={toastId:this.index,title:r||"",message:n||"",toastRef:c,onShown:c.afterActivate(),onHidden:c.afterClosed(),onTap:d.onTap(),onAction:d.onAction(),portal:A};return a||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{m.toastRef.activate()})),this.toasts.push(m),m}static \u0275fac=function(n){return new(n||t)(p(Mr),p(Vo),p(le),p(Yn),p(de))};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ho=(()=>{class t{toastrService;toastPackage;ngZone;message;title;options;duplicatesCount;originalTimeout;width=Ue(-1);toastClasses="";state;get _state(){return this.state()}get displayStyle(){if(this.state().value==="inactive")return"none"}timeout;intervalId;hideTime;sub;sub1;sub2;sub3;constructor(e,n,r){this.toastrService=e,this.toastPackage=n,this.ngZone=r,this.message=n.message,this.title=n.title,this.options=n.config,this.originalTimeout=n.config.timeOut,this.toastClasses=`${n.toastType} ${n.config.toastClass}`,this.sub=n.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=n.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=n.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=n.toastRef.countDuplicate().subscribe(s=>{this.duplicatesCount=s}),this.state=Ue({value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}})}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state.update(e=>G(_({},e),{value:"active"})),!(this.options.disableTimeOut===!0||this.options.disableTimeOut==="timeOut")&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=new Date().getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(this.width()===0||this.width()===100||!this.options.timeOut)return;let e=new Date().getTime(),n=this.hideTime-e;this.width.set(n/this.options.timeOut*100),this.options.progressAnimation==="increasing"&&this.width.update(r=>100-r),this.width()<=0&&this.width.set(0),this.width()>=100&&this.width.set(100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state.update(e=>G(_({},e),{value:"active"})),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){this.state().value!=="removed"&&(clearTimeout(this.timeout),this.state.update(e=>G(_({},e),{value:"removed"})),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){this.state().value!=="removed"&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){this.state().value!=="removed"&&this.options.disableTimeOut!=="extendedTimeOut"&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width.set(0))}delayedHideToast(){this.options.disableTimeOut===!0||this.options.disableTimeOut==="extendedTimeOut"||this.options.extendedTimeOut===0||this.state().value==="removed"||(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(e,n){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(e),n)):this.timeout=setTimeout(()=>e(),n)}outsideInterval(e,n){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(e),n)):this.intervalId=setInterval(()=>e(),n)}runInsideAngular(e){this.ngZone?this.ngZone.run(()=>e()):e()}static \u0275fac=function(n){return new(n||t)(S(Rr),S(Le),S(de))};static \u0275cmp=gn({type:t,selectors:[["","toast-component",""]],hostVars:5,hostBindings:function(n,r){n&1&&Ge("click",function(){return r.tapToast()})("mouseenter",function(){return r.stickAround()})("mouseleave",function(){return r.delayedHideToast()}),n&2&&(Ci("@flyInOut",r._state),Q(r.toastClasses),we("display",r.displayStyle))},attrs:Fr,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alert",3,"class","innerHTML",4,"ngIf"],["role","alert",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alert",3,"innerHTML"],["role","alert"],[1,"toast-progress"]],template:function(n,r){n&1&&$e(0,Io,3,0,"button",0)(1,Ro,3,5,"div",1)(2,Oo,1,3,"div",2)(3,Lo,2,4,"div",3)(4,Po,2,2,"div",4),n&2&&(P("ngIf",r.options.closeButton),O(),P("ngIf",r.title),O(),P("ngIf",r.message&&r.options.enableHtml),O(),P("ngIf",r.message&&!r.options.enableHtml),O(),P("ngIf",r.options.progressBar))},dependencies:[Lt],encapsulation:2,data:{animation:[Cn("flyInOut",[We("inactive",Ke({opacity:0})),We("active",Ke({opacity:1})),We("removed",Ke({opacity:0})),Ct("inactive => active",bt("{{ easeTime }}ms {{ easing }}")),Ct("active => removed",bt("{{ easeTime }}ms {{ easing }}"))])]},changeDetection:0})}return t})(),zo=G(_({},Ir),{toastComponent:Ho}),wl=(t={})=>je([{provide:Mr,useValue:{default:zo,config:t}}]);var Go=(()=>{class t{toastrService;toastPackage;appRef;message;title;options;duplicatesCount;originalTimeout;width=Ue(-1);toastClasses="";get displayStyle(){return this.state()==="inactive"?"none":null}state=Ue("inactive");timeout;intervalId;hideTime;sub;sub1;sub2;sub3;constructor(e,n,r){this.toastrService=e,this.toastPackage=n,this.appRef=r,this.message=n.message,this.title=n.title,this.options=n.config,this.originalTimeout=n.config.timeOut,this.toastClasses=`${n.toastType} ${n.config.toastClass}`,this.sub=n.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=n.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=n.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=n.toastRef.countDuplicate().subscribe(s=>{this.duplicatesCount=s})}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state.set("active"),!(this.options.disableTimeOut===!0||this.options.disableTimeOut==="timeOut")&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=new Date().getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(this.width()===0||this.width()===100||!this.options.timeOut)return;let e=new Date().getTime(),n=this.hideTime-e;this.width.set(n/this.options.timeOut*100),this.options.progressAnimation==="increasing"&&this.width.update(r=>100-r),this.width()<=0&&this.width.set(0),this.width()>=100&&this.width.set(100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state.set("active"),this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=new Date().getTime()+(this.originalTimeout||0),this.width.set(-1),this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){this.state()!=="removed"&&(clearTimeout(this.timeout),this.state.set("removed"),this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){this.state()!=="removed"&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){this.state()!=="removed"&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width.set(0))}delayedHideToast(){this.options.disableTimeOut===!0||this.options.disableTimeOut==="extendedTimeOut"||this.options.extendedTimeOut===0||this.state()==="removed"||(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}static \u0275fac=function(n){return new(n||t)(S(Rr),S(Le),S(Ve))};static \u0275cmp=gn({type:t,selectors:[["","toast-component",""]],hostVars:4,hostBindings:function(n,r){n&1&&Ge("click",function(){return r.tapToast()})("mouseenter",function(){return r.stickAround()})("mouseleave",function(){return r.delayedHideToast()}),n&2&&(Q(r.toastClasses),we("display",r.displayStyle))},attrs:Fr,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alert",3,"class","innerHTML",4,"ngIf"],["role","alert",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alert",3,"innerHTML"],["role","alert"],[1,"toast-progress"]],template:function(n,r){n&1&&$e(0,No,3,0,"button",0)(1,ko,3,5,"div",1)(2,Bo,1,3,"div",2)(3,jo,2,4,"div",3)(4,Uo,2,2,"div",4),n&2&&(P("ngIf",r.options.closeButton),O(),P("ngIf",r.title),O(),P("ngIf",r.message&&r.options.enableHtml),O(),P("ngIf",r.message&&!r.options.enableHtml),O(),P("ngIf",r.options.progressBar))},dependencies:[Lt],encapsulation:2,changeDetection:0})}return t})(),bl=G(_({},Ir),{toastComponent:Go});var Or={name:"homebridge-config-ui-x",displayName:"Homebridge UI",type:"module",version:"5.11.2-beta.8",description:"A web based management, configuration and control platform for Homebridge.",author:"oznu <dev@oz.nu>",license:"MIT",funding:[{type:"github",url:"https://github.com/sponsors/oznu"},{type:"paypal",url:"https://paypal.me/oznu"}],repository:{type:"git",url:"git+https://github.com/homebridge/homebridge-config-ui-x.git"},bugs:{url:"https://github.com/homebridge/homebridge-config-ui-x/issues"},keywords:["homebridge-plugin","ui","gui","web","homebridge","homebridge-config-ui-x","ui-x","config-ui-x","homebridge-x","homebridge server","homebridge ui","homebridge-ui","homebridge gui","homebridge-gui","web interface","config ui","management","config editor","linux","macOS","osx","windows","raspberry pi","accessory control","smart home","hb-service"],main:"./dist/index.js",bin:{"hb-service":"dist/bin/hb-service.js"},engines:{node:"^20.19.0 || ^22.12.0 || ^24.0.0",homebridge:"^1.8.0 || ^2.0.0-alpha.0"},scripts:{build:"npm run build:server && npm run build:ui","build:server":"rimraf dist && tsc -p tsconfig.build.json","build:ui":"npm run build --prefix ui",check:"npm run check:server && npm run check:ui","check:server":"npm install && npm outdated","check:ui":"npm install --prefix ui && npm outdated --prefix ui","lang-sync":"tsx scripts/lang-sync.ts",lint:"eslint . --max-warnings=0","lint:fix":"npm run lint -- --fix",prepublishOnly:"npm i --package-lock-only && npm run lint && npm run build",start:"tsx src/main.ts",test:"vitest run","test-coverage":"npm run test -- --coverage","upgrade-install":"./scripts/upgrade-install.sh",watch:'concurrently "npm run watch:ui" "npm run watch:server"',"watch:server":"nodemon","watch:ui":"npm run start --prefix ui"},dependencies:{"@fastify/helmet":"13.0.2","@fastify/multipart":"9.3.0","@fastify/static":"8.3.0","@homebridge/hap-client":"3.1.2","@homebridge/node-pty-prebuilt-multiarch":"0.13.1","@nestjs/axios":"4.0.1","@nestjs/common":"11.1.9","@nestjs/core":"11.1.9","@nestjs/jwt":"11.0.1","@nestjs/passport":"11.0.5","@nestjs/platform-fastify":"11.1.9","@nestjs/platform-socket.io":"11.1.9","@nestjs/swagger":"11.2.3","@nestjs/websockets":"11.1.9",axios:"1.13.2","bash-color":"0.0.4","bonjour-service":"1.3.0","class-transformer":"0.5.1","class-validator":"0.14.3",commander:"14.0.2",dayjs:"1.11.19",fastify:"5.6.2","fs-extra":"11.3.2",jsonwebtoken:"9.0.2",lodash:"4.17.21","node-cache":"5.1.2","node-forge":"1.3.2","node-schedule":"2.1.1",ora:"9.0.0",otplib:"12.0.1","p-limit":"7.2.0",passport:"0.7.0","passport-jwt":"4.0.1","reflect-metadata":"0.2.2",rxjs:"7.8.2",semver:"7.7.3",systeminformation:"5.27.11",tail:"2.2.6",tar:"7.5.2","tcp-port-used":"1.0.2",unzipper:"0.12.3"},devDependencies:{"@antfu/eslint-config":"^6.2.0","@nestjs/testing":"^11.1.9","@prettier/plugin-xml":"^3.4.2","@types/fs-extra":"^11.0.4","@types/lodash":"^4.17.21","@types/node":"^24.10.1","@types/node-forge":"^1.3.14","@types/node-schedule":"^2.1.8","@types/passport-jwt":"^4.0.1","@types/semver":"^7.7.1","@types/tail":"^2.2.3","@types/tcp-port-used":"^1.0.4","@types/unzipper":"^0.10.11","@vitest/coverage-v8":"^4.0.14",concurrently:"^9.2.1","eslint-plugin-format":"^1.0.2","form-data":"^4.0.5",nodemon:"^3.1.11",rimraf:"^6.1.2",tsx:"^4.21.0",typescript:"^5.9.3","unplugin-swc":"^1.5.9",vitest:"^4.0.14"},overrides:{"@homebridge/hap-client":{axios:"1.13.2"}},maintainers:[{email:"bwp91@icloud.com",name:"bwp91"},{email:"dev@oz.nu",name:"oznu"},{email:"northern.man1@gmail.com",name:"northernman"},{email:"mail@anderl-bauer.de",name:"supereg"},{email:"khaos.tian@gmail.com",name:"khaost"},{email:"erik.baauw@xs4all.nl",name:"ebaauw"},{email:"donavan.becker@icloud.com",name:"donavanbecker"},{email:"dustin.greif@gmail.com",name:"dustin.greif"},{email:"nfarina@gmail.com",name:"nfarina"}],scarfSettings:{enabled:!1}};var Pe={serverTarget:Or.version,production:!0,socket:"",api:{base:(()=>{let i=document.querySelector("base")?.getAttribute("href")||"/";return i.endsWith("/")?`${i}api`:`${i}/api`})(),socket:`${window.location.protocol==="http:"?"ws://":"wss://"}${window.location.host}`,origin:window.location.origin},jwt:{tokenKey:"access_token",allowedDomains:[document.location.host],disallowedRoutes:[(()=>{let i=document.querySelector("base")?.getAttribute("href")||"/",e=i.endsWith("/")?`${i}api`:`${i}/api`;return`${window.location.protocol}//${document.location.host}${e}/auth/login`})()]},apiHttpOptions:{},owm:{appid:"fec67b55f7f74deaa28df89ba6a60821"}};var Ol=(()=>{class t{$http=h(Yt);get(e,n){return Te(this.$http.get(`${Pe.api.base}${e}`,n))}post(e,n,r){return Te(this.$http.post(`${Pe.api.base}${e}`,n,r))}put(e,n,r){return Te(this.$http.put(`${Pe.api.base}${e}`,n,r))}patch(e,n,r){return Te(this.$http.patch(`${Pe.api.base}${e}`,n,r))}delete(e,n){return Te(this.$http.delete(`${Pe.api.base}${e}`,n))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();export{te as a,Et as b,Li as c,qi as d,Lt as e,ns as f,is as g,ss as h,os as i,us as j,ls as k,ds as l,tr as m,au as n,uu as o,cu as p,lu as q,jn as r,Bs as s,re as t,se as u,Ie as v,Y as w,Cr as x,Yt as y,ho as z,fo as A,po as B,Pc as C,Yn as D,Xn as E,zc as F,Gc as G,Rr as H,wl as I,Pe as J,Ol as K};
@@ -1 +0,0 @@
1
- import{e}from"./chunk-B4AJQJMI.js";var i=e((n,t)=>{t.exports={"accessories.accessory_info":"Accessory Information","accessories.bridge_ip":"Bridge IP","accessories.bridge_port":"Bridge Port","accessories.button_add_room":"Raum hinzuf\xFCgen","accessories.button_hidden_hide":"Versteckte ausblenden","accessories.button_hidden_show":"Versteckte einblenden","accessories.button_remove":"Aus dem Cache entfernen","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":"Auto","accessories.control.away":"Abwesend","accessories.control.battery_charged":"Charged","accessories.control.battery_charging":"L\xE4dt","accessories.control.battery_low":"Battery Low","accessories.control.battery_notchargeable":"Nicht aufladbar","accessories.control.battery_notcharging":"Geladen","accessories.control.brightness":"Helligkeit","accessories.control.cleaning":"Cleaning","accessories.control.closed":"Geschlossen","accessories.control.closing":"Beim Schlie\xDFen","accessories.control.color_temperature":"Color Temperature","accessories.control.cool":"K\xFChlen","accessories.control.current":"Current","accessories.control.default_room":"Standardraum","accessories.control.dehumidify":"Dehumidify","accessories.control.detected":"Erkannt","accessories.control.direction_control":"Direction Control","accessories.control.drag_here":"Hierher ziehen","accessories.control.filter_level":"Filter Life","accessories.control.heat":"Heizen","accessories.control.home":"Anwesend","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":"Blockiert","accessories.control.lock_auto":"Auto Lock Timer","accessories.control.locked":"Abgeschlossen","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":"Stummschalten","accessories.control.mute_control":"Mute Control","accessories.control.night":"Nacht","accessories.control.no_data":"No Data","accessories.control.not_detected":"Nicht erkannt","accessories.control.not_mute":"An","accessories.control.obstructed":"Obstructed","accessories.control.off":"Aus","accessories.control.on":"An","accessories.control.open":"Offen","accessories.control.opening":"Beim \xD6ffnen","accessories.control.pause":"Pause","accessories.control.paused":"Paused","accessories.control.play":"Play","accessories.control.replace":"Replace","accessories.control.rotation_c_clockwise":"Gegen den Uhrzeigersinn","accessories.control.rotation_clockwise":"Im Uhrzeigersinn","accessories.control.rotation_direction":"Drehrichtung ","accessories.control.rotation_speed":"Umdrehungsgeschwindigkeit","accessories.control.running":"L\xE4uft","accessories.control.saturation":"Saturation","accessories.control.set_duration":"Set Duration","accessories.control.speaker":"Speaker","accessories.control.speaker_volume":"Lautst\xE4rke","accessories.control.state_control":"State Control","accessories.control.stateless":"Stateless","accessories.control.stop":"Stop","accessories.control.stopped":"Gestoppt","accessories.control.target":"Ziel","accessories.control.target_auto":"Auto Target","accessories.control.threshold_auto":"Auto Threshold","accessories.control.triggered":"Ausgel\xF6st","accessories.control.unknown":"Unbekannt","accessories.control.unlocked":"Aufgeschlossen","accessories.control_disabled":"Homebridge-Ger\xE4testeuerung deaktiviert","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":"Individueller Name","accessories.custom_type":"Custom Type","accessories.hide_this_accessory":"Ger\xE4t versteckt","accessories.message_must_use_insecure_mode":"Um deine Ger\xE4te zu steuern, musst du Homebridge im 'Insecure' Mode ausf\xFChren {{ link }}.","accessories.name":"Name","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":"Raumname","accessories.service":"Service","accessories.service_info":"Service Information","accessories.settings_link":"Sie k\xF6nnen die Homebridge-Einstellungen jederzeit \xFCber das Hauptmen\xFC oder durch Klicken auf das Zahnrad","accessories.show_on_dashboard":"Im Dashboard Widget anzeigen","accessories.support.acc_1":"Es kann einige Minuten dauern, bis das Zubeh\xF6r nach einem Neustart der Homebridge oder nach dem Hinzuf\xFCgen auf diesem Bildschirm angezeigt wird. Wenn das Zubeh\xF6r st\xE4ndig fehlt, versuchen Sie, den mDNS-Anbieter in den Einstellungen zu \xE4ndern.","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":"Die R\xE4ume, die du hier erstellst, werden nicht in HomeKit erscheinen. Sie sind nur zum Ordnen der Ger\xE4te innerhalb von Homebridge UI gedacht.","accessories.support.rooms_2":"Um einen bestehenden Raum umzubenennen, erstellen Sie einen neuen Raum mit dem gew\xFCnschten Namen und verschieben Sie das Zubeh\xF6r in den neuen Raum.","accessories.support.rooms_3":"Um einen bestehenden Raum zu l\xF6schen, verschieben Sie das gesamte Zubeh\xF6r in einen anderen Raum und aktualisieren Sie die Seite.","accessories.title_rooms":"Rooms","backup.backup_delete_failed":"Das L\xF6schen des Backups ist fehlgeschlagen. Siehe Logs f\xFCr mehr Informationen.","backup.backup_download_failed":"Backup-Download fehlgeschlagen","backup.backup_exceeds_max_size":"Backup ({{ backupSize }}) \xFCberschreitet maximale Gr\xF6\xDFe der Backup-Datei von {{ maxBackupSizeText }}","backup.backup_help_one":"Lade ein Backup-Archiv deiner gesamten Homebridge-Umgebung herunter. Dies wird den gesamten Inhalt deines Homebridge-Speicherverzeichnisses sichern, welches du sp\xE4ter auf jeder Plattform, die Homebridge UI laufen lassen kann, wiederherstellen kannst.","backup.backup_help_two":"Plugins, welche nicht auf npm gehostet werden oder direkt installierte Plugins von GitHub, werden nicht im Backup enthalten sein bzw. nicht wiederhergestellt werden.","backup.backup_now":"Jetzt Backup erstellen","backup.backup_now_desc":"Erstelle und lade ein aktuelles Backup.","backup.backup_now_save_desc":"Generate an up-to-date backup file in your backup storage directory.","backup.backup_restored":"Backup-Archiv wiederhergestellt","backup.backup_warning":"Backup-Archive enhalten sensitive Informationen und sollten nicht mit anderen geteilt werden.","backup.files_auto":"Stored Backup Files","backup.label_extracting":"Extracting Archive","backup.label_uploading":"L\xE4dt hoch \u2026","backup.load_error":"Config-Backup konnte nicht geladen werden.","backup.restore_failed":"Wiederherstellung fehlgeschlagen","backup.restore_help_one":"Stelle ein Backup-Archiv, welches zuvor mit Homebridge UI erstellt wurde, wieder her. Deine Homebridge-Konfiguration, Ger\xE4te im Cache, HomeKit-Verbindungen und Homebridge UI-Benutzerkonten werden wiederhergestellt. Auch die Homebridge-Plugins, die du installiert hattest, werden \xFCber die npm Registry heruntergeladen.","backup.restore_help_two":"Du musst dich nach der Wiederherstellung mit den Anmeldedaten aus der wiederhergestellten Instanz bei Homebridge UI anmelden.","backup.restore_max_size":"Sie k\xF6nnen ein Backup-Archiv bis zu einer Gr\xF6\xDFe von {{ maxBackupSizeText }} wiederherstellen.","backup.restore_now":"Wiederherstellen","backup.restore_now_desc":"Wiederherstellung aus einem zuvor heruntergeladenen Backup.","backup.restore_warning":"Durch die Wiederherstellung von einem Backup wird die aktuelle Homebridge-Konfiguration unwiderruflich \xFCberschreiben.","backup.scheduled_backup_disabled":"Geplante Backups wurden \xFCber die Konfiguration deaktiviert.","backup.scheduled_backup_time":"Jeden Tag um {{ backupTime }} wird automatisch ein komplettes Backup der Homebridge-Instanz erstellt und f\xFCr {{ dayCount }} Tage gespeichert.","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 & Wiederherstellen","child_bridge.about":"Homebridge erlaubt es dir, die Plattform oder Ger\xE4te deiner Plugins als eine isolierten Child-Bridge zu betreiben {{ link }}. Das kann die allgemeine Reaktionsf\xE4higkeit und Zuverl\xE4ssigkeit von Homebridge verbessern.","child_bridge.bridge_connect":"Verbinde zu HomeKit","child_bridge.bridge_settings":"Bridge Einstellungen","child_bridge.bridges":"Bridges","child_bridge.bridges_paired":"Jede Child-Bridge Plattform oder Ger\xE4t muss separat mit HomeKit gekoppelt werden.","child_bridge.bridges_paired_2":"Wenn Sie jetzt eine Child-Bridge einrichten und sie sp\xE4ter deaktivieren, wird jegliches Zubeh\xF6r auf dieser Bridge entfernt und auf der Haupt-Homebridge-Bridge neu erstellt.","child_bridge.config.accessory":"Zubeh\xF6r","child_bridge.config.debug":"Debug Modus","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":"Hersteller","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":"Verbinde bestehende Bridge","child_bridge.config.platform":"Plattform","child_bridge.config.port":"Port","child_bridge.config.prevent":"Eine Child-Bridge mit verkn\xFCpftem Zubeh\xF6r kann nicht deaktiviert werden.","child_bridge.config.select_existing":"W\xE4hlen Sie eine bestehende Bridge...","child_bridge.config.use":"Child-Bridge verwenden","child_bridge.confirm_delete_1":"Die folgenden Child-Bridges werden entfernt.","child_bridge.confirm_delete_2":"Sie m\xFCssen die gekoppelten Bridges manuell in der Home-App entfernen. Alle Zubeh\xF6rteile werden entfernt und auf der Haupt-Homebridge-Bridge neu erstellt.","child_bridge.must_configure_plugin":"Du musst dieses Plugin konfigurieren, bevor du dessen Bridge Einstellungen verwalten kannst.","child_bridge.reset_accessories":"Zubeh\xF6r zur\xFCcksetzen","child_bridge.restart":"Child-Bridge neustarten","child_bridge.restart_plural":"Child-Bridge neustarten","child_bridge.return_to_pair":"Zu dieser Seite zur\xFCckkehren, nachdem Homebridge neu gestartet wurde, um den Kopplungs-QR-Code zu sehen.","child_bridge.setup":"Child-Bridges einrichten","child_bridge.start":"Child-Bridge starten","child_bridge.start_plural":"Child-Bridges starten","child_bridge.stop":"Child-Bridge stoppen","child_bridge.stop_plural":"Child-Bridges stoppen","common.labels.beta":"beta","common.labels.disabled":"Deaktiviert","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":"Sind Sie sicher, dass Sie trotzdem weitermachen wollen?","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":"accessories muss ein Array sein []","config.config_bridge_missing":"Bridge-Einstellungen fehlen","config.config_invalid_json":"Konfiguration enth\xE4lt ung\xFCltiges JSON","config.config_platform_must_be_array":"platforms muss ein Array sein []","config.config_saved":"Configuration Saved","config.config_username_error":"Der Bridge-Benutzername muss aus 6 Doppelpunkt-getrennten Hexadezimalzeichen (A-F 0-9) bestehen.","config.error_blocks_objects":"Alle {{ type }} Bl\xF6cke m\xFCssen Objekte sein.","config.error_blocks_type":"Alle {{ type }} Bl\xF6cke m\xFCssen {{ type }} Attribute verwenden.","config.error_string_array":"Jedes Element in {{ key }} Array muss ein String sein.","config.error_string_type":"Das {{ type }} Atteribut muss ein String sein.","config.failed_to_save_config":"Speichern der Konfiguration fehlgeschlagen","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":"Klicke auf Speichern, um zu best\xE4tigen, dass dieses Backup wiederhergestellt werden soll.","config.restore.copy_to_editor":"In den Editor kopieren","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":"Alle Backups gel\xF6scht","config.restore.view_inline":"Inline View","config.restore.view_side_by_side":"Side-By-Side View","config.title_backup_loaded":"Backup geladen","form.button_allow":"Allow","form.button_back":"Zur\xFCck","form.button_cancel":"Abbrechen","form.button_close":"Schlie\xDFen","form.button_continue":"Weiter","form.button_delete":"L\xF6schen","form.button_delete_all":"Delete All","form.button_disable":"Deaktivieren","form.button_download":"Download","form.button_edit":"Bearbeiten","form.button_enable":"Aktivieren","form.button_lock":"Sperren","form.button_more_info":"Mehr Informationen","form.button_remove":"Entfernen","form.button_reset":"Zur\xFCcksetzen","form.button_restore":"Wiederherstellen","form.button_save":"Speichern","form.button_show":"Anzeigen","form.button_unlock":"Freischalten","form.button_unpair":"Entkoppeln","form.label.changes_kept":"Beachte, dass bestehende Auswahlen/\xC4nderungen beim Umschalten zwischen Elementen erhalten bleiben.","form.label_invalid":"Konfigurations\xFCberpr\xFCfung fehlgeschlagen - \xC4nderungen k\xF6nnen dennoch gespeichert werden.","form.label_invalid_strict":"Konfigurations\xFCberpr\xFCfung fehlgeschlagen - bitte \xFCberpr\xFCfen Sie alles vor dem Speichern.","form.label_valid":"Konfigurations\xFCberpr\xFCfung bestanden.","form.optional":"Optional","form.search":"Search...","form.select.auto":"Automatisch (Browsereinstellungen verwenden)","login.invalid_code":"The code entered is incorrect or has expired","login.invalid_credentials":"Ung\xFCltiger Benutzername und / oder Passwort","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":"Falsches Passwort","login.label_2fa_code":"Zwei-Faktor-Authentifizierungs-Code","logs.download.error":"Download der Log-Datei fehlgeschlagen.","logs.download_warning":"Homebridge-Log-Dateien k\xF6nnen pers\xF6nliche Informationen, Passw\xF6rter or Zugrifftokens beinhalten. Bitte sieh dir die Log-Datei an und entferne alle sensitiven Informationen, bevor du sie mit anderen teilst.","logs.log_file_truncated":"Log-Datei abgeschnitten.","logs.placeholder_search_logs":"Search logs (min. 3 characters)...","logs.title_download_log_file":"Log-Datei herunterladen","logs.title_truncate_log_file":"Log-Datei abscheiden","logs.truncate.error":"K\xFCrzen der Log-Datei fehlgeschlagen.","logs.truncate_log_warning":"Durch diese Aktion werden deine bestehenden Homebridge-Log-Dateien unwiderruflich gel\xF6scht. Bist du sicher, dass du fortfahren willst?","matter_bridge.config.use":"Enable Matter","menu.config_json_editor":"JSON Config","menu.docker.restart_container":"Container neustarten","menu.docker.startup_script":"Start-Skript","menu.docker.terminal":"Konsole","menu.hbrestart.confirm_hb":"Homebridge neustarten","menu.hbrestart.confirm_ui":"HB Service & UI neustarten","menu.hbrestart.title":"Homebridge neustarten","menu.label_accessories":"Ger\xE4te","menu.label_plugins":"Plugins","menu.label_settings":"Einstellungen","menu.label_status":"Status","menu.linux.label_logs":"Logs","menu.linux.label_restart_server":"Server neustarten","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":"Server herunterfahren","menu.linux.label_terminal":"Konsole","menu.reload":"Neu laden","menu.restart.title":"Energieoptionen","menu.settings.title":"Einstellungen","menu.tooltip_logout":"Ausloggen","menu.tooltip_restart":"Neustart","menu.tooltip_user_accounts":"Benutzerkonten","menu.tooltip_view_logs":"Log anzeigen","platform.docker.container_restarted":"Docker-Container wurde neu gestartet","platform.docker.must_use_hashbang":"Skript muss #!/bin/sh hashbang verwenden.","platform.docker.restart_required":"Du musst diesen Docker-Container neu starten, damit die \xC4nderungen wirksam werden.","platform.docker.run_with_restart":"Stelle sicher, dass du den Docker-Container mit {{ command }} ausf\xFChrst","platform.docker.script_help":"Dieses Skript wird jedes Mal ausgef\xFChrt, wenn der Docker-Container gestartet wird. Du kannst damit zus\xE4tzliche Pakete installieren, die deine Plugins ben\xF6tigen, wie zB ffmpeg oder libpcap-dev.","platform.docker.script_saved":"Startskript gespeichert","platform.docker.server_long_time":"Der Neustart des Servers dauert sehr lange. M\xF6glicherweise musst du den Docker-Container manuell aufrufen.","platform.docker.title_restarting":"Docker-Container neu starten","platform.linux.long_time":"Der Neustart des Servers dauert l\xE4nger als gew\xF6hnlich. M\xF6glicherweise muss der Homebridge-Dienst manuell gestartet werden.","platform.linux.restart":"Bitte warten, diese Seite wird automatisch umgeleitet, wenn Homebridge wieder online ist.","platform.linux.restarting_server":"Neustart des Servers","platform.linux.server_restart_error":"Beim Senden des Neustartbefehls an den Server ist ein Fehler aufgetreten","platform.linux.server_restarted":"Server wurde neu gestartet","platform.linux.server_taking_long_time":"Der Server braucht lange, um wieder online zu gehen","platform.linux.server_will_power_down":"Der Server wird in K\xFCrze heruntergefahren.","platform.linux.shutting_down_server":"Herunterfahren des Servers","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 }} wurde installiert, aber der Serverdienst l\xE4uft immer noch mit v{{ serverVersion }}.","platform.version.service_restart_required":"Dienst-Neustart erforderlich","plugins.bridge.action_error":"Fehler bei {{ action }} der 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":"Einrichten","plugins.button_settings":"Einstellungen","plugins.button_uninstall":"Deinstallieren","plugins.button_update":"Aktualisieren","plugins.compat.hb_node_too_low":"{{ packageName }} v{{ latestVersion }} ben\xF6tigt Node.js v{{ minVersion }} oder neuer. Du nutzt derzeit Node.js {{ installedVersion }}.","plugins.compat.hb_too_low":"Das {{ pluginName }} Plugin ben\xF6tigt Homebridge v{{ minVersion }} oder neuer. Du nutzt derzeit Homebridge v{{ installedVersion }}.","plugins.compat.node_first":"Bitte update Node.js, bevor du {{ packageName }} updatest.","plugins.compat.node_link":"Wie man Node.js aktualisiert","plugins.compat.node_too_low":"Das {{ pluginName }}-Plugin empfiehlt Homebridge v{{ minVersion }} oder neuer. Du nutzt derzeit Homebridge v{{ installedVersion }}.","plugins.compat.title":"Kompatibilit\xE4tspr\xFCfung","plugins.config.load_error":"Fehler beim laden der Plugin-Konfiguration.","plugins.config.must_be_array":"Plugin-Konfiguration muss ein array sein.","plugins.config.must_be_array_objects":"Plugin-Konfigurationmsus ein Array aus Objekten sein.","plugins.config.must_be_object":"Config-Bl\xF6cke m\xFCssen Objekte seib.","plugins.config.name_property":'Accessory muss ein g\xFCltiges "name" Attribut besitzen',"plugins.config.please_fix":"Bitte beheben Sie Validierungsfehler, bevor Sie einen neuen Block hinzuf\xFCgen.","plugins.disable.error":"Das Plugin konnte nicht deaktiviert werden.","plugins.donate.message_1":"Da immer mehr Benutzer ihre Plugins \xFCber die Homebridge-UI installieren, ist es weniger wahrscheinlich, dass sie die GitHub-Seite des Projekts besuchen, wo normalerweise die M\xF6glichkeiten zur Unterst\xFCtzung eines Entwicklers angezeigt werden.","plugins.donate.message_2":"Das Hinzuf\xFCgen von Spendenlinks direkt in der Homebridge-UI stellt sicher, dass die Benutzer wissen, wie sie die Homebridge-Entwickler unterst\xFCtzen k\xF6nnen, wenn sie dies w\xFCnschen.","plugins.donate.tile_donate_to":"An {{ author }} spenden","plugins.enable.error":"Das Plugin konnte nicht aktiviert werden.","plugins.manage.all_versions":"Alle Versionen","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 erfolgreich neugestartet.","plugins.manage.child_bridge_restart_failed":"Plugin-Neustart fehlgeschlagen. Bitte starte Homebridge manuell neu.","plugins.manage.confirm_disable":"Bist du sicher, dass du {{ pluginName }} deaktivieren m\xF6chtest?","plugins.manage.confirm_disable_accessory_1":"Alle Accessories, die von diesem Plugin angezeigt werden, werden aus Homebridge UI-Accessories und aus HomeKit entfernt.","plugins.manage.confirm_disable_accessory_2":"Wenn Sie das Plugin wieder aktivieren, wird das Zubeh\xF6r wieder in der Homebridge-UI und in HomeKit angezeigt. Die Accessories verlieren ihre HomeKit-Daten (wie zugeh\xF6rige Szenen und Automatisierungen).","plugins.manage.confirm_disable_platform_1":"Alle Accessories, die von diesem Plugin angezeigt werden, werden aus Homebridge UI-Accessorie der Homebridge-UI entfernt, bleiben aber in HomeKit mit dem Vermerk \u201EKeine Antwort\u201C erhalten.","plugins.manage.confirm_disable_platform_2":"Wenn Sie das Plugin wieder aktivieren, wird das Zubeh\xF6r wieder in der Homebridge-UI angezeigt und kann wieder \xFCber HomeKit gesteuert werden. Das Accessory verliert nicht seine HomeKit-Daten (wie zugeh\xF6rige Szenen und Automatisierungen).","plugins.manage.confirm_disable_setting":"Your setting for {{ setting }} is currently {{ value }}, therefore:","plugins.manage.confirm_enable":"Bist du sicher, dass du {{ pluginName }} aktivieren m\xF6chtest?","plugins.manage.disable":"Deaktivieren","plugins.manage.enable":"Aktivieren","plugins.manage.github_support":"Sie k\xF6nnen Ihre Unterst\xFCtzung zeigen, indem Sie dieses Plugin mit einem {{ iconStar }} (oder dem Release ein {{ iconThumbsUp }}) auf GitHub geben!","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":"Installieren","plugins.manage.installed":"Installiert","plugins.manage.json_config":"JSON Konfiguration","plugins.manage.manage_version":"Version verwalten","plugins.manage.manual_update_command":"Um das Paket zu aktualisieren, \xF6ffnen Sie eine Node.js-Eingabeaufforderung als Administrator und f\xFChren Sie die folgenden Befehle aus:","plugins.manage.more_info":"Weitere Informationen zu scoped {{ scopedLink }} und verifizierten {{ 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":"Online-Updates werden unter Windows nicht unterst\xFCtzt. Du musst Homebridge UI manuell aktualisieren, nachdem du den Homebridge-Dienst beendet hast","plugins.manage.plugin_logs":"Plugin Logs","plugins.manage.scoped.error":"Es ist ein Fehler aufgetreten. Sie k\xF6nnen die Logs unten herunterladen.","plugins.manage.scoped.info_1":"Homebridge scoped Plugins haben Namen, die mit {{ prefix }} beginnen.","plugins.manage.scoped.info_2":"Weitere Informationen \xFCber scoped Plugins und warum man wechseln sollte, finden Sie auf der Wiki-Seite {{ link }}.","plugins.manage.scoped.process":"Dieser Vorgang hat keine Auswirkungen auf Ihr Homebridge/HomeKit-Zubeh\xF6r. Sie k\xF6nnen den Vorgang nicht mehr abbrechen, sobald er begonnen hat. Er wird:","plugins.manage.scoped.switch":"Umschalten auf scoped Plugin","plugins.manage.scoped.windows":'Online-Updates werden unter Windows noch unterst\xFCtzt. Du solltest <span class="fw-bold">nicht</span> Homebridge neustarten bis beide Schritte abgeschlossen sind.',"plugins.manage.scoped_message":"Scoped Plugins verbessern die langfristige Zuverl\xE4ssigkeit und gew\xE4hrleisten eine konsistente Wartung, indem sie die zentrale \xDCberwachung durch das Homebridge-Team mit der kontinuierlichen Beteiligung des urspr\xFCnglichen Erstellers kombinieren.","plugins.manage.scoped_subtitle":"Dieses Plugin ist scoped und verifiziert.","plugins.manage.select_version":"Zu installierende Version ausw\xE4hlen","plugins.manage.uninstall":"Deinstallieren","plugins.manage.uninstalled":"Entfernt","plugins.manage.unverified_message":"Nicht verifizierte Homebridge-Plugins bedeuten, dass sie nicht vom Homebridge-Projektteam gepr\xFCft wurden. Eine fehlende \xDCberpr\xFCfung bedeutet nicht zwangsl\xE4ufig, dass sie ineffizient sind oder Sicherheitsbedenken bestehen. Die Autoren k\xF6nnen sich aus verschiedenen Gr\xFCnden daf\xFCr entschieden haben, keine \xDCberpr\xFCfung vorzunehmen.","plugins.manage.unverified_subtitle":"Dieses Plugin ist nicht verifiziert.","plugins.manage.update":"Aktualisieren","plugins.manage.updated":"aktualisiert","plugins.manage.verified_message":"Homebridge-Plugins, die als verifiziert gekennzeichnet sind, wurden vom Homebridge-Projektteam \xFCberpr\xFCft, um sicherzustellen, dass sie verschiedene Anforderungen erf\xFCllen, die Best Practices und eine problemlose Benutzererfahrung f\xF6rdern.","plugins.manage.verified_subtitle":"Dieses Plugin ist verifiziert.","plugins.placeholder_search_first":"Verwenden Sie die Suchleiste oben, um Ihr erstes Plugin zu finden","plugins.placeholder_search_none":"Keine Ergebnisse gefunden","plugins.placeholder_search_plugin":"Suche nach installierbaren Plugins \u2026","plugins.settings.custom.download_dump_file":"Download Dump File","plugins.settings.custom.homebridge-gsh.label_account_linked":"Konto verbunden","plugins.settings.custom.homebridge-gsh.label_link_account":"Konto verbinden","plugins.settings.custom.homebridge-gsh.message_about":"Das Homebridge Google Smart Home-Plugin erlaubt es dir, deine Homebridge-Ger\xE4te durch einen Google Home-f\xE4higen smarten Lautsprecher oder durch die Google Home Mobile-App zu steuern.","plugins.settings.custom.homebridge-gsh.message_account_link_required":"Um diese Funktionalit\xE4t zu aktivieren, musst du dich mit deinem Google- or GitHub-Konto anmelden. Stelle sicher, dass du dasselbe Konto verwendest, wenn du die Homebridge-Aktion in der Google Home Mobile-App hinzuf\xFCgst.","plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required":"Homebridge muss neugestartet werden, damit die \xC4nderungen wirksam werden.","plugins.settings.deconz.dump_no_exist":"Homebridge deCONZ Dump-Datei existiert noch nicht.","plugins.settings.hue.dump_no_exist":"Homebridge Hue Dump-Datei existiert noch nicht.","plugins.settings.label_open_config_editor":"Konfigurations-Editor \xF6ffnen","plugins.settings.message_consult_documentation":"Bitte lese die Plugin Dokumentation, um das Plugin korrekt zu konfigurieren.","plugins.settings.message_manual_config_required":"Dieses Plugin muss mithilfe des Homebridge UI Config Editors manuell konfiguriert werden.","plugins.settings.plugin_config_saved":"Plugin-Konfiguration gespeichert","plugins.settings.restart_required":"Starte Homebridge neu, um die \xC4nderungen zu \xFCbernehmen.","plugins.stats":"Plugin Statistics","plugins.stats_note":"Plugins cannot be installed from this page, this is provided just for interest.","plugins.status_installed":"Installiert","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":"Plugin-Konfigurationsschema konnte nicht geladen werden.","plugins.toast_failed_to_load_plugins":"Fehler beim Laden der Plugins","plugins.toast_failed_to_search_plugins":"Failed to search plugins","plugins.uninstall_remove_child_bridge":"Plugin-Child-Bridge entfernen?","plugins.uninstall_remove_child_bridges":"Entferne {{ count }} Plugin-Child-Bridges?","plugins.uninstall_remove_config_required":"Stelle sicher, dass wenn du dieses Plugin dauerhaft entfernst, jede Konfiguration f\xFCr dieses Plugin in der config.json entfernt hast, bevor du Homebridge neu startest.","plugins.uninstall_remove_confirmation":"Bist du sicher, dass du {{ pluginName }} entfernen m\xF6chtest?","plugins.uninstall_remove_plugin_config":"Plugin Konfiguration entfernen?","plugins.uninstall_warn_1":"Wenn Sie eine Child-Bridge entfernen, werden alle von dieser Bridge ver\xF6ffentlichten Zubeh\xF6rteile aus dem Homebridge-Cache entfernt.","plugins.uninstall_warn_2":"Das Zubeh\xF6r wird in HomeKit veraltet sein (es wird keine Reaktion angezeigt). Um es zu entfernen, m\xFCssen Sie diese Bridge manuell aus HomeKit entfernen. Sie k\xF6nnen dies in der Home-App im Abschnitt 'Home-Einstellungen' tun.","reset.accessory_all.desc":"Entfernen Sie alle Zubeh\xF6re aus dem Cache.","reset.accessory_all.list_1":"Wenn Sie auf die Schaltfl\xE4che 'Entfernen' unten klicken, wird Homebridge neu gestartet und alle Ihre vorhandenen Zubeh\xF6re wird von Homebridge und HomeKit entfernt.","reset.accessory_all.list_2":"Alle zugeh\xF6rigen HomeKit-Daten werden ebenfalls entfernt, einschlie\xDFlich Raumzuordnungen, Szenen und Automatisierungen, die dieses Zubeh\xF6r verwendet.","reset.accessory_all.list_3":"Nach dem Neustart von Homebridge f\xFCgen Ihre Plugins Zubeh\xF6re erneut hinzu, als ob das Plugin zum ersten Mal installiert worden w\xE4re.","reset.accessory_all.title":"Entferne alle Zubeh\xF6re","reset.accessory_ind.bridge":"Bridge","reset.accessory_ind.desc":"Entfernen Sie einzelnes Zubeh\xF6r aus dem Cache.","reset.accessory_ind.done":"Pr\xFCfen Sie nach dem Entfernen von Zubeh\xF6r aus dem Cache die Log-Datei auf Best\xE4tigung und/oder Fehler.","reset.accessory_ind.fail":"Das Zubeh\xF6r konnte nicht aus dem Cache entfernt werden, pr\xFCfen Sie die Log-Datei auf Fehler.","reset.accessory_ind.list_1":"Einige Plugins r\xE4umen nicht richtig hinter sich auf. Wenn Sie veraltetes Zubeh\xF6r haben, k\xF6nnen Sie es aus dem Cache entfernen. Diese Funktion kann auch verwendet werden, um ein vorhandenes Zubeh\xF6r in HomeKit zur\xFCckzusetzen.","reset.accessory_ind.list_2":"Das Zubeh\xF6r wird aus Homebridge und HomeKit entfernt, zusammen mit den zugeh\xF6rigen Raumzuordnungen, Szenen und Automatisierungen.","reset.accessory_ind.list_3":"Nach dem Neustart von Homebridge f\xFCgen Ihre Plugins entferntes Zubeh\xF6r wieder hinzu, als ob das Plugin zum ersten Mal installiert w\xFCrde.","reset.accessory_ind.title":"Individuelles Zubeh\xF6r entfernen","reset.accessory_ind.unknown":"Unbekannter Name","reset.accessory_reset":"Homebridge-Ger\xE4te zur\xFCcksetzen","reset.action_is_irreversible":"Diese Aktion ist nicht umkehrbar. Bitte pr\xFCfe sie sorgf\xE4ltig, bevor du fortf\xE4hrst.","reset.bridge_accessories.desc":"Entfernen aller von einer Child-Bridge ver\xF6ffentlichten Zubeh\xF6rteile aus dem Cache.","reset.bridge_accessories.empty":"Sie haben keine Bridges, von denen Sie Zubeh\xF6r entfernen k\xF6nnen.","reset.bridge_accessories.list_1":"Diese Funktion kann verwendet werden, um das vorhandene Zubeh\xF6r eines Plugins in HomeKit zur\xFCckzusetzen. Sie werden aus Homebridge und HomeKit entfernt und dann vom Plugin als neues Zubeh\xF6r wieder hinzugef\xFCgt.","reset.bridge_accessories.list_2":"Die Pairing-Details und der Status der Child-Bridge bleiben unver\xE4ndert.","reset.bridge_accessories.title":"Entferne Bridge Zubeh\xF6re","reset.bridge_all.desc":"Alle Bridges zur\xFCcksetzen, indem sie aus dem Cache entfernt werden. Dazu geh\xF6ren die Homebridge-Bridge, untergeordnete Bridges und Bridges f\xFCr externes Zubeh\xF6r.","reset.bridge_all.list_1":"Dadurch werden die Homebridge-Bridge, alle untergeordneten Bridges und Bridges f\xFCr externes Zubeh\xF6r von HomeKit zur\xFCckgesetzt.","reset.bridge_all.list_2":"Beachten Sie, dass Ihr Zubeh\xF6r in HomeKit weiterhin ohne Reaktion angezeigt werden, bis die Bridges manuell aus HomeKit entfernt werden. Sie k\xF6nnen dies in der Home-App erledigen, indem Sie Home-Einstellungen \u2192 Home Hubs & Bridges \u2192 {Bridge} \u2192 Bridge aus Home entfernen ausw\xE4hlen.","reset.bridge_all.list_3":"Alle Homebridge-zu-HomeKit-Accessories, -Szenen und -Automatisierungen m\xFCssen nach der Aufhebung des Pairings neu konfiguriert werden.","reset.bridge_all.list_4":"Der Pin f\xFCr die Kopplung Ihrer Homebridge-Bridge mit HomeKit wird ge\xE4ndert. Sie k\xF6nnen die neuen Werte in Ihrer Homebridge-Konfiguration nach der Aufhebung des Pairings sehen.","reset.bridge_all.title":"Alle Bridges zur\xFCcksetzen","reset.bridge_ind.desc":"Eine einzelne Bridge zur\xFCcksetzen, indem sie aus dem Cache entfernt wird. Dies kann eine Child-Bridge oder eine Bridge f\xFCr ein externes Zubeh\xF6r wie eine Kamera oder einen Fernseher sein.","reset.bridge_ind.desc_child_active":"Homebridge hat festgestellt, dass diese Child-Bridges verwendet werden. Sobald sie entfernt werden, wird ihr Zubeh\xF6r aus dem Homebridge-Cache entfernt. Wenn sie mit HomeKit gekoppelt sind, wird das Zubeh\xF6r der Bridge als 'Keine Antwort' angezeigt und die Bridge muss \xFCber die Home-App entfernt werden. Die Kopplungsinformationen der Child-Bridge werden ge\xE4ndert. Sobald Homebridge neu gestartet wurde, erstellt das Plugin die neue untergeordnete Bridge und das Zubeh\xF6r. Die neue Bridge muss erneut mit HomeKit gepaart werden. Sie k\xF6nnen die neuen Kopplungsinformationen auf der Seite mit den Bridge-Einstellungen des entsprechenden Plugins anzeigen.","reset.bridge_ind.desc_child_stale":"Homebridge hat festgestellt, dass diese Bridges nicht verwendet werden, aber \xFCberpr\xFCfen Sie diese dennoch vor dem L\xF6schen. Sie k\xF6nnten \xDCberbleibsel von zuvor deinstallierten Plugins sein","reset.bridge_ind.desc_non_child":"Homebridge hat festgestellt, dass diese Bridges verwendet werden. Sie k\xF6nnen sie aus dem Cache entfernen, aber sie werden wahrscheinlich vom Plugin wieder hinzugef\xFCgt, wenn Homebridge neu gestartet wird. Die Kopplungsinformationen bleiben unver\xE4ndert.","reset.bridge_ind.done":"Bridge zur\xFCckgesetzt, \xFCberpr\xFCfe die Log-Datei auf Best\xE4tigung und/oder Fehler.","reset.bridge_ind.fail":"Bridge zur\xFCcksetzen fehlgeschlagen, \xFCberpr\xFCfe die Log-Datei auf Fehler.","reset.bridge_ind.head_child_active":"Aktive Child-Bridges","reset.bridge_ind.head_child_stale":"Ung\xFCltige Child-Bridges","reset.bridge_ind.head_non_child":"Keine Child-Bridges","reset.bridge_ind.title":"Einzelne Bridges zur\xFCcksetzen","reset.bridges.desc":"Wenn Sie Probleme haben, Homebridge, ein externes Zubeh\xF6r oder eine Child-Bridge mit HomeKit zu koppeln, m\xFCssen Sie m\xF6glicherweise die Kopplung mit HomeKit aufheben, um neu zu beginnen.","reset.bridges.empty":"Sie haben keine Bridges zum Entkoppeln von HomeKit.","reset.bridges.title":"Bridges","reset.clear_cache_single.list_3":"Wenn Sie ein Zubeh\xF6r aus dem Cache entfernen, werden alle zugeh\xF6rigen HomeKit-Daten entfernt. Dazu geh\xF6ren alle zugeh\xF6rigen Szenen und Automatisierungen, die dieses Zubeh\xF6r verwendet.","reset.delete_success":"Homebridge wird neugestartet und Ger\xE4te-Cache wird entfernt.","reset.error_message":"Der Ger\xE4te-Cache konnte nicht geladen werden. Sie haben m\xF6glicherweise keine Ger\xE4te im Cache.","reset.failed_to_reset":"Homebridge konnte nicht zur\xFCckgesetzt werden. Siehe Logs.","reset.force_restart_hb_help_text":"Benutze diese Aktion, damit der hb-service Dienst einen vollst\xE4ndigen Neustart erzwingt.","reset.no_accessories":"Du hast kein zwischengespeichertes Zubeh\xF6r zum Entfernen.","restart.child_bridge_list":"Bitte starten Sie diese Child-Bridges neu, damit die \xC4nderungen wirksam werden:","restart.child_bridges":"Bitte starte die Child-Bridge des Plugins neu, damit die \xC4nderungen wirksam werden.","restart.label_restart_command_executed":"Neustart angesto\xDFen","restart.please_wait_while_server_restarts":"Bitte warte, du wirst automatisch umgeleitet, wenn der Server wieder online ist.","restart.server_is_taking_long_time_to_restart":"Der Neustart des Servers dauert l\xE4nger als gew\xF6hnlich. M\xF6glicherweise muss der Homebridge-Dienst manuell gestartet werden.","restart.service_ready":"Homebridge Server bereit","restart.title_restart":"Homebridge neustarten","restart.toast_server_restart_error":"Beim Senden des Neustartbefehls an den Server ist ein Fehler aufgetreten","restart.toast_server_restart_timeout":"Der Server braucht lange, um wieder online zu gehen","restart.toast_server_restarted":"Server wurde neu gestartet","restart.ui_online":"Homebridge UI Online","rpi.throttled.currently_message":"Dieser Raspberry Pi meldet, dass er derzeit unter zu niedriger Spannung steht; bitte \xFCberpr\xFCfen Sie, ob er an eine geeignete Stromversorgung angeschlossen ist. Eine Unterspannung kann zur Instabilit\xE4t des Systems und zur Besch\xE4digung der SD-Karte f\xFChren.","rpi.throttled.previously_message":"Dieser Raspberry Pi hat seit dem letzten Neustart ein Unterspannungsereignis gemeldet; bitte \xFCberpr\xFCfen Sie, ob er an eine geeignete Stromversorgung angeschlossen ist.","rpi.throttled.undervoltage_title":"Unterspannung","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 verwaltet Zubeh\xF6re im Cache, damit es nicht bei jedem Neustart von Homebridge entfernt und neu zu HomeKit hinzugef\xFCgt wird. Manchmal kann dieser Cache nicht mehr mit den tats\xE4chlichen Zubeh\xF6r in Homebridge synchronisiert werden.","settings.changes.saved":"Ihre \xC4nderungen wurden gespeichert und erfordern einen Neustart, um wirksam zu werden..","settings.datetime.incorrect":"Das Datum und die Uhrzeit auf Ihrem Homebridge-Server scheinen falsch zu sein. Dies kann zu unerwarteten Problemen f\xFChren. Klicken Sie hier f\xFCr weitere Informationen.","settings.display.blue":"Blau","settings.display.bluegrey":"Blau-Grau","settings.display.brown":"Braun","settings.display.cyan":"Cyan","settings.display.dark":"Dunkel","settings.display.deep_purple":"Dunkles Lila","settings.display.green":"Gr\xFCn","settings.display.grey":"Grau","settings.display.indigo":"Indigo","settings.display.lang":"Sprache","settings.display.light":"Hell","settings.display.lighting_mode":"Helligkeitsmodus","settings.display.menu_default":"Standard","settings.display.menu_freeze":"Geschlossen halten (auf dem Desktop)","settings.display.menu_mode":"Men\xFC-Modus","settings.display.orange":"Orange","settings.display.pink":"Rosa","settings.display.purple":"Lila","settings.display.red":"Rot","settings.display.show_betas":"Prefer Beta Versions","settings.display.teal":"T\xFCrkis","settings.display.temp_units":"Temperatureinheiten","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":"Anzeige","settings.general.title_general":"Allgemein","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":"mDNS Advertiser","settings.mdns_advertiser_exp":"experimentell","settings.mdns_advertiser_help":"Wenn du Probleme hast, dich mit Homebridge zu verbinden, versuche einen der alternativen mDNS Advertiser zu verwenden.","settings.mdns_advertiser_not_connected":"Nicht verbunden","settings.mdns_advertiser_rec":"empfohlen","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":"Wenn keine Netzwerkschnittstellen ausgew\xE4hlt sind, versucht Homebridge automatisch zu bestimmen, welche Schnittstellen angezeigt werden sollen.","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":"Die Portnummer, unter der die Homebridge-Bridge ausgef\xFChrt werden soll. Diese muss zwischen 1025 und 65533 liegen und sollte nicht mit dem Port der Homebridge-Benutzeroberfl\xE4che \xFCbereinstimmen.","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":"Die Portnummer, \xFCber die die Homebridge UI ausgef\xFChrt werden soll.","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":"Netzwerk","settings.network.title_network_interfaces":"Netzwerkschnittstellen","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":"Zur\xFCcksetzen der Bridge fehlgeschlagen.","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":"Bei einigen Plugins m\xFCssen Sie die Umgebungsvariable DEBUG setzen {{ link }}, um die Protokollierung auf Debug-Ebene zu aktivieren.","settings.service.node_tooltip":"Node.js-Laufzeitoptionen f\xFCr den Homebridge-Prozess. Dies sollte leer bleiben, wenn Sie nicht wissen, was Sie tun.","settings.startup.debug":"Homebridge 'Debug' Mode","settings.startup.debug_desc_v1":"Aktivieren Sie diese Option, wenn Homebridge ausf\xFChrlichere Logs ausgeben soll. Diese Einstellung gilt sowohl f\xFCr die Haupt-Homebridge als auch f\xFCr alle Child-Bridges. Einige Plugins k\xF6nnen sich auch an diese Einstellung halten und ausf\xFChrlichere Logs ausgeben.","settings.startup.debug_desc_v2":"Aktivieren Sie diese Option, wenn Homebridge ausf\xFChrlichere Logs ausgeben soll. Diese Einstellung gilt f\xFCr die Main-Homebridge-Bridge. Die Einstellung f\xFCr Child-Bridges finden Sie in der Child-Bridge-Konfiguration auf der Plugins-Seite. Einige Plugins k\xF6nnen sich auch an diese Einstellung halten und ausf\xFChrlichere Logs ausgeben.","settings.startup.insecure":"Enable UI Accessory Control","settings.startup.insecure_desc":"Um Ihre Zubeh\xF6r \xFCber die Homebridge-Benutzeroberfl\xE4che zu steuern, m\xFCssen Sie Homebridge im 'Insecure' Mode ausf\xFChren.","settings.startup.keep_accessories":"Behalte Zubeh\xF6re von nicht installierten Plugins","settings.startup.keep_accessories_desc":"Wenn diese Option aktiviert ist, verbleiben Zubeh\xF6re von Plattform-Plugins im Cache, auch wenn das Plugin deinstalliert wird. Dies kann n\xFCtzlich sein, wenn Sie planen, das Plugin sp\xE4ter erneut zu installieren.","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":"Startoptionen","settings.unpair_bridge.load_error":"Gepairte Bridge konnten nicht geladen werden.","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":"Los geht's","setup.create_account":"Konto erstellen","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":"Willkommen bei Homebridge",setup_wizard_complete:"Restore Complete!",setup_wizard_complete_title:"Herzlichen Gl\xFCckwunsch!",setup_wizard_completed:"Der Einrichtungsvorgang ist abgeschlossen und du kannst Homebridge jetzt verwenden.",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:"Wiederherstellen aus Backup",setup_wizard_restoring:"Restoring Backup...",setup_wizard_starting:"Starting Homebridge...","status.code_scan":"Scannen, um es zu HomeKit hinzuzuf\xFCgen","status.cpu.load":"Auslastung","status.cpu.temp":"Temperatur","status.cpu.title_cpu":"Prozessor","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":"Nach Updates suchen \u2026","status.homebridge.up_to_date":"Auf dem neuesten Stand","status.memory.label_available":"Frei","status.memory.label_total":"Gesamt","status.memory.title_memory":"Arbeitsspeicher","status.network.received_per_second":"Empfangen","status.network.sent_per_second":"Gesendet","status.network.title_network":"Netzwerkaktivit\xE4ten","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":"Gestoppt","status.services.label_running":"L\xE4uft","status.services.updates":"Update Information","status.uptime.title_uptime":"Betriebszeit","status.widget.accessories.choose_accessories":"W\xE4hle die Ger\xE4te, die in diesem Widget vom Ger\xE4te-Tab angezeigt werden sollen.","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":"Pairing-Code","status.widget.add.matter_pairing_code":"Matter Pairing Code","status.widget.bridge.restart_error":"Neustart der Child-Bridge fehlgeschlagen.","status.widget.clock":"Uhr","status.widget.clock_dateformat":"Datumsformat","status.widget.clock_timeformat":"Zeitformat","status.widget.expand_docker":"Expand Docker Container Information","status.widget.font_size":"Schriftgr\xF6\xDFe","status.widget.font_weight":"Schriftst\xE4rke","status.widget.hide_node_info":"Hide Node.js Updates","status.widget.hide_npm":"Show npm Version","status.widget.hide_on_mobile":"In kompakter Anzeige verbergen (mobile Bildschirme)","status.widget.homebridge_logs":"Homebridge Log","status.widget.info":"System Informationen","status.widget.info.arch":"Arch.","status.widget.info.config_path":"Konfigurationspfad","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":"Hostname","status.widget.info.ipv4":"IPv4","status.widget.info.ipv6":"IPv6","status.widget.info.no":"Nein","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":"Nicht unterst\xFCtzt","status.widget.info.node_unsupp_message":"Sie verwenden eine Version von Node.js, die nicht offiziell von Homebridge unterst\xFCtzt wird. Sie sollten den Wechsel zu einer unterst\xFCtzten Version in Betracht ziehen.","status.widget.info.node_update_message":"F\xFCr die Ausf\xFChrung von Homebridge muss Node.js auf Ihrem System installiert sein. Ab und an m\xFCssen Sie die Node.js-Laufzeitumgebung aktualisieren, um die Unterst\xFCtzung f\xFCr neue Funktionen zu aktivieren. Homebridge (und verifizierte Plugins) unterst\xFCtzen alle aktuellen Active und Maintenance LTS-Versionen von 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 Pfad","status.widget.info.os":"OS","status.widget.info.plugin_path":"Pluginpfad","status.widget.info.service_user":"Benutzer","status.widget.info.storage_path":"Speicherpfad","status.widget.info.synology_package":"Synology-Paket","status.widget.info.timezone":"Zeitzone","status.widget.info.yes":"Ja","status.widget.network.history_items":"History Items","status.widget.network.items":"items","status.widget.network.network_interface":"Netzwerkschnittstelle","status.widget.network.none_selected":"Standard verwenden","status.widget.network.refresh_interval":"Aktualisierungsintervall","status.widget.network.seconds":"Sekunden","status.widget.qr_paired":"Gekoppelte","status.widget.qr_unpaired":"Nicht Gekoppelte","status.widget.show_hide":"Widgets anzeigen/verstecken","status.widget.title_manage_widget":"Widget verwalten","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":"Prozess","status.widget.uptime.label_server":"Server","status.widget.weather.label_config_required_help":"Bitte w\xE4hle deine Stadt in den Widget-Einstellungen.","status.widget.weather.label_search_for_your_city":"Suche nach deiner Stadt:","status.widget.weather.title_weather":"Wetter","support.dev.api":"Homebridge API","support.dev.api_hap":"HAP-NodeJS API","support.dev.api_hap_sub":"HAP-NodeJS ist eine Implementierung des HomeKit Accessory Server, wie er im HomeKit Accessory Protocol (HAP) spezifiziert ist, das von Apple als Teil des HomeKit Frameworks definiert wurde.","support.dev.api_sub":"Homebridge ist ein leichtgewichtiger Node.js-Server, den Sie in Ihrem Heimnetzwerk ausf\xFChren k\xF6nnen, um das HomeKit Accessory Protocol (HAP) zu emulieren.","support.dev.item_swagger":"Swagger Docs","support.dev.item_swagger_sub":"Die Homebridge REST API erm\xF6glicht Ihnen die Interaktion mit Ihrem Homebridge-Server \xFCber HTTP-Anfragen.","support.dev.template":"Plugin Template Repo","support.dev.template_sub":"Eine Vorlage f\xFCr ein Homebridge-Plugin, die als Basis f\xFCr die Entwicklung eines eigenen Plugins verwendet werden kann.","support.dev.title":"Entwickler","support.dev.verified":"Verified By Homebridge","support.dev.verified_sub":"Das Verified By Homebridge Programm erm\xF6glicht es Plugin-Entwicklern, ihre Plugins vom Homebridge-Projektteam pr\xFCfen und best\xE4tigen zu lassen.","support.links.discord":"Discord-Server","support.links.discord_sub":"Treten Sie dem Homebridge Discord-Server bei, um dich mit anderen Benutzern und Entwicklern auszutauschen.","support.links.documentation":"Dokumentation","support.links.documentation_sub":"Die Homebridge-Dokumentation bietet eine F\xFClle von Informationen zu den ersten Schritten mit Homebridge und zur L\xF6sung g\xE4ngiger Probleme.","support.links.issue":"Ein Problem melden","support.links.issue_sub":"Wenn Sie ein Problem mit Homebridge haben, \xF6ffnen Sie bitte ein neues Issue auf GitHub. Dies sollte nicht f\xFCr Probleme mit bestimmten Plugins verwendet werden.","support.links.reddit":"Reddit Community","support.links.reddit_sub":"Der Homebridge-Subreddit ist ein gro\xDFartiger Ort, um Ihre Homebridge-Einrichtung zu teilen und um Hilfe zu bitten.","support.links.title":"N\xFCtzliche Links","support.title":"Support","toast.no_auth":"Nur Administratoren k\xF6nnen diese Seite aufrufen.","toast.title_error":"Fehler","toast.title_success":"Erfolgreich durchgef\xFChrt","toast.title_warning":"Warnung","users.button_add_user":"Benutzer hinzuf\xFCgen","users.label_admin_user":"Admin-Benutzer?","users.label_confirm_password":"Best\xE4tige das Passwort","users.label_full_name":"Vollst\xE4ndiger Name","users.label_new_password":"Neues Passwort","users.label_password":"Passwort","users.label_username":"Nutzername","users.setup_2fa":"2FA-Einstellungen","users.setup_2fa_activate_error":"Beim Aktivieren der Zwei-Faktor-Authentifizierung ist ein Fehler aufgetreten","users.setup_2fa_cannot_setup_2fa":"2FA kann nicht eingerichtet werden","users.setup_2fa_disable":"2FA deaktivieren","users.setup_2fa_disable_current_password":"Gib dein aktuelles Passwort ein, um die Zwei-Faktor-Authentifizierung zu deaktivieren:","users.setup_2fa_disable_success":"Zwei-Faktor-Authentifizierung wurde deaktiviert.","users.setup_2fa_enable":"2FA aktivieren","users.setup_2fa_enable_error":"Beim Einrichten von 2FA ist ein Fehler aufgetreten","users.setup_2fa_enabled_success":"Zwei-Faktor-Authentifizierung wurde aktiviert.","users.setup_2fa_enter_code":"Gib den Code deiner Authentifikator-App ein:","users.setup_2fa_scan_qr_code":"Scanne den unten stehenden QR-Code mit deiner Authentifikator-App:","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":"Deine Server-Uhr weicht um {{ timeDiffError }} ms ab. Der erlaubte Maximalwert betr\xE4gt +/-5000 ms.","users.setup_2fa_warning":"Die Zwei-Faktor-Authentifizierung verlangt, dass dein Homebridge-Server eine pr\xE4zise Datum- und Zeitangabe zum Anmelden aufweist. Sollte dein Server die aktuelle Zeit nicht pr\xE4zise angeben k\xF6nnen, solltest du 2FA nicht aktivieren. Andernfalls riskierst du, dass du dich nicht mehr in Homebridge UI anmelden kannst.","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":"Benutzer hinzuf\xFCgen","users.title_edit_user":"Benutzer bearbeiten","users.title_users":"Benutzer","users.toast_added_new_user":"Benutzer hinzugef\xFCgt","users.toast_failed_to_add_user":"Fehler beim Hinzuf\xFCgen des Benutzers","users.toast_failed_to_delete_user":"Fehler beim L\xF6schen des Benutzers","users.toast_updated_user":"Benutzer aktualisiert","users.toast_user_deleted":"Benutzer gel\xF6scht"}});export{i as a};
@@ -1 +0,0 @@
1
- import{X as C}from"./chunk-HUTYOGRH.js";import{e as u,g as c}from"./chunk-B4AJQJMI.js";var E=u((V,l)=>{(function(b,a){b(function(){"use strict";var e={};e.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",Pixel:"; \\bPixel\\b",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6",Dell:"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",Samsung:"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332",Asus:"Asus.*Galaxy|PadFone.*Mobile",Xiaomi:"^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G",NokiaLumia:"Lumia [0-9]{3,4}",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo (3DS|Switch)",Amoi:"Amoi",INQ:"INQ",OnePlus:"ONEPLUS",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",GoogleTablet:"Android.*Pixel C",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",NokiaLumiaTablet:"Lumia 2520",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z930|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android [0-9.]+; [a-z-]+; \\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9|TECNO DP8D",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",VerizonTablet:"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",KocasoTablet:"\\b(TB-1207)\\b",HisenseTablet:"\\b(F5281|E2371)\\b",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",iPadOS:"CPU OS 13",SailfishOS:"Sailfish",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+",Skyfire:"Skyfire",Edge:"\\bEdgiOS\\b|Mobile Safari/[.0-9]* Edge",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari",WeChat:"\\bMicroMessenger\\b",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",PaleMoon:"Android.*PaleMoon|Mobile.*PaleMoon"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:["Firefox/[VER]","FxiOS/[VER]"],Fennec:"Fennec/[VER]",Edge:"Edge/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]",UCBrowser:["UCWEB[VER]","UC.*Browser/[VER]"],MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",SamsungBrowser:"SamsungBrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",PaleMoon:"PaleMoon/[VER]",SailfishBrowser:"SailfishBrowser/[VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",Goanna:"Goanna/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",Sailfish:"Sailfish [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}},e.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var G=Object.prototype.hasOwnProperty,B;e.FALLBACK_PHONE="UnknownPhone",e.FALLBACK_TABLET="UnknownTablet",e.FALLBACK_MOBILE="UnknownMobile",B="isArray"in Array?Array.isArray:function(T){return Object.prototype.toString.call(T)==="[object Array]"};function s(T,S){return T!=null&&S!=null&&T.toLowerCase()===S.toLowerCase()}function H(T,S){var i,o,P=T.length;if(!P||!S)return!1;for(i=S.toLowerCase(),o=0;o<P;++o)if(i===T[o].toLowerCase())return!0;return!1}function t(T){for(var S in T)G.call(T,S)&&(T[S]=new RegExp(T[S],"i"))}function D(T){return(T||"").substr(0,500)}(function(){var S,i,o,P,n,r,M=e.mobileDetectRules;for(S in M.props)if(G.call(M.props,S)){for(i=M.props[S],B(i)||(i=[i]),n=i.length,P=0;P<n;++P)o=i[P],r=o.indexOf("[VER]"),r>=0&&(o=o.substring(0,r)+"([\\w._\\+]+)"+o.substring(r+5)),i[P]=new RegExp(o,"i");M.props[S]=i}t(M.oss),t(M.phones),t(M.tablets),t(M.uas),t(M.utils),M.oss0={WindowsPhoneOS:M.oss.WindowsPhoneOS,WindowsMobileOS:M.oss.WindowsMobileOS}})(),e.findMatch=function(T,S){for(var i in T)if(G.call(T,i)&&T[i].test(S))return i;return null},e.findMatches=function(T,S){var i=[];for(var o in T)G.call(T,o)&&T[o].test(S)&&i.push(o);return i},e.getVersionStr=function(T,S){var i=e.mobileDetectRules.props,o,P,n,r;if(G.call(i,T)){for(o=i[T],n=o.length,P=0;P<n;++P)if(r=o[P].exec(S),r!==null)return r[1]}return null},e.getVersion=function(T,S){var i=e.getVersionStr(T,S);return i?e.prepareVersionNo(i):NaN},e.prepareVersionNo=function(T){var S;return S=T.split(/[a-z._ \/\-]/i),S.length===1&&(T=S[0]),S.length>1&&(T=S[0]+".",S.shift(),T+=S.join("")),Number(T)},e.isMobileFallback=function(T){return e.detectMobileBrowsers.fullPattern.test(T)||e.detectMobileBrowsers.shortPattern.test(T.substr(0,4))},e.isTabletFallback=function(T){return e.detectMobileBrowsers.tabletPattern.test(T)},e.prepareDetectionCache=function(T,S,i){if(T.mobile===a){var o,P,n;if(P=e.findMatch(e.mobileDetectRules.tablets,S),P){T.mobile=T.tablet=P,T.phone=null;return}if(o=e.findMatch(e.mobileDetectRules.phones,S),o){T.mobile=T.phone=o,T.tablet=null;return}e.isMobileFallback(S)?(n=A.isPhoneSized(i),n===a?(T.mobile=e.FALLBACK_MOBILE,T.tablet=T.phone=null):n?(T.mobile=T.phone=e.FALLBACK_PHONE,T.tablet=null):(T.mobile=T.tablet=e.FALLBACK_TABLET,T.phone=null)):e.isTabletFallback(S)?(T.mobile=T.tablet=e.FALLBACK_TABLET,T.phone=null):T.mobile=T.tablet=T.phone=null}},e.mobileGrade=function(T){var S=T.mobile()!==null;return T.os("iOS")&&T.version("iPad")>=4.3||T.os("iOS")&&T.version("iPhone")>=3.1||T.os("iOS")&&T.version("iPod")>=3.1||T.version("Android")>2.1&&T.is("Webkit")||T.version("Windows Phone OS")>=7||T.is("BlackBerry")&&T.version("BlackBerry")>=6||T.match("Playbook.*Tablet")||T.version("webOS")>=1.4&&T.match("Palm|Pre|Pixi")||T.match("hp.*TouchPad")||T.is("Firefox")&&T.version("Firefox")>=12||T.is("Chrome")&&T.is("AndroidOS")&&T.version("Android")>=4||T.is("Skyfire")&&T.version("Skyfire")>=4.1&&T.is("AndroidOS")&&T.version("Android")>=2.3||T.is("Opera")&&T.version("Opera Mobi")>11&&T.is("AndroidOS")||T.is("MeeGoOS")||T.is("Tizen")||T.is("Dolfin")&&T.version("Bada")>=2||(T.is("UC Browser")||T.is("Dolfin"))&&T.version("Android")>=2.3||T.match("Kindle Fire")||T.is("Kindle")&&T.version("Kindle")>=3||T.is("AndroidOS")&&T.is("NookTablet")||T.version("Chrome")>=11&&!S||T.version("Safari")>=5&&!S||T.version("Firefox")>=4&&!S||T.version("MSIE")>=7&&!S||T.version("Opera")>=10&&!S?"A":T.os("iOS")&&T.version("iPad")<4.3||T.os("iOS")&&T.version("iPhone")<3.1||T.os("iOS")&&T.version("iPod")<3.1||T.is("Blackberry")&&T.version("BlackBerry")>=5&&T.version("BlackBerry")<6||T.version("Opera Mini")>=5&&T.version("Opera Mini")<=6.5&&(T.version("Android")>=2.3||T.is("iOS"))||T.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||T.version("Opera Mobi")>=11&&T.is("SymbianOS")?"B":(T.version("BlackBerry")<5||T.match("MSIEMobile|Windows CE.*Mobile")||T.version("Windows Mobile")<=5.2,"C")},e.detectOS=function(T){return e.findMatch(e.mobileDetectRules.oss0,T)||e.findMatch(e.mobileDetectRules.oss,T)},e.getDeviceSmallerSide=function(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height};function A(T,S){this.ua=D(T),this._cache={},this.maxPhoneWidth=S||600}return A.prototype={constructor:A,mobile:function(){return e.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.mobile},phone:function(){return e.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.phone},tablet:function(){return e.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.tablet},userAgent:function(){return this._cache.userAgent===a&&(this._cache.userAgent=e.findMatch(e.mobileDetectRules.uas,this.ua)),this._cache.userAgent},userAgents:function(){return this._cache.userAgents===a&&(this._cache.userAgents=e.findMatches(e.mobileDetectRules.uas,this.ua)),this._cache.userAgents},os:function(){return this._cache.os===a&&(this._cache.os=e.detectOS(this.ua)),this._cache.os},version:function(T){return e.getVersion(T,this.ua)},versionStr:function(T){return e.getVersionStr(T,this.ua)},is:function(T){return H(this.userAgents(),T)||s(T,this.os())||s(T,this.phone())||s(T,this.tablet())||H(e.findMatches(e.mobileDetectRules.utils,this.ua),T)},match:function(T){return T instanceof RegExp||(T=new RegExp(T,"i")),T.test(this.ua)},isPhoneSized:function(T){return A.isPhoneSized(T||this.maxPhoneWidth)},mobileGrade:function(){return this._cache.grade===a&&(this._cache.grade=e.mobileGrade(this)),this._cache.grade}},typeof window<"u"&&window.screen?A.isPhoneSized=function(T){return T<0?a:e.getDeviceSmallerSide()<=T}:A.isPhoneSized=function(){},A._impl=e,A.version="1.4.5 2021-03-13",A})})((function(b){if(typeof l<"u"&&l.exports)return function(a){l.exports=a()};if(typeof define=="function"&&define.amd)return define;if(typeof window<"u")return function(a){window.MobileDetect=a()};throw new Error("unknown environment")})())});var d=c(E(),1);function I(b){b.preventDefault()}var N=(()=>{class b{detect;isTouchMoveLocked=!1;constructor(){this.detect=new d.default(window.navigator.userAgent)}disableTouchMove(){this.isTouchMoveLocked||(document.body.addEventListener("touchmove",I,{passive:!1}),this.isTouchMoveLocked=!0)}enableTouchMove(){document.body.removeEventListener("touchmove",I),this.isTouchMoveLocked=!1}static \u0275fac=function(G){return new(G||b)};static \u0275prov=C({token:b,factory:b.\u0275fac,providedIn:"root"})}return b})();export{N as a};