From 534c8d6ab246770f199a5813ce7aaee88631bac4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 8 Nov 2026 23:51:11 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=B6=20Sync=202026-11-08=2023:51:11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- btfout/vmlinux-btf_6.6.144-r1_x86_64.ipk | Bin 0 -> 1539979 bytes clashoo/Makefile | 4 +- gately/Makefile | 4 +- honk/Makefile | 6 +- istoreenhance/Makefile | 4 +- ks-cli/Makefile | 4 +- luci-app-istoreenhance/Makefile | 4 +- luci-app-kaiplus/Makefile | 4 +- luci-app-open-box/Makefile | 4 +- luci-app-passwall/Makefile | 2 +- .../view/passwall/app_update/app_version.htm | 19 +- luci-app-passwall2/Makefile | 2 +- .../view/passwall2/app_update/app_version.htm | 15 +- luci-app-ssr-plus/Makefile | 2 +- .../luasrc/controller/shadowsocksr.lua | 3 +- .../luasrc/view/shadowsocksr/component.htm | 6 - luci-app-ssr-plus/po/templates/ssr-plus.pot | 10 - luci-app-ssr-plus/po/zh_Hans/ssr-plus.po | 11 - .../share/shadowsocksr/update_components.sh | 271 +- luci-app-tailscale-ng/.gitignore | 1 + luci-app-tailscale-ng/Makefile | 7 +- luci-app-tailscale-ng/README.md | 5 + luci-app-tailscale-ng/docs/local-build.md | 65 + .../po/templates/luci-app-tailscale-ng.pot | 314 + .../po/zh_Hans/luci-app-tailscale-ng.po | 8 +- .../scripts/build-packages.sh | 114 + luci-app-trafficctl/Makefile | 4 +- .../root/usr/local/bin/trafficctl-device.sh | 5 +- .../root/usr/local/bin/trafficctl-fw.sh | 48 +- .../root/usr/local/bin/trafficctl-metrics.sh | 6 + .../root/usr/local/bin/trafficctl-portfw.sh | 8 +- .../local/bin/trafficctl-ratelimit-stats.sh | 13 +- .../root/usr/local/bin/trafficctl-summary.sh | 2 +- .../root/usr/local/bin/trafficctl-telegram.sh | 43 +- luci-app-vantage/Makefile | 4 +- .../luci-static/resources/vantage/app.css | 13 +- .../luci-static/resources/vantage/backdrop.js | 6 +- .../resources/view/vantage/overview.js | 54 +- luci-app-vantage/po/templates/vantage.pot | 878 +- luci-app-vantage/po/zh_Hans/vantage.po | 878 +- luci-base/po/templates/base.pot | 15 + luci-base/po/zh_Hans/base.po | 15 + luci-mod-fluentdashboard/Makefile | 10 +- .../resources/view/fluentdashboard/index.css | 397 +- .../resources/view/fluentdashboard/index.js | 9107 ++++++++++++++++- .../root/etc/config/fluentdashboard | 3 + .../rpcd/acl.d/luci-mod-fluentdashboard.json | 9 + .../usr/share/rpcd/ucode/luci.fluentdashboard | 120 + .../resources/view/network/wireless.js | 30 +- .../share/rpcd/acl.d/luci-mod-network.json | 1 - .../resources/view/system/flash.js | 58 +- .../usr/share/rpcd/acl.d/luci-mod-system.json | 8 +- luci-theme-design/Makefile | 2 +- .../htdocs/luci-static/design/css/style.css | 438 + .../htdocs/luci-static/design/js/style.js | 82 +- .../ucode/template/themes/design/header.ut | 2 +- luci-theme-fluent/Makefile | 4 +- .../htdocs/luci-static/fluent/css/fluent.css | 151 +- .../luci-static/resources/menu-fluent.js | 356 +- .../resources/view/fluent-config.js | 631 +- .../root/usr/libexec/fluent/update | 125 + .../root/usr/libexec/rpcd/luci.fluent | 330 +- .../share/rpcd/acl.d/luci-theme-fluent.json | 8 +- luci-theme-vantage/Makefile | 4 +- .../luci-static/resources/menu-vantage.js | 146 +- .../htdocs/luci-static/vantage/login.js | 5 + .../htdocs/luci-static/vantage/vantage.css | 57 +- .../po/templates/vantage-theme.pot | 229 +- .../po/zh_Hans/vantage-theme.po | 229 +- .../root/etc/config/vantage_theme | 1 + .../ucode/template/themes/vantage/header.ut | 9 +- .../ucode/template/themes/vantage/sysauth.ut | 13 +- wwand/Makefile | 6 +- 73 files changed, 12872 insertions(+), 2580 deletions(-) create mode 100644 btfout/vmlinux-btf_6.6.144-r1_x86_64.ipk create mode 100644 luci-app-tailscale-ng/docs/local-build.md create mode 100644 luci-app-tailscale-ng/po/templates/luci-app-tailscale-ng.pot create mode 100755 luci-app-tailscale-ng/scripts/build-packages.sh create mode 100644 luci-mod-fluentdashboard/root/etc/config/fluentdashboard create mode 100644 luci-mod-fluentdashboard/root/usr/share/rpcd/ucode/luci.fluentdashboard create mode 100755 luci-theme-fluent/root/usr/libexec/fluent/update diff --git a/btfout/vmlinux-btf_6.6.144-r1_x86_64.ipk b/btfout/vmlinux-btf_6.6.144-r1_x86_64.ipk new file mode 100644 index 0000000000000000000000000000000000000000..7a697d79b8bc3eaaca5db5b7628768206cafa84f GIT binary patch literal 1539979 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%0D-9%zB9$22|Ks;tpkH?6c_2<&J5ut{l}^ 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%0DvA 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

YT@{_d(C#*-~!`{5J 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%0AN8 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≷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�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%0DFt+v^scwS5dGS-Q%dN& zTmM~9Uv`G=t2*M(XM=lFkA@J3QsSKO4WN0}@X|i>w>P$QnZKndHh%R}gmydZQ-;6( zhYabSDeM>G5a~xvYma7&y~m0_7yS}g5xiV6k*3asEvRYLU@@sv%*bZ!-Vgf?&Fd+b z44YFC;CnPo{Lzk+d9)_Y9ahF9avv?CG=Bp*l+)2 z6Kmf!nhWX{)5wv)9~zwOxz@aUsYSxQ&S8fd$yfGuEF}l_M+1}8M$D6QJgET+rfP0` z@!k&GRGojnOBM>L=g;Y02uTAzE|dqOq&#_pKSsvq{dXya3|wBefi4E_H$I#P4*1#{ zkv8rN#6P(k=R@?5oS@EBUn}ywbf+Y*<{|s&Y)h>p6Y32L-H1!xUGsUX*4IYFhd21- zbl<=me$UdNpOKSW>qqF zNI7Jf)NJfI+mZ=ZZuh{;DJ)*Ljhuze?%U~oAA>yQvdlaXFAVC6EFa!(E8|GUnb<@A zdO_aGiZtMb7c@UseH8{XqB*3&xz~&@p7uKv7uNSd<6Q;S;LI5Z8%+B8u;o-=h4*TK zro8o{CZMv*vEawbGeRYjZX#BNK5A#{jl)%3o!FXda@hAbs-?g1Unn%)@P?U$^Ie|= z;;_a=uVxtdKV7J1peAEzS%jH`8&dZokQ6abmN2qKhd(YXF$ROGqzB@zo)X!SOVqJcglKMN+a>uhaoD7$<_$gK$Uf?t?3a_pRL^Q>zEHA z{Npu^7DRJ}Z8k=w=`BH=wQi~(StZ}2o)oCmiD_;sP9?E)V(1Bty-YNz9N6!@X*5O) z4)A2Eyr|tEOI&*k`*$a7urN9ne^S2+s{pDY6qsiUI7uv#OD2HEHWHg%b9w1Z{T(0dMky5WL?#{$a>ar z{zZ1{)RbZZ`X(nizwqsw?oWanvT2)yZ#!^tQiV(+Ca#61ksBRE#dp8%1-0DYwwGgX zfPAYNxJjrup|{R5y3Q%b`c>ZK)Z{7?mcqFUeE2I7t}xIxZndE)Fc4O>&eEpWIx`u- za=^XI`^Ns2Hgq#yZ4LPu%6Ag@lodHV;PdQF~WeyKj=b25Z3k^E8 z{W1KYbL8A3K2RNjE%US%%9EX`65D^51n~)X0;bvDzSmlL>(Xs0?p`~49cNW2kP~c&k`gz! zJvF?uZRxsUSm!Z{9XXB@D6k!at;%vdS}LIxXHY0^Qe$! z&5d~h*JTe|k1jwv?7ws-mK>c>tJHq>>AqXN8o#Z5u2|stdH3n{Kl$&e6j=#I{Sh-a z5g}E+0;!1ABrLp*A8)0!tDA5t#$naluKvGI zIIbx2>zFa`ic3l8%bLcsms4q6zj4$wz$h61O+tKfk=D?rtO5LGln29FXtw{|N|j@0 zch%23XHje0PSg9lPJf&X5rLDE6a;~R{JGhaVRGlBD2-atrb@6;W?A#xUa zBs)J zh_=;Ae&>T$ZV|{gSXbN`2e2gWP?cGbxxDq+0RfoLj1^_r*&){i^a2h$1?-PVkl99ZE8BsRS(q)Q*U)Jz%M6?B@ zLNn~k&LM}7dW+ddGfsZDGua&`_2RHJNL{%0A3m6s_71v1^Jv!!E`h#F4Z-WCWF+68 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

>Qfb0F>e2*(N;(VTRERdYznc9!4fu4mlHJTA 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

ngNKepAw zYC#|QRp(7QflI3YR92cQA;H`7*DtvW3u2d}z*3d1#(0Gl+K>mU+9L@J2wYTiI!B1i zhDmSXC1g}YuLh6Pz>WkqlV*ewLW_O4Nw>mS6tPLCJ#>rr1?rYKUFydVT};HNT3UhB zh~5;MwEwgf#nhiPMqYBIk$tSas@ba|Bf02U=kr^!H!vZN76i0HMs zg!~ZkuJ^#P=n8>pmHD506;^H1(^4SE0%+w;ok9Cg4@!=HUBVuWFfOrU`9~Ow=tCs` zxk2>`7WU5pLA}8ug4l@OiV<*Xq*9vFb>fQ|s6$DF1P@jvS)az?k|rxLYC|fdPVHaM z%)42N9D3cj2t?Wlx(%6sjzH*YD|U%rqNwaKYVu?0{`pmN$mWt9jiw+G3w+h5%7aBm zQDY){1^>C{U-RNd!1M?|`r|d{-j}}x(APHSjx8`R9jb#TKs0lSZAdw7cY0_nx_&2Y zlLiopN>Iz9RGxHJP(L2bo=S^*3Z>hD*8w}OnvV$u_>@vb)zdMJSNLvNPa;su0%&zq zSBr&OLe4GM_;Cu_tD9~Vjz^ouk6X`rFUm@RA50Hz6oU3B5=<1yR^UOvRq~_nMU#@0 zUzfJPC=(#FFmke!J&R;GO8-1}WVf>%M}25CjMwlVyP#8R>~1Dc@eA$2Zp0R!E=`p_ z+SDQAOszxM{BmPHRy_(F2b#M3-<+fcY+iGS`P0`vA2Bb8{%&5y%DF zkXy@`j=@Qm+wN3NRFroIDtOD?aa6R-ff5X zzuV^z^x*a8s^U!i2p_H2IqzN_QXXZ^D0~Nwu?d$v8vjkntC=d`{x6@+cjp)M?CX@0 z>PJ`L$KzthN1N>rkAlBt500oABM7(Gj4fP76|BT7hi!wGB+9X$K9wp@Q<8fUI8W*0~O zTq<7_!4>{Yy*$S{sh_zy{Zk_+3QCfCnF1~ z>@O`V-PO@aWWf_VnPLS>0{MAY!1*B&v^iG_oqv?IF;lV@9^;lPN$r+nf|kG_047Sz z_mW7%K_xk+`Gl-}^z)!cS5IGh>V5R%aHs&P^#)C2nss}PKeeHncf(s0E#9W2RH_y1 z{#Mk(y-=K>mr1JZ#GU?D42CKcY)`^c|5>d6EPL&E)UP-14k4abCW>)#@9o5Mv$-}N zxNAS2AhI`23Ze=bhJHnetPA(1`BHK$6~Y58yhW1HvOb`)2n`;@=40DSpzB#BCKXlv z#CPD5@U^a;Yu10Joxt!~S75Ryw+&)m=IaWM#>2_a-bdE#`1p-NCig^*%EUf*f23)_ z^)cjY`NPaAGnHE(a({-O*#{J9e%fk-#a`idi8r;-)Uvb;PbAe7Kc3JbPOVQ-`s|FE^X+S zLKB})?Y$}F5r5c|UeCH#p9|fmIy|d*YZT8(3Y{#bv!=9>^0aq&Ub~tRaXb4|57vJ= zDfBZpQdV_1tn*usk=V&+U9|YDAJ7GMWlw?|)o3qMNnGksO$!!u5`JAIt~W0h#poNh zFc=CUsfN+A^BCeF)=}cEWlFT2$qyP;Xos3V`2vGzUu(ACKsjODR!d0pl91-)tTmIV5czt){na7!$}=u#%x%lF5LR@> zqa1vsB+7q{B>G9M16p&KclBfGic-cQ^|63Dr}zo2?NbIaGXgcL!uB~0`S&x58~+(( zXW%Mz%0O{zpprtyx6^GqfSQSWdtamUUYS{P(*dV+<6_+_p$~cEe?whJ`<3_4x5)@w z%Z>99)4`Uv@t~J^+aPmgbn&*im`(0KfNMNvH9A95{xTLymqu>**|iIu26`aJP7SjU zl+AD13(hRGh!+lZ)Lrb;$=vW_BS;NhS2jPjFYW9MDd~SX8-tbyt)4|?VYCUVl1v&kAHh&f$xXbV#n&KoqvRj2 zl;kR9*Rqf>@ybC{Qt%7NC|xD#KI$t|1OA>&6)dE#T$ac}DYm4+-{>g{(u>*CSbsjd${0{7}p{99OG+i##6hM(}U0)1>8 zx$_r*6(YycKgIbP;jSN<4drdS9G&pVzD4$Ug(=|JfL zSUf2OHfxLx!CzXl7UAyDx##-u&AH7F0RxUUryt&??*pC`zYGMdw=w_O)`$&7^1Yc0 zCcq6=yAa>nlx9D*(fk$rJ2`N{1MurM+_SK~PBMASwSc_&1}bG9#j2WcRN&ql`G~6K z)t-`PHQ&{Hpj>0qNYO98ILiB3hhOBc&<<^dzKvzP8Xy|IfB86ihS|*6!{|%c8}97%Q$yOB>#m~!>0tBk z;*u5>t~Zj{5mlc9M(2N7c_GKYd0X75_UmSX{3p6defm*F4kS)Wc%Ps;yeccjYimLP z*N$`y-&!esK14rPXrZ(rSST!wp%7Bd-7u{7pk|%&c7f2)SU9P{YVQGt#TF%ll3#C@ zbdsq!9nWK8|G#dZg6=`?GF4#dFnE(c5sP5-@<=WSJ*4+=f0s0_W64Y%zw~D zhoH}Fyrg#hNy_z(QWKPg);Fv~g~F2*x}lmDnU^k&&)2wb0PWW_{Z}eU!T#G#J(Zfg zV`%^FLy%BkKhDqJOx^u^h@h!D$M*nA-K6f2da&wF7B0(+R&&*TjHC)pJr_SZHQ}<< z;+lKIHOCSMdwE1D$LjAD<@|cEqDTFX& zmic#c$x2(K(LL>)=#k(Jl0+0qG8yKVgULr_ob3gR{&k&Csop*+0i`K_M!75hQF%w# z7zfD|`$18h6`XV{W@4MqV^S}zWmqChfH-epjI8488sO{FsSU3yD6_K8JK_tKz?%BDiyneeuv??TJ<&Z>zxfi^*?*vbKfx#S31eIcokBsp$55 z-G*Nz{enx%8cO#n8|jx2WS>A>gsfAt>$&&qWE27O213W_8|^zVi=8~awPd=M&SGp9 zlGC4d4`Q*#&mw4c3)J-F?U(}j;7|VxbkGQVs!V8BQDuIO{>Qwxw93M!#$J?~yZGL` zP47J=1CU}HL#yZB?3Xsf!rKC+_}9Mab9$b@+c^JxKmjrHS=H%7w)dMnk#8) zBlWG>iovHpTM@4o&0@~9*1Z`w)UkLTC+UsT8?Kv|N2Y;O?jUy;%b+65GmVZC#05yx zm@(n`nDib?82#i=YmNBhy@O!8dmFw+GUjX}6^P z$b&QG=hfd5xu?kiyt$EwvU_TD*CzOMF1~m5mMX=cnJ6)8GQuxWTIoGN2nL_$hW{dP zIo`v5Ix@M-riZoIsY>2LMQ26j{o$FH>B^yr-f|3V&EoZZxLI+|;c5!Y1IYZgmMda@ zl;Z8`ndwp1f&<0-x=a_I8vc+Kw7p@ZG6sOFdZ3?L0UAMFo8%LC(TcGKfWx-;^T zw)0YdFE>n}$Sri_s~aV);{qC*+@4AR4K)cx`5e1P zv`+B3KJY*MZWtPx)mi)Al%HheY5F$&eIY&8D%R9|xhd9HYn#%0ZX5X2;SK*(u35rf zD=@HnQotc$Z=ZyIu~1U0bGmF3I6`Hg{p#D`ANWqY{f%7#tllPf$XjE!g1ETfr3kVy z%iSB*Ku@jUhxh&^mj7qPfi(>P>)bu)udo(9K%>CS+yVNx073io9S1ottc4M1q_sdt z4buvT!2(+ZCIp9O@qbYZK_9Lz>cyZf03Pad^u{xoFh6Nu7V9A$-6Mx%}(#9ePY{}Z@MtUu;r+$&dZ~$MFhHfJ)P>{ zV7G^E1FmZAU)5L_Y%s6h7KzUP={pn;0GO?X>N4b3qtmK^^LBgZo-E!bXhf;`+^`hn z=~`TBP^G8*Bnh6_KJ=UYzf`CFUTEqmY@>_B+v@r*eu`MoZ+b(Z7OTKgYJpQRNxMVI zT{kc#u*X$N*;ZmrS&)aQNU=6T(ZTmQFDMi&#a!W1GqZeGUQw!5r6b8(Fji=8XQl(KwA*a*Mlm{Hv> z_Qh^e?0i7?5 zT6IgQXuM)p`VLnpk4|XZshNPghcz;-q<%a}&^@BAay@bkUz>VbFTMpW8Vy{wNTf31 zYST_-bk;yi=?gp!l|O60hJ;*nW&a%TR(G<>4plNIze1wjh3k10-`2p>V1hdmZ=c@(5mPH$AA+{*Ar-o}+hA`qYlbT*(J=6`{BxqZrkZTNLWVM2s8>DEey@bQ5zS${pE`9lB3c>YUlue z8`R&WWnwXat++?r5Ay(aiIBiGRN5jzHyVa)m3i7Qa;+*t;TicV!oLME`-Wmjb1dvv zoUbAog=FGD7!7DIvyIEKzgX!PocmBBNVLz~bYg+0vAqxzmLtcF%Q*u7y97M}7au+E z(nUU>Rk5FUKn2^dHo;EdcF$zHQ!a$yhF3m&r(cJjY>CuvWH!CfdG?%!eAw1*VQV)BwNkWhTMw?laZ9~SD zFo4^yP|kege3k1V!#8B-re3ETw>LvegF4fnh<{n0hH=eg#^kp% zZF;{Y4@^J<+eQr5NJ-J*Y5fHM^U%!j>mEFs8z8}0-NSWuGZpYGK~1>e0KaPWV}z||T_2hPHP z{gyzS4I39O5g?^DJ)Vu=8Kh(K20clX;}=r1ror;v0OrC7dJ0Kq`vZVu=(g(zT+35_ zSKvfFS<**cR(S9DyYnK?@|!863EEq(SRm}$W9eGrIOw{wW!nS9uQTOsp1);NN7?;) zbmf>g8oA5(i~#%BE6T$fMu)5b;ZGrp=F8R&N3#t->hz>;0cmka|39t$-sZ(6**U!$ z%#Iq{m`gyhjd95wrT-ksaq4^Eqh}|noeH1M62@1lNQ9pteKlH?-U(fNgSs&{ETK@DPwf@A+3Pq21)lyv9fxlUKG~AqkyxiY3vPMFxddNf?xTPgQ z-)w`>?_i;kUM(*C2|+{a-;QTrGKE8KI;K&LoH_?21vZn4f|tI?%#b(~sH96StpY1H zPCi;xE{E?%2Mwz44_- z!mlCdr$&8`MD0umb|eVsrtRRrnFK*v-If6D&)(Lv$#6F z$DWHGTO@9NsBjyp2t!@#kaGckz)GV=u0Cg)JGa*)vRB$nRmJyQ9WLYFX0!tHi) zJqSpiFJ*Do1Tlg?$MV|WOK@*`pgD5PMfX={Q%)Xi5_K|;d5Zon8GOe++n0j={&4r* zh#&Kvxtf6)WUguhK35lYugv2nu9orRbs|AVaLoyM>Koz{-)PGwT7{FWSbIVv70g)4x%5 z=}CJ}A(aHXt<-J)^m3od{(&1%^R-SEG`G?d3fYX@H@zWhkF z+0;eKZlC%PK4b5e!sNjyRnvrZ!d^A^7a(-7>3d)$sm2Eu>WaG(xVul%R9oz1t9((Y zloHBw2k@oYO`L>#$#cEqQ|MguxD1Q_c>rwR2#RDpM3}mTy;?hE!331sj$-^J1?d{+<$MUn=4_g1 z+dKf>I={D}8=2yH0@>T?lMPQ{nT@=)eINF);u)^7LC5|Yj>Wuyd}I{(Ep$;M4o^3c=oR zjbXPW_3^@r5MD{!QT;b7MZVBbb(YAt9)PoLlK&cIIpl|uX1t#I)bKsruKjr7T}c35 z9MUj|yj_&QEt_ulTyzjXApT#g^adTnd%SF03381vehLX4&ATu%7- zDvw0BWf)f8#sSO-QT^&LBRklNA5p5E(O>KYiT*`D@N%KB_Ler>rxYD%dLSKrzp*b}zk^9&v^v!N9G?7Ok}78z8rIY8 zJ)h{Xe!GS7;h`NA#(=et6Xht7+Et^4Fs@Mn^3<6-1lG^fF$6T-vgI@GKq)vrfQb0+7kW=o!GsK>*wjvObquPr#oU5u`iszb#^G}4GR zd4h){nS>U+W9__MYo{(+Om@K(lG)km;yW8^%f}MA6oixJ-N4KE^k}~!LkF2Z_t3>2k#1J0 zd66pz>4)f5#d5}xXMF|_Wa;)DlaXETCJ9#$k6e>EtZ#0p+k)Pl0!O~}WRxBO)4;wk zc9aA+fnE%>f^r|~y6g^e&CM<~I3qkI(%Zw7@@LE6gm0;m1yKh_{94(>?jQ9H&ZU-f zt#bOB-}FwrUQ+~4wIzp%9ZaE=JPamqXMpt19rgFG$~g7$=>~Wxx0NW@^)7Xv4~{WC z8q8AIy{6`&^P1nXQTzyBi)WDa&n9#|at^6d!?E8hIglD3@CG@lPvzlT%MMomNTJYH)eOxgog z;zYduUEsId6^pd&$6-bvO8k<2`C8PS_%hu`2rH+r!8fLZ`ReXdBynAY(ST)1!!?|- z$-7AMfJBQnW%q_Q^={nkFj)WV=~3bT@fa$#pzLK&A-~t-{(mH?U{{>Ly}!`pV=(m&?pu!I7E+aSDZ;*qyYDi z&0fi+!7O=1KvEkftT0x+5LR-eRK)!ui8VUtorvBCJ$W1*G){`IT!%WSWpW!PE3BM| zGlAbpCJGJQ^WpF1n(#e6BP;r0={*h@-80G;?s?L~f1=z!QOM01Bl! zsnIs?%1qDT@=Q;FvG^je(5Ou-{~t;1J&;oA2B{xPh{Qx1#zuD|-3&H* z8w18*Y=8e}=YG%U-sirt?RlSbpYs++KUkwX6f&|YPtqN}Jdyp-4t^STCs!NAwjTc9 zl7J6AAtjZiy`%qoMSdY~>{?Rsp9&gc%ALjd`g)y*hn(KI4IchBtFI1Q?|_f)v~qN# z58d7uWteSx#5dbUaJzm}*Yl7aT@{;5-rarb*61-=q}=<^ReyL3^*DWKy;@HsiYiwl zM8+e}p0v3Q2>)Ohk{jh*+?NGT!+=pu%+mDHKrK0|pob=CKs>Gw1RR6W??cbp}$I?m5$W znV-AI*v@g62l1K(0Xw5Y=979( zm|VhLP?w3vTH9bv` z9a~Wfd@V!i$V3^(p3DntjsD=^Plf&>;;I~y(x|NSy*Sc?3nFSnmx{ojF(OI1RhrO~ zHGA4K?3?i=-Qr77J5@$ONx25@f&$Wg3OoFe;r4S@{`0}<$nZ_0)#Fgz)i_x)&3d-f z5xvJAXM&G-@>pF)%z&iR>XQ`k(~VKOc*&lhACF=#13g`EvZl#88nCx5ok=L0P4!NE zTviS#+JJqpS9)>sO7k7~Av$cnz~Jhk1%Dd<5vIX@yVupx(l8RC?6X)dh>=+jmPN8( zgIn`EqQb-U!ebwY>he31bHhS$V&j?f#(nRz`4}7aZ`5vI%Mvwj{Kb2P_cc5#2JOgX z@mFp#z6=*1&Q#j$ZEbGkZ!u}#A)MA|ITNsyq5Yg|s~U35fhpU9zy7p;%g;E}&SF>3 zwj6(G)@U(}D;Y+b z3cus(hxO`%{YzLQs!$+5*T8R_n?SN@hPOemWR@`fcHdeE+K&=0Y?I8A>v1Lri5?r% zDRk|SjR6W99Fq=J5Dv{rOGZvd=$y>UaN53{*usS2b%>&)-uRQgxZlv{fF4!z6DpYPKeITY3V(h= zWhZz+3ID%6xS&L{T^U7ay#TD!f9Lmpes`bNCQABj8scCR8y3`OP2nn|alQG4!fE=1 zAfUk~sQ)g^HQ`KooWoXx(a}w ziNdL?po>fJ~aXY{!WdNmowSV-mY z;D%T9Z|Uf!r=P>-m2Y)b4!&VXD+zp>s)wiBiNq9y5ri#XEejfMaj4lvZrf_h* z0ebdXcZ_-U396$g_BVGlc=d^^NY5GGQhj3eYFDkm^J+KWfv61!)By+sqgR7kE@wjg zLBIYv)>os-FX#S@fUS_%hl!o}&6E#KyeJ4}QxwOQ^^{u{1gZguAcFw>n|cIsui{?- z!YBX$LqNR0UzGpnod3%J(4+v(h91FN6|#wYtv1J%#D6x~vSs1tHwY;leFR_prW=0h zAwigl`Pc9>a?2u-HVx>{@hUu1J%#vw8uLT=g`WVy zY)0+4GAn4y;_CR{E+A8ZqeBniZ*sK4Pks3aGg|)|gm43pXSAun4a2cS9gZHv^QeKd zL)z5CX`0kSTBiF;$-K`SC3&6tgr8aVUz@E>@Q2C_WcY~rHOiu7k)hrB={)27Jcb`N zdQF6iHr-MUo%7TFS-PRKnp)9Nps_|Kb~#i8(T}T0u-G=?^cpFbrmJ6Tw?bZFdDgRs zr!Nuhp(<@uSd+tD71G&u9`1Mj!B;Wdk+M{OX#bO?t;^6MG_Yjpmr~C0lGATaRi>9H z5mJB-CDEVnL!VRqLDjhu`mCF}J5XokjT@ z4fawCuD$ku#uXaJvopf?85Rb=@^q1;qKU<$w~pghH3#@Td7hEH`%~68vyXFSqc_2! zH+tcrpRo(RBMSrh1tSan`7D~kiD0H;xjyDnIR#!Fw*#4ssdCyOMMsY^tWvuaH7DH)$yGq7XV~B9+p`iNSS zZ{h20hZ4j$hmr^W9J?H{BMGBA?HcJVy18wUEoA2-NVnQ5&iMs+#5+x!%Rq+Et&IeB zL;eE$mK#RG;#xv-L!6o?B{e=4I^TbpqPKlJlyCV)nw#n;r>U1Ij5Nst+zI@hj>`{z zhTct|5b!t1bohNd^A>Y$->A)G*Yp^YMD%!+l+Gfv^_p5;XE!;|t2& zkgAB2YWpy5%Qaf+j9Ca>0@$5@3ib(*@AZ;@$o=rRuw3Oj#xFHGnJvc;h(#fB_C9=J zj7_-hgi+&jRTKNM)AVLc918!!59%5ub!+XZt1Q9;(06t-siOURUu3T&$;sN3PrLD_ zV%mpEhY~D(kO72Wd%1Xow|}`!YZ0xNhokW0a~?Apu^PLu;~QM-wl1A^bdCbK{F(!@bJYyu>5}$>RI|GKe+rC!Pwqw;5WEy3}zVKd|RBG z%pfV__a^h}NK0bF*O7el^!u{qGpz$7ZvJBb;_CkonWrkNwt`dpL&BH5``-0WzR2*} z(i4-xQBQvz3EHV6CpU;vCjWXx@)G4>Of}yWg@E zQ?FnJ=qS7{{MX*mzt4{ge_1}qb8ro#k;VJ8(;#>H^p@mTWxgx_dP%E#?vOw5&l!D1 zh$kivlqQb~aw^=Ooa>u%$G0m8WoxNaZb9@@zGAs2D)Tqg;$DxU zUym_A!7*Kaleo6})#Jw1@5i2q6)}~(cE$mRR9*N+rFP0uV2n0=%taC!?RFt#tUywid+?x6MVS>G1==yAhVh-*{h zz9vNU$I)M9m+uTCQ_GnzT5E0vEr^Gzs(w1Jqj?uRS12HN`xEj?KyKp`vRgook$QAh zK&}gny5M*hTRx#A&Vv>wX!OjFhjLDIFx$6B_Q~FTr_t*j7WpxvNM}o00BVuq&2xz= zF#^23_*683QvX%QFAeuIey5h8a1(Fg>dJYHQiv88P1l{Tjo&%{t%UbVzfnXP=to!0ya|#* zOZUm{z?>3Xe_sup3z!OOiJ-}D8&dZ<5kbh>ibXPukoTt!my#jK-)|pM-dON-ePmQ) zLSRh~vxn{yofCZc_v=0(oppISL*ILqO)WNj^%KRt2s|KoFDLoCqedqT>4D3X$oP}% zNbSQ&vP9F*wgG@TG!LV!MdN`3>$#%uj7XX+`3nd zLvidR4N8LWX5jaGwsrmQ*S7BH5*@P6Cz&tOl+r((TB@*6dC-PWw?q=GgCvrH*ov#N zwp_s7bLM15F_TC852MTF?}w;1zg}sdQ3`lro9{vj5ZGsquM#EcTK%*Lwab0!tMZx1 z`BGr*ZD)BXM2lt;zfhe6PuD8%zV%UOj5~fuO|XH#o*PqK_?HkBW@&&T8z-IGlt0Xx zo=M~12Ss+C^V^d=N0>{HO@p0NuT>-VoPUSTD1*Lk<0%NvZmphUuco(Kp0CSa^D?Mw zx+&r{qy^{RG5FeeMTtAT-I}@9Uk~G8@h-c6R82Jgd+!lSYIxVZR$ND@eBqWVGcGqqnq#@Goqc^w4GOzF#pC!}2MyLKb{3F%$QfJ7lqnbW|xb|r#sabp%J@YO%v9;Q&WR|DA_9khab{wvePS+grfeB+E2G?qVe;F z)lou2YXc{sYgbykk!Qxe#b-~!1qP=VtkWyqKF=-pz7N&uiuTxpECbu4e&sF#{MrF$b z$9G&VQJdF~QXdM37g3?xuMM|O{?sh-p~N3meV6(9wpC4c;mz({8QaK51@ArHio+%A z2VSFRT6-1BL>o`)%vI#q%>6uO#sCha!Mohm$c=1KlzWy5oo_gs()}n5bR~8&M*1i* zf&Ki9LEZ2?zQcI@yjo$lRH68UXY`|?{lX0^w!7iyEzrkIhzf>73oD9qa!{gQP%KO+ zM1Gy!t1N^MwY)CnS@>&iM*6X^*2eDLubIrx4gF!L1!SLO<)!ny<{6;9#azcIUm;zFoPw`{hQ>wZiFP`MLFX zTOOFK5is|rc}D*FjZP=XzGXzbEvsqM|09>E!=j<;{2BnFf&*{5aq&b4T%S(bz(XiJ z?m4Q3IA*O|yQFSx$w7v{6AuRHn$feNAf@=(rk4EC-~4s&s+V@}75URMA5!n^6}S06 z1oJ1aazoB(Lxc-c`QD`CgWnylpzgJ#fopD<5JlBX5KUHRc3JpDtxKj1@{wYh+vcNh ze0E=P29mwG$VY@syP;uY$!+Jl>|@^>g(6fsK=_mSM;W>LA;Md2M+>ZLhyM(5BDc2f zY|>hp>rxoll(yF1i(Va{#Xkw_MU#5bT-!Uo#>8sB&t(<{>*~@uO~uNK{8Dt@MNig} zgR(yaCy@jN75jO;vuo23EWTy*$~a#=ejVW>Ny~fhFipLhjRE>h1pTbHe4G%cZ=eX8 zvg5upoy2{+ z@{LMgi5AcI>0Y=g8%n)Ymi%XxoDa}>31K-jeL0Yo1nDb&>An+i&6Z{-(PR*`ZY8uq zQg?PxjJd>T$U7v!KFuch7%uoHOnObkOCLSfbxNSl?BT#?s1N*;#Mj5z5ULJKYi~m< zX~$))05@BP!N{-K>KWS<5-#~Slsp+H6EgGRDaNN57hck#}z(wr;PX9kgXv3=S&wVTNR}u}w$d-q7t`dXL z2iYHH5G@beRI-U_mA-?LR(ZPNgH$c7s0y3oOl91FBxiwE_@G_TRyI$DmWPOZGE#Co zXwg#?eCBs6;LiOp&cgC_EBbNtdJA*mJaahJ_%ue1eq0tqq$+f6$EbGcpa`B**6zYzT)aWV)T5^Q!I0<#_1S@T05^34!(=_7uBVwiG)x>W3l0 zk!MSy)>&38+fB}*^vlP20@I2~zG&|1D-?vi`N|*U_w>Ij<3=ypdX^Wsd-j!#FTNdq zLQc2JxfCoZst$QsXGh!To=85N6q)@4id zGLw?!q32(CNVk`s6T=QB@h*qma^4PTd%5o%GdozP_1Fsu2jVYZu@ z+LLS-by?X>bwYfMXX$&cp7s9a{EpIVd`y^-aeGVlnzJ4Ql%;m9foq(<7^~tlzUh5c z-LAXbvcD+)4iiE|*LdgbzF3nfq_4}uDN}ETauImGg-go4#IGkQjJPPIhVE#-R@exfyrFu6HDd@)+RXQYE=? zL0Rgl9HBx`t$T-FmUMwn?v1*d-$y5YG(lsRb($)S4VS?8Bf#3cWW zr#G5CnrmaDH?)xkqu`uyDtT9GRX+J^%U#R}Yby|@y3W;MX%S2no-j;me9IN})|!jv zJfyLRxlXT&wj!aQqOgNwoa(WOTL=1UyqiXhYZSC+LyN-e{gXzDr6>3saoB4R7ATY4 zG{!)l;~msW?*e>7W{&z@Vco>vRZkA|-8}yXHf=b@xesCZZ~Kr4JnJ-p;$5YQ(5}x+ z8Pi7DSS=5pJ)JbEun{czwuCt`QBHbH_wMpKW=#{!u>&@81a^>JREvO{GRWoUAr`TP z)Om54wEY!NqChT>-gBe!sr`{3YpwX7DL(6fM1W0TdD_v^HCYkkwM3e|rXvFFTa8G_<$)gCU(?6h4+SU2<1sh>qtIxwQPo%kh;w!ms zSwc&^vEC>Q1bQPc7XI`_0{odPF4|1<-Eftbx`fRBt`=ynw{%ml7WdrtrEL{&pB%$h z`X$$x^{mmuf(z?Ga+F&hJxTXgmUJ%C&g0&?>9|yPZ@|a<(ON!a^R!z>O(xuwbp=chKk~htI5;2@|-90Fw>5eyJ5%Zth z-t3a6A#D^ul>hYv6r^@APKT@=Uyu^K-x1oJ{dCeASBwPD!t<;P`@5-5V~$l9=2_k0 z-wXF`BMrCEHp%+NAy3U(Gg^!82K=m?2ni7%=D~;CJwvRbTRe&+i(7IlGms~*ODR$9 zN?tZK{p!}n@){r0;Yr{8kcFk5WXrR=eY47b#%}A-tKb3y+!&C@nxA{G$WP_(x4TC2 z?la$JBcJeFT+Fqv1Dj5z<NtG9&CGF`R8Xom$LdjAyBf0BqkLiaORKDiIqZdJ z_!mFEhML;_Pb8XiqY7nng}LCF(A(fZCYT6N-tdKOMUY4t?kI~1Og{I2JWl&tjpiD! zxtcVnU+xEl^)zC?xnH+}S%)^1&KoE+itrhaSm>wJFwyY?nKpuJAnbDaS5GBTx}#y2 z#q&a&t102jg>BDPWKk!R!Q^Le>+Jv-%J5RP{MnlnMa{zw`8{5Bjwg!|k}u2aXuPxM zjaVc<7o%10JRO_j_=R$@X?|zdx6kN#k;LV1x!;$(TycPjqTc?Ycm2R6n1B7uSxw7} z+Ib~)*7Ob~ka+|7?RpRA_nZEmHyx) z(C11fX7nwKeP%QN)8%$p^s(M$Kd*BWn@5^$4?$Xop2IpmKZ-!I9tq3ncrqoDSG0Ki}sr!>CN z+Z|7S^U_nUZaR}F_j-LKGI!`Kx31bO{)2DP`wEQ}JoGVh$NlV%e3ET*bhfl%!9Rr( z-Ok$gn;shSUyDaAFux^uS;T!K`TyPE8<=P;{L9y-=$jj`eq+72BVO+3Pc|_jlHryO z-OY?B5B$>&e%1S>=+IlA%o17DZOx;`Gbx$g+_V2UWayo{$QHGt$$GUZR zR&KT2T#pm6B1cSf0IoNazY0(DZK~byU_xG>6VRY7(0ivBjL8n+SZ&bV?I9Q_4{-Lm z-;(7(e9I>1J$kiIUtLjjEdO_H@$a5=!@iw#qb5UQo-Dx7&xNtM zc@kyS#~qQ*F?Wrx>)f#eBtv4r*e1Zsn!Bnz?t<~Mq?W1rs4_BzM=BS~cX4CKt`w23 z`LdeJly?*6TE0qU%30F0WP^lSQonSc&$DZe{KU2>AI4)-x1ul|wgrN=8Kp+8%9>6^ zzy$>gaW8x*C~5$Ldzwf1o_5L}j*s{cJny3Cm1y1DFfX--Nxr5QcYN!D`?{XBGe=R< z5B#{rWUI&?CHkrLH$A;(cDNt+FLI#gKo|0FACM}zXFhx;kV@8fM%-e;k{)w#dRvZf zBApWTF165FPT}!{Q1Nj?>PNo9`#UDRP}l?7@4QR>^=_XOYWz8kCnxIpHn&d zF|QP6*m-RShGM+j zb;W*|4hYw!Zq(IFKi0&CZToN>777HhJ+mv-C++E`2Q%4Q%{-fBQE(RXKNY~~v8fp@ z{&mIKe7LvPfBv{r5g{{F`eW2DGNmEQCox5J>7{2;#*>y=xDRk^&1x1HQ`K_1Llwj% zHLlhv3+LlIZTj{gUyi`rH;!acDqENR`#I;CZxNd>yIrh!2PSEx%@QL~tDU~p@*1<; zdmhvYA1NCXA#D?DT2ji-nVuEsy99|wL)ks1SaM6Z4eqG*H|>1QWFY1svl&L|AI9<27KQaZ|D2^o``v2x$ex z)qN7x={$@UG83G++X1KjQx)}Wwm5ibPgWOxe@XDjFf?PE_wF(5XE{>^mSaft?JDFt zIyHF8x4y8R$U7yIy&d*oi?>op{J{(Urr01j8?=9a!%XGns_pd0%PZe+d_^|-WtXjG z(>KAATSbi(AYTvFq@XdnLjDg!wli%PL+Wm=p7_B8@Eu>W$FyDeU9^zPvpE@C6zWA} zlQhY8qNpyFoslIG@k#RFaY53Up&O?r2k_2u!a?itgk3UN2UVHx^QsX^KUz}>u_r|Z zV)3E(_RS*K*w0n_7+-`+@vI2t7?E;%10nd#bNZmw z-)N|yM{V@FA?~2{@Y(k3i?3xeUi6*Z9_h^c91jIm169H7iv-`SCF22)Ox|U_rZJ|! za2^(ZiXg9AsKPTlYwjSCf`DU zDu}6)INchpLBE$a8Q$q_&P$oQlGz$0Od8#jEbz%s0k!L2{Tb?3Gne*~>|AQ&E5P40 zhB#d-dL2Y821mS zrRymxY)=&4-yLi;`Gcn2asAjlDK`Cd@FRo3k8byInSxBcY>J@i%oV3l)^{G)$6qnK zhOK16_$W_K>-UTV!T?WHkMHg8SD&2TG!nWq6*sO~RarDO19%e7V6SM)91Xa$d44En z0_GRx(O6oaW2>q0wvLGtQOm}@a<={ufqnC`Vf->r1?Q)~p?}DLdT{Fb9DT{qlq;GO8n7kQc&%ryRQaO1FQ>M^dT$Ggk1@ zwI|<>lwT4wqI`XFdM$q+Kl|EY#^k(}4*#VKE@JZ%%P)-2qXRaq_8%4W`slEO@<;33 zm^~D?z5Z;A7^dQ}ZRegv{e=80i)*B$+TiTJ==PvxROhibb6}hzWq+jNxO9dvb~0zk9R%#LCnMa(HNMKgPM^;^f)8W z%h{HXHP^;b>nv;d0Dn}OtHzmR@3B_3+N)P~A3XYw`#%k2t33@}u4H1JTNMN6Z?oVy zn|;2ALgacnE39uneOI@RU z0c8ihMfIt5V}S*4CSJ1hvmouQ!@dMHJtZZj5k#Lry~#^Sw1vaFYv0a3X?4gRUQ27E zy`U4eagCguGvDZ>8@ICGn{kOju>Sj%m*@Z%N;7dZD5K_*E;Clo3UB6^eqrbn2O?o_ zdG@1cfliUMGxQLpkVWP%=~a$FOrLIb4@9UG)k3G25GBBOzh`6o?-rr`+L|O@UD|!x z))XVuJ?g$%EVMs#_Rlh8ea?r5eKs_t&0?m%4|wn31U)vf($Myr&T@daL8PnGYiwVw zNi9NC#!{B~^^Pvj(LXSuG%Cq;g(Xj?q>IB5GQ&b>-ezDXw7nZ!i#xwP48L~#W{oqo_C1CgZ5-0^o1K5^GKQTrB};#>$?N!C zThMpeEKB?Qp0yR|d)|TnZ2Ch=bjFwKduX*?HUa)TuzLeemi2Fbzu_s@$ZeszQ0K$nUK#xcev06Sm;4e?mP{fDrHhnje;kCT;IW z5}jijBzECM}JOeJ-9hVlCz$O6bS0CsZWmeBP= z{dw?{TUS%%udLthqx+Ae?2K1E*~@z*7Rr-N%mNLA$h3gW8o+`ouzd3+Z5dO$ z-1e@CU&fp+O9E#VuCTLG@;j+=KB9G^tT*whUnS1U(=$au?}H_e6Eq-o8x=)VFWm=h zOSsJ|N2tHm`eoJwEIIII1rC)o@{{@UKCkwV_8sd!fena|>whCMCWw`E!;;L#<8P|I zCNwQKx)L%40IxQlv<8^oRHI?BHL(h39FR1z%+`HO{wW$ab$S~&M|;z{uOJW@Ccv%X zN=Os{oBd1w@dpf1+;_JF&Zqg&MzW^u)k&pNZM}2uW^gOA^O`g{kF!8ti^?i>_l9fbzItHYeQi za~BH-M1q}66tlF-A3rXS%6M^UJ<6R6R(O@0Djo9sWMTXm^=SY?Z*2a8^l%vLJUASP zn)>z%j_qe8wR!z0Il^fS17F#PJw5rtrww-%BQp*NS-X1+*mlkeKa{YtBFPM}+qw7E zuw{mXD$p$LyA2#$M2$?|S=`?pJO~|X>*!ln-%Fy7g@bh7}|LZdP36bJ9k(vPe{iWdoIjbp7FM`OW@$9`=9X?TR;oT z;f(8e@zDgmAmr6GXc=8RL(<@f+_906x4T(a+#8Jct6uX4Qlyl%-V`-kiX+r^bDZ1Zx-D@Zq>duH zDr-|u@VY$nM+stNx&e0c=3^SN&)0TW(bLN-c|Op1BQ?$hk3}KgT+4b5MOdE&PPWtH zrmum!Xvid^p^o$^K36wMKfpyO(wQRHKiXtKInx}m?2lu$4pzEY(Z}RZ5Gnai$d}(_m z-u1LNMB4b7)eBIVUmaiaQ;_|Xb?&B(s>tFo@UX>Pw`oK!sT z<=zyl3!q=2^?m<;0soUUC(#w!W2AX2bIIBNW$B+d{oi#OHh&M&Sku8rF8^Nwne-0JMTN=-Sb zSYvB$x#TZ-2_1b_qk}jW~e7)+=nY)*>>R|^6k(7a(+-mP4=LXq+ z+R4N`TDjvP6t1WXDFMC504SXAQQ?9qB>Mwettrq;L17^!kkuhhfg3~FfJqEwE5J{v zds>!rrQHdd{uI{shk}&3=6R%$@n?4UkM<%A6tToj{8gtPW@^LRKN1ry6d>;u4ls+A z=f}JHcnxG(2dEUdyIN=QQ-rs36di4Q{RlJnRKwATa!&#SePaza8*>PnW`wy=Wp^Q> zE|KxSWJ}Lxwxs+GmX`LJt`+EcKH)(m*tKo9398DFh4F{V90-Jc$1BVyyQLRw_g&v@ z(un|Q!~kOnh~MI_p$*q#zJw()J&3&$qSk@-)bXamR8P7CjNxg{LZ_mS{(-UM zKR_RrgqPwC_AL62O2VCw{=w}3VeKCnq=vpT?|?ixKd#}rkR zCKf2##)Bd^$0$QX$~oJvTBZ|L(!g7Q0G6=x>Y9H0cT8u%UsJp*(+Twc$f&$}c`s=% z<)l)M?7h3q{5$*ze~;cvJ&glLnBjchws}SKqu0JH^Wa1?gI+Kh=8dAlbmQXbH-K`+w2b*0RiGWnbeX?BIX4xRfU@c zDr1=hUuFNa?OBS%!EFWkA0-;iRq59^UMXCnjoo%&%-xsR(FJgFreJeyLmO{{{CV&* z!1`enJWdu|WCo4_!y*w|vGqm$P%4pS=D)B7i8J!^-A)A~;-j&+T+pk9@}RSe-ABlN zD=dL=8T)J4wT%cbKj+6Kzqw+n(R2(8J1DIksi`?xX)|s60v`FAeW3i}57|eQxmM4E zrb$Z*R(KP7XGGO)#(L5u{mRfP_~B~aMlQEZ88yzpI=Ba}cv;jyd@&w)2B0Mkv-a@= zTTuICZaKev=?N{*HT`X~4_DFKu*NB<&j%IP5LFe~hTDa%XR$588m^=l@sbxFByl9T za?|L=E_jHPU9I#L+{1TFUgbi6g=Z9WwYe2waSU>WBI96q-?2q4?6Ga8c>A52o*#^t zz$W4&yQ>AV;JM)%OQ3$WmB|jOT@KjWFt0yysaW^EUnFk8)vMjj;|c)?Rd1F!8@!26H}IK~7Rv6` zhA8dknv85Z8RavKR5>iyzmz#Pv~s`Pq<)6GZbv4J3Rq)sW9O-R;n z_D%jAD@q=D(5Pg^Dn##>WSw92H9b>#%`*SP*YreXW-)_+-odea)Lo&t%`JO_<1kWw z{@3($Wr$V2&DZqGbn>F5^Lg8Zh96*g>GECZtT%t+_##?%|3>$`*S*W$Lj;=t@JFrn z)RkPoa8nVCIubPVVwTngNC&^x9C9)B=2ha=U%~I<`WzO1BbE>EV*VJMi;KLmIQffG zrF?3}z79uC6vWD$b*iq!Mqb+HuSLDC9rC@^-jsrwAM zFw7}JsGv^p7K>V-Ml#E4HjLaMc+r>fstKF7NJ~%*FeWV1E_-*U z`+SS0wk&TMb{M*>8?T0Mf7#^?i+~k;n;X*AgR_RYdAyloIP9wLYIaPdYJ5=``O(2n*UqyW&Uv7miitmw-lsg*^%^$vlUtFODyF6Q`=cN^vX8|`1-ts z>jAkO6BhGN;B@34m^C_b4aSR({0qYp12#XGj42W!>TLknNSYh{bO7UX_85K<;**UV zuhJW718u*~ZEat2rvcL}(hSqe7evbgj6XrQ7M{$eCr@)Ce-75dbgt4{g`8jQ^nHrVMD}$J?p?9%(qM zzsL+TyEgCzX3Eb34+P2@bnoTSE=yn0)q=IR(ZXcVJiPuGT}8~R16w&Wx9WoJmu3nG z+nrwZrK%^7a33XxUsTHVyRL8~r*kb&bq2~XswqlAjMbnYEz!9a%6xXgf&Z#S5%V_= zA#ZLkj)oin^-HN+b*<9z+Rov3FK%MpdssYa0%3j7H&~2JSKUM0UQc&?v}+i0CO(dx zdc0=D{T8z%3-SSutG9cYVVrFwM3HaRJ%@k9or_tLUJW7z2~vYrVM4p0Sy;@UPFd_z zyS(JMY~I4$9Cj9FN!nR)WCOL${(suIMq2&WGr+qkPh@BGw2+XRqBO)r4Qexwl!nl+ z$J5cK4>FElj_fljofvfyQfQ~6g4#DXwqsmxBTrwSqWn9|m?tmnHP6uH#7dA1sbC&V zan7v5x_gOSb?VTxM2@W{j7jm4i8O)Ffw*>UtGLc0HONn|YzFhQcydS*fWJNNjYs>L z;XcQz_xh;na|9ps0oSEc%QRNct{+r>GEiyfdTZ%`n>#2}q0KK!KJI>)V}X7?-((U1 zl~>GH#Jer}yjg@*C^dBY;cS9g{%bnTCZ)Um`EAU(=;C~(=jgmoRVX!t={ax8tKhjK zvkr@Sb$PiUv%INxzFmOD=6Q1!J;x#F2NvZ`SGtpdssaA-C2>#j21TAzt?IcuQ*VJXG7d|Rg7)52gU~sTJ0qH zbsW;iyg-2{Kd!!ARU3YZWhM(GtVX?E{UqRXGx>+lWTj7!^}CtTa0gSx7hVcT@x}{G z*LsqVNFPbJ*4CH<{3Xa>_F)q8?aJmm2?ezz3(wU|KX6?<{onZ}oEA;KO z(ZJ~D7s)9fwjZRvf3x#^q?!53T-}!mpz<~&tDmWi6kw6GO&ol|p-83oa!w zIgoCrE8Mk!VBMVnWpZxL5sn+BHK9jQ<=l=N6fU1m* zpk&d@4|exSZH=2nrp{-wF#yI1{$Z{dt-&HD`|Qwky(Rxyks@~i-qlO4i(0XIruKsA z{d~5XQPoi>q{=t{r?$!*tZhAcEh%(l+;s#_L3Ap*V`tR`FSxUie?YFDN*tG-SiNHU z0+JEkV&n+mD)d{oiX>#4Ssi>oKbf6~-hii)VN5mwfqK_8{by{cc9sUhx5# zktig4#Bjtf6V8vxGQ66jJ@6AK3fBpF1H|Cmk!v&s$(+owB>7$GE=@{T*8`}-$G73k zA6{+KujO_f$DDEwTWBNKnug+#j)b3G(6|ow5~sz-AjM=$yUhr9FH4?02E&8CrzZ|q z);HLGD-HwtR7y|A%!B8I@$Exb8NTq6WwbCcd-LJdNHhE_*GKZ_@|tmTWS0l0Q0zzE zE+rmJ)wo{ahpUmTLD!;OwU!erj2c1YN#U|%`1f!rNmb9YQk{ySxuRrae6?$Q%Ofahl0aq|~QBme&O@HpP3{!fq`=*lS3^gmp5 z*VX;2T8?=f12+lg6ULVhtz5SFfVce+g;p)urbmn!A+FmR zIxXX`kBl2j#vF_8Z`+IGhMwgEjAi07Yto0VM7P6%4ycSyH@2|~Z-*FBVH?d2!E!yz z!^{vsjF70B;f6dN+EmG4!;2MGib0r=5W43tszg05FtJy}OB-TiGCOS>(5S8GfIiJ@ zc^nR4wNp6rx<-1z)(8CDd-Y#+zpYkA`@!Cb7ZY(d!As3Qbfd)V57h$P3{dCNVnIM$ zvM}?iIR2cw5UjP?7f{&Xx>vZ-L3kM3ltJ(?Rr&_F*6)MC7fQYpU!P}}d#N_=d-$oO zeBi1JdiJ#(v0?o~O&^-n5pQbg^y~VBZCa46sh!)(%mO^`SPK-IEp5n|JRNxz5<%{m zb^)`ZeEG%x3!S`FH;xTskrOW2q*4*jz4!C?`m%+sfJs}?^GemK8sy*nKgw+5=_db_FiDd@*j zmn1q+3mqt)4v&zPoNYJ!?OyP=QWdd3TIOF3-9V~>CL>gfO3}&v z6%Ae5S9;uvuQx`Wua;^fA#qB19o1;7p-Q(7-XE9`F&470zx^2%^*a4e&x$;fL*{|V zTR=t)Qq&VfOb%Hb}R|V!R2O_s8oX*fV@SbB3`cZUu-S~2QgXl;BRh27=D?RQusyIK4 zSQ?aleT_aFE#>8!KV!j~|9L8ON+4~{X)MhEb)0PqgQQEKRGk&i1^-Vbi99p4g{YnOMC|`1_y6(&wWC_IKQ^go z(bOp`ug0A32d6*CSJOIOzpsYPUr+Qi#e-vnYTzN`TAQsBFVYZM2Wq|I$Nvl+^wqi+ z$J*31X0rUgu)JAb+0bYIW8tR4iCVA65aHDtsOxnYwV$Mak97oliXDibVlE1aA;})8 zKNrHQnjAC9Kk`6jsn>P2r{LwTRF}=>tEK zpu6#&(y)w3>K4+$eBRhfdde|D6~}ZY>t`6c8EpF|lPR!|pz-jXq43%{A3qHL74=jN zm`Zd=G3>US#X3ny_+P_2&pncF^_3wD$ML#gAAPtZh37rcoN?R+v6Gm;dCOyGE z%CVMMS^2vpMnhEGbz#kMRa@SL?&DqSb6DNH7-%SsrS1OR7fN12if5ZGy+f9bmPhsS zf^02T2VnCCH#|X&uo{k3BfLQt(BC0_nLQa@2~Hkq+dE$#_XSp9D!mKQR84gUU`k8_ zWcgydX8Wpj*hdD#iH5_!p0tyFyvwTIAKY zvql+ci9za%0!Z(Jr5NW@uZcgy8^BD+1LfTR#?1m-yNL7~zPo$MmpbdC0vi8>F(f$H#cuF6w<)i?~EqZ@G#QMZF{YjC`0@L?47W zhj0S@elFjOjWbbya47xOD!l>3V^J8W$8p#l2B_!l&vdo~B#G_=1@PMu^xZu@?NO|l zP2&^0+YEqw=(>25V$g0c!Y@h|pkqNIA0V7OFZ^N}o zWhXhrUT8W|d`p@TPY_0jIcOA)?O?ZmpqTh*Y<<-?KDB_x^Z?9?d+o=Fcn_Aai`ToHjOe(So{f0R6*(7?j6&2RsB!R%-l1Y5UIQSTdrWYpUNPuW+o_Ckf1Nfk|_Nyku59G>g)8vi3AX9-lC4j9p~m z1xh6ZO@;h8+t1^3{*EC&Hao4x@91u*J{Z(+?R)esTLStVHN;tEjTLzAY zubt3O@%MJX1zXf8FZYMDcWmQ1beS7b@z4?!$GkPgW`xg$#Ot?0{90$10X$iA(eYPv z*#}AP_T!S+99r)l=PsWJzb1h(`I$B4doZO|Vg7P)QtHv4HoNu0+PQ$NmJfYM1Wxd* z*T=D`2X?&9de-cI!v}*#Ka2KBi1U-^nd9N266lk*(>Mpd*7N2m|NkXvFK$#?3U7Nb z_W8X35W72pktuam9v%yY{A^R2FXV7Glyo+%`r}&mhZb@F%-*JluO4{t<@MRRlGDU? z$LXtb>)+m$ag(hs`3OM&H&E^>?zjIYUkK{@$Dw9w#C<=DYJS8Y)E`d3vXRmZh{nRG zIj_qP77vEW&$G<8+kEdhT8bdw++~o2EXL7cPiB1Q44;L)SDy9BJ+&~s5ItqqIJw z(orPaC*9%Qr$nPXOw+5X7JGUl?6S11LS@<7aKu{H+FaioiWKF8YPt zs^O9zY4hIK_{?|Ymt&9}a`y0eu4p~`_qm`#O4!HVzdmTQD4fXh^No9SkY+A0pjmyu zCd4#_R4YYP)l}(j`xQ`Tt#+7DkGeTJ+4?)_GK*wS(KB>E+G=E82>Bl5B^CT{VXRd;WTi7ay> zJj~ti)-EvoGu)u;T6iq~V-KNU^#!csmPW|mKL`@lgEC+Rhrm3c6bQ>ad?)$H?vVa) z&G3=h(PhO>QporV-D%~07JYRX%yt$e-H!3}RCb&c$eU}5y|{;NX>s2G9P?7}ksA*0 z0;VnxW9+7AZnAr%c=NJ(nzMPYy^6t)FX9&8utq7WQ}L z`fO!(?SWy|sy)%{fXt7Z6H%S*Wm%i--F>`2mX_VwW%b~2%wL3T3C7u=e58pwQc1C3 zv{X_IxPi036W-TFYbGAU+`QtC*Lx+Lly^aqr2j%iOZug{Y%lNma1Sp=(1*60`Lk-0 zb}z5aX6e3*O;FK_j}0NgNA97~Ciel85}TviT;_{qN_bF|N9^^V9Y?hh?ot6=dR&|N zkees`Y)WBoD6;B2^}QybQstUqQ-TK82kDIiuqi?>s;jhxt+7`~X7awSH@t#J7 zUXEh^enK!*UDoG70}> z@qXChp(*ljosxS8ue5K#@_*_zM4nlfBs7-$FT{~M2_+ZqKnj}uvb}M4J#hqZA)7%3 zy`-KZP&P-|7Vop<;lSr1bVo;4PlyPYlId^5B{2B*791&YXIVDmqd}1DR1-Ld6XRpY zGD;a(nLT7(oEI9KJeO{8pZ3Fi*1~>5Btf=N{c(5jTRWfpy@U`-%CetHfZy${d& zs^V?}tIL#d-$n%cSM@-NE5Xz9$p}T+Bx-2(zve<_*;Wo(i=vzS80rlwlJ4$V_&A_ zkWHRH9Q7-2nb-NfuorUcmrY7X5sF@hsMvj0{LEvt-RE(W^(WFyy#$lZrPMJEiI9r} z^w;}*sJ0s-x)*kQJnq5GV!Oxb*H3slLTU5Q6c%C;_e1%)`yon6J^rjcAWFz;#w)h?h+_5gLB9H`%=<`;;V;+ee)#rab#R z46Hk*_hZ|X?rzq9U8x;`e7JTz-xina_p|wCq%*=X!SRlX!f&1<?jr&(io?jj14ca(6?31=2B@Xx&frhr^3+GcYb&o zg703V4*xDs@xfXHu+>cX1ZSL4AL}I5qfI%L_)p6NnmY|`&ZHQ@-~HNiG}?2bt_E%( z?ZMJ{%JY(9q%Sz8srSQ%toW+)0{XtdGd%rfG*j2r-TGYAVKQ@EGsj`)8E{O)o>Mcy z{m$su;81j&E}>KYCKTvqDASJ*cjDUB>-3AKqXO z%7>rASavIcvYd`KjWT`Bq2c`_s-DZzuFaZg8Gi4YHk&i3Ah^~p;~L)f9r&jRRZ8+q zN0?%(=Gx3Fr}UiAR@cYd{Eq<3No&c9oV>Ed5P)^94H! z*}%}&T)rQ~#22pnWc+D-6yeW>M8negl27(tg|)=dlqJ*nCfF}~$@SdUF#+*C4phO= z^US_zruaDa^lI1kD35~dmwhZOy555yQM!J4amZs1%Id9s-WMWA+jDHRUicWNL{jc> zra_mg_WA!lSJyB^=P2C8g;~2LOM>^!WL!^5tNOmlOQFl(+d#DvD$p@2FBP;G~z@d-oE_6IqCAZ1oyC8@Wu?0BzVW zqu|$3i0t*{8*eq|skpjvxBq3!nx2- z{Q8qHUhjFrGzVY%({x+oA}-ScPY`XvZGlW>{#mdi?CJg+R4)04L9Mbz0bJuoXt>$F z9(kflak%Zj9H!Rx;fskX$c$-VP8T;D?70$AF%tyuHvw~DmAgI=K}`FcVsNl?0o*ST z{0mdqTgUfs<1l#e^uO{d(Uo!1#&raFl+>F`1~|`wu^BLyN~q z1P*#j{{8y#s}H#;y}Ju5dItWCUFi`mbz_LUVu8Uw1yZhuGTxBHPn?h2{=lac9Fbz< z4tm0wSUxZ&r+ceCbSzVncj<}-oXajm`Q>c@V<+aRw+u-mevL*r1IDqNVf$kdk|e!L z<#rN)3$*O+duVz&CLIC3RQBf2$7XjNc~SeIiq^iJR|p(kXtd^Z^*Z$hfYG7;cU8Ykq9n4C!Im$ZYM(6n{cd*3~%dAwd0-e4Iv1I4Ihj9LE083vQN!=N`?rCYN&|I(Gr7G8ppq$@HzPv|OVBR$(Np#xWAEa-|X&hxu~B5EcZ zoOFg3f#14J*a|B#v~=UI0~@>Q{{LnJr5Hz6&uUBv9lXX{BgWcoX_0%`xTVRcIjZZB zEgZNJK-Xl}oYRIJ|JBD7==GDe0I(UV5c#Q628{>^TbnF(*IbAQ<#)`cSYz1dR z_~F9Dx-Mq6@c;gQCeY{{6azLnw}>ecCR%Rj(t#^6igaKI21EyJT;-Lp{<;WNNkX$v z_P-aZ1^S_%t*-klX)6O?M=$0(T~(beBOQwp4};2M zKd5q%RVk_E`!03uUl zz#qDO`C%pbBhFfN%lET%S)Usq7w!}eK%5DW1i*R=;kpYf7kM`yjC;ib35wllLf(d? zDKY&k`CQTDZ2HR6TRCP)R1FIv*Vhl16`XPBz&X#$!@<((RD+8IOvH9$q|F}yaa!RX zZ(3Q5rKiw<{6%*U@K`7%$(}GBw+*6w4EAN7`yp2UQZ}6s5>@}@4-EY7diA4?Z^AW? z1{X`KVrpE~FQcMGgE4ks8?wp}F*zzja|5yRGP0|E3N41M3ld-``^%;L{w=7HIx%c3-KOnGYcW%=Xo71qM<7?l{f z@p(4j3O6o+3kVkqe@Vo3fDd!Qg$o|5!^p75vwoB(a)HPqNTYgy^3Dj+tM(9#EGiFJ zF#M@knn1?4;m87b!4rdQNruR&HS(%G>r?6A*RqchYbslEJ^?9|=k~;~kHD%sf zG5usj5hy^FPi#E9b{Q_vgytthPu{5XAR#$;o`Y?Ck(di=sbF`?AI|D_q-Jq;mo6ywVfV8q>Et|3Ec;#(|#el zE>kV!83ig^k}@MBFCVnTD{=(}3PM$ICX5U=z-`YxgAv_=2s`bj$q_?tX8!S6gsM_t zV>l&lnzmN+gx}t-@A}Et6`(AD?mXGd#)Rm)nT`TDy0?%Mc&kaW4yWYto!rx+Nxvt% zgr~a%!`&c6%cRL=%j7h=We`tIhc-JGjUgK=sfXW-^l|H}prJVmIZ*Q&B0lTjA5c2& z=r}c-@)5*+z2-%QsJ|JFYEw-lJc>6G|hCCRw(#@r~7YJUNk>RCe@_ zWM8$6n;r2##^Vxx-1%)dwS5n_MiZVhH-J3j!avzIMHaussg6MChz4|q=7Es8Ekg2; zdP+fKxYrG=J2S&_Kb_&~?JRthU#-nb;NGJ$try6demM&zOH1J>bOPeC>Kvw|5m#&T zL%^eYUWv#Exg=FXnI+M6k}d?$Q;92+eOc4B24i-d}rY{*7{0Z^_Ww%YOSHm5A-u$Yq{V z$2MO;`aFP{YDRvfTXkfgQOz(Xb&$_xd5sA-KKCSmMuhp$(vzahDo0!QF?Zx9SJj6q z2STR+`2NUNuc1Sk2c4<;_85H&;@MHtD^>&F?xzwu8_($G=oN!z%vxx5qU<*k-nK{! zC>CM2b&_z}=kbS)jZ1i2Hl+TIDW+XCrDI^>!=5765~i#!k>E+5gWa`s{LVg>F zYrc*Esu6MvydS;g3o}FzRFtpoIM@` zeZ_%vOlW;ejQzDY?pD|(0RKBlKj9c8#&-ZShX6H^PX0Ck7t*73aKX_0<6YLGs*-8- ztV_PFLMo4NhLWPeGD94?MFs8zw3_rKpgdftL9jSHm z2u{g3Fr*xFex#j&x5FmHL-E0kq{Ax5RX8yo9o!89(ZC&7X?xM+&2S1B_%Y~gqq1^Z zpsFVn*|b4}LC6tmzRYn>#-KyEp5SZOtrA~!fX26@Cl(y=40qT45BOZiv;)Buw%nb( z`Oj(vJl*!rSKC?v^FHHNuKpPw81w@jP5g)4<(O!=;=SrLA-@x?(EFYYCu?49$|(mo z{TNVL8-ZZca}`JCx!X`b@J%&9Q0DQu#Fz!guz$zvw7yBAirh!+vzQDccd+;W_~Ox|?f*$j$AmE2n;d+UvHz#}sY zq*qb4_w_T-Hb)KD_|}v&zq6h5898UWrhr2*3?eJ{Z|sj2e#uWfH(0-|B4m|!8b<-A zMm%NXEoVUlvGEqIocEm0Aw-DbBlLA$s@F)(TC=SJE0v!^oZlgyBZVkQZ~IP%y92Ya zZ*QO}5T!f{S);Y>YOvn`S2F8=2xG3MM4#y`8vCFt1f_jw6ZM*N;Lv=#f{OTzVW#=* z$F#W@5lYJ5X_zoRE6Q?LGBHAy>3idUuWvIy|Fl@45)uEXys?78`+EvAxt&T0ClFjz zdV5_gY9}meiW1o^v>A=THwa6DD>Rr>M+-p0x!J{D_Dd3eMh0lv(jxdD&kK;#qT@@7Y z?5v@VJzu`^wk}OhAbQVBD>0Fk6x(`|-vw1O4>fpd_nmBf1`ab?4|pCJ(yYe2feOkR zb}hwwcx#c=&%o2aB0}L$c(X6-V*r#F zA`C*3;A99w0b(6Hp&_RE9dc`5^nFbH{#p+EPv-442Rp0)G*`c(s?o_#J5wTuFKqgC zE2ArUO0ej`8&DJ$b@tKosxRC-pj8;y6z3QV=yn^4So@YGO+^}tO4>HIJhw$X5@>4_ z(}qxsp;hRst1^M@jir9GnyT#uhr#s3Y>jhCDcL?^>J>E$;nKxrsB_AgSR~Pr2Cnct5^7 z$AUHxT?WDpd1Skfyh6y?FXWv3joTp1k3~RmoO=0}K(TH7=yR{Il-=Rb4{c#+KNVzN zUhP+)VZ&|4Y9bG9FjwS~X(QIQLzfdMz9A~=8BS+`RJ+WbV^}tjDSWfYV)Sw`&MRlm zcwsAIWaXp`0RFa`Q29*u7U?&1GOx70mU5qE$kpD?dg7ACk-+z<-ob)zlA~PivWeDH zGv)>Sa%EzV4+M?7SkwHsQtg>;EHbR_Gng`Yz`l=|{skSH61j(*Vvsvq%kShxtAy-$ zWruui0Z8EuH=EH;1Q<4f5ZdMQZL1inpCLU2f`2V>w8$(|XALiH+bA(=j{hpF;ang_ zy<>Mn!cE3F|I*=`h)pV1YT!Tf1ji-KT+@6koi2wPRdj7ikY;4li`^NS(qD0^WPjPP z5g%mY?~n9`XKgT+rK-Tii*V=Fck7S7o-{qZxL0f8bpJs`*w`4+CrexbE{7Aegl$O5Tx4e_Qqqb32Vg6FelcEaR-#){@R%_ST zv`(@~!j7y2$?N3hgd!*!e#9cYvLqz$&h*FA?%Q^@rQ_f1ObE>}yt9sT-^wKs@|-y< z8~9A$2L3@OER;RVn$p*iHA`koNwO?`{&zH?l4V`j@?YV7_q?C&ZU`d%O5*D=Qf1iV z#+1hA<)V?L>(CTE8d@Fh)SGL2{N^-SOJ509-p_nqtUStvQ=OxQd449WD^WSeVW%Y^ z`c~l<*Uofd_2bVyM(neeeq0oGPJ}0pKlfA1S9MsM5M~b2fED!ZMjf&z+!Oo|`-fKL z$AghD(McncOUf7~*$jaF@<)_i)nz^4_s#vIk)s`Wl0T2J3KQ+bJ=~+oRLxzb5tSri zUM;GfR}1RRNxHc|;UD{-2{H6HH62cX{7)_CyU`o;v|zlldYw$Uy<SKbxWv)ebn(H3&ayI6~BZ+AP(^_43I z&l5KD!@dw_osnU)J_fr=sL0MD89Rz|tv)N&;C!G=o^+pI3@~W)WUYlGdE?VV1jQHh zXh888^?KOHti_z;5%^6{Mh^Dqn;&TVias&^;K+{kZO@Sor}yP{BxY^B?mM>~h)>uK z$@roK{#`KC+qlj$EU8f|+3i|f>u`kQ8wQvjK5BIYlVpy^tw`*;;jeqQBp($C(hmY? z2y>j|>$_H|K7y}`Xy`zu`IHI3{X0rm(t2X)h`I@-P#PS$elZ|V(j#KNHEWx6twl3o z-!Erg=>FWSPh=4J*KZhQ!r=?2`_sr9@R4AV2h3JSfOWyK_d~Dxs>%{rNB_a$KdAqI z1pN;Z2KRt3AFdLZ9|hQX@u-n-mJ%O+_giJpWTYGZ`KAWQp4nOx@8fJ$83QI%`l76Ri~F)U08)lIj(Lq} ze~VIT@tas~^<`QFhDg$$$_I`1Q$r!lXI{D(p{uwAs*k`ZK)&dSt1Tg;hA3iqZTDMo z*V?bG@olL~w#! zQl}Csv<1tUmaC89gGkV?&TtJFnR|+whW`<=>*FP5b`=;RRZ7^LnGU~R-s;!lf z7uu}^D)x50`4`VSBI-Kh+LoC5Cn-cJCl2_>hB_rAWxC$Vp@q04#=zd)>0T30sVH=g zSfkFh(9Yy!XyR*Tr&YWZb41w4*@5{B&u!5fVnC}*mJ>4cNwZ&ZLu%d#R3vItjqP-t z693{nEbt6cM&xzw=R1QqWP0rKPa3R9&TgVgeNKpJ+wPA9Btsmh?2@4Ddm3ODf{Flt zVIGEAIw?I4i?@ATP^y3NJtRj~miZ8Cudz`mHybH4;$`0e?>uMBS-Wvw;G3tEFyL`8 zxhrv{nLEw75}MZwE$gt(TdH5{e=fPs-J*YaxFvn~rcbTxN+Q2MVPkbr)1Mokv%gh* zB~RQ4zQ39m?GJO{TSWJVaA8P_8};@YzKdJZmmhsCEX_N3JHzDAZTM?EvN?MqV?xWS zYf?bJ;CD3?WSXrn$6+|{hwF_|ZV(Tybp_{LKEPVL^#Tu}#e;FxcD;}pqpZ5BAV9v? z&p!9w0x9ipmp!V#zRJ|RG!Ks&qW_p(AH=}KQ4}?@Uoxb0Y#@!kb_t?v+7J54+pR#l zXWvr3e$!D8UY;O*Me653(H93*j4}jiTNUuB(@uYjSV;Q_ZLbRF1Ru`pBcJZ9=r?4p zR0oWZlIjmS`F-xMz=4ChK4|wDFw{gqx)AR|CanWgup6~WMYhMhwi%s)&|c`%Eb%n2 zx6@ISsYjd{arw**mY$!@v|@^W&=gqhQmBOnxR9h+$e$g;82Q|OgG$VR(&`eLjwiDl zw-k9}f7iTz8h8%7vnqQ=iR-h3a{nmSH~bKom!l~08TKQ{ZN%?u5K9C|oRS+8Znvy> zo*k5~4^3x|et8eEzoo&ptP48=f}rMal0-QT+@nVFin~5u6=TB;v3b&7SwnfPm>!%E z2Qa8ecQ#u^7M!%{r~>-=0;P+V7}!bT4M(DGA;+mna((AvC(N92nHZ%!4nyHXpk&Dh zgcY^kbl8aXjaFEr)9=u1zY#)>)&abSYe|EWv|WNE+N3G|9BDtM!Dd@Iv#xdb;nQ9) z?O%^gk0XdysbykbOCoI_Bdd+oYE9<~F zjo-!jrXd6Bf@xXjOK%(ed_5V{UDDs96|4{MuBImbNncp?5K*7xJ)8;arb8b7K4!tc zYWmqIVx4_!E>?Yne1n)oebX_N_K(Hpl{)S$Vhy3FM?S-Ill;-bu*a+eKBp#kNn-Y^}~nLPE<`6nBm1F&n&g7 z91|Q|0lhwOq=tAi8t)AuU&?@9if^ z+lqpRVT78l!{)8y&)R*6}8diN?WYqGR8$m3{bNa{jps_&7AqhxZkEEi>fZ(8E;^ zAl+T=`3W9J=Etnt`^@tO_+`FTwxW0s!<+eP39{@mj&TDQd_szCm$0^;;A5s@pXbHT zkZNz-I;@oW?ksa_UTabv{qMn>&seeNZfR>GUR|nIYJU@lIXD0i%5ZrkJI5vfT~A0W z5|0E>Z@smwN%_KpBc&aTJ5Cil-b^{_8!SSM1dKt-31>8G5Acs+{50;k}U4( z^c6gQi@%P{q?;OhrG}D)FkrIS=$6YqC#;lxun!MfM;rYqV)b2<^nqhPxw4e#@qP;G z2B=r)U1deWetbel9gKE>+CxV0X5KbFziu@&G{=7A^X|PzLN)vt4eUPL^BMVc2KzPi zx}FXErD>;mBmnM_Nv~YKAL1%ayYlqD@4q68H{~)O8{v7NQ`?%wZxoZ zxv}o{($*Z9)r@+DmA=X>C7howPo-uJ6lkn8gokN1d?b$2pW`Lt;zO6Y6Sln8_1>h- zHyNftUuAd|3GgB;|C&WFK2pOauiaGXO3e!IsXY$YHYT|g4qkqawfF11Ul!I)Sn<>F z!|Y0{K)x!NifoqUTHL$|rC6#1QPsQtaE)p6P}$oV4^?BodMNRCq02ST zXNB@Gk!pF15vTEY{(go+X%6rQ3s%cQdM!G&kz)T-iDDLcLCig_A$D^kc1A*9XNbSb z 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�!2Uv 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®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

WgEp+!5GuJL`8=3&jVuX(=~j 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

tR<=^XqH_EHg{p0ZdX<+gHJPjW$9I7^e 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 z zQ|g6wjIcdv)!bok@<7m&gRuqBlZBz^$>W_2dQ#`c1d{YQK`IUL)&^2xh({Dt7&8RL zga+TAzPv)@1nDS=>=>j&B|?_kD>8CWYOjbOTb&Xs2-&KX;PbiPYyBW!26{=;nfSph zKbl|J@Iqd`0#ScX#yUfPPKGGYDe{O>$|WHv=Wwwc2|-Ug_w{~;FLT~S?;(9mcn@*L zfxegB`+3BUQ3^vlMwj;O-lPVXq$`=nNRpRG^1Y~NK_lOZiewjadoPDaE$*ALoTwH4x|!P~=-;+ewSYpNFumOaW?8g_V)pZOV;fPo zi~Z`2zP0G`1_K=Yr#1l!#JMCNWSx09k-*5bSX!?5aBZNmLG{&M0Y+Zl_6ZJo2<;Sv}rC0E}3{G<)S1Cyr1X~wiAu+Ua zHWmKP*ZA2qJC9&%{7c4yBply&+5r?h=fllISfKc3Er;TH0x2E{K@=H!;1E9ur`G%c{AmmZv&@3^=Y-fumQylf` za4DE3nB#yp=T#H(z$zrFMC1;FHa2g6oRTly34yj|?}fl9-T63sz7Xy`@Q)6qnth}$ zra<0#gVp#FqVjzmjc;kU)8-`t+juNkbsNXY8ze`a*<`(1B`>N8YAmL(Z1__;_G3-D zA~*($)?NV^gS>WN54bRV9n{l3?2`OW&GxXd#gXG%vuW3@xAD%)MQF5>J6cKR0fr0F z1PIgaG8|69OM)HE5i8=x96Jmk?>}$5WlWk+lKt`Ewp>~DsbBXCSA(_Va$O*1z=W2? zr`yBn&G2`E3vNX$vECWZh*uDNSf|G9p@4PmgYgl4DbpRRe+S zD(&M)F(&S93@f8Elhjjp#nPv^IB_Ahi1?r_Bki_fD*00kwTVS+$azkojL}4l#-{K_ zQTDXD;5^6;~@rOB9ZPXq7k15ZNK-7dqK<)<4%> zC1+Z97CDIOUEuP zkISDy9x5bBg`UT{M;7+>c;5(Hcrt@%=5RNYo1p7fH_F|DvftsZBV9;He4t-X%Sh0QijQuUq{dU3Ip~TDvcLI2 z%}T;FhG*ZVqw#O`^>B7Ko&2TI&-b&x+(~J28v}kLClvAQf_U84J;96aDGgf^Am*Ew zC|4SiY{yLriW9s)1LC6$zRovlRh&*~Vl;Ybc`(U^Lo;$v9eJDmx_12<73yJgb`y!5 zkZKV@MlD((V#>0c&$odh zndlnx!pa6SG7&zS`RToE!{GmDvwny?8^jl>v+;VF zJRhu==`Re{LPuU2wY}u&@D2Xh(?OYFWB~9GOH(m}jOty>flJ>VsR zABCRiVQ6Joxe*G%q3T0~0~WHfOhpf`4c?+tu9Vnw7q%I*croGRSlkIp5xiwAOb-rr z0W?e(R4uv^tosX*PPdsas=&)TmiR3b#>gHI z%rme9?Dk1=2+I-{ygj6XOU&u&xOa@Bn}mmXdYq@P`P;mV;V)zOE@%GY#yPQ=m#D}O zZJ9v*Bqt)Tv`4&U2HOa9W#Ai!MC-)e(5{XE&$6D3{46cc&3vTEeNYF7@&zhkgz zPr2rlV9J7rE)^9cp(SOR^RYQ4VrF((PZM<+^eb>e-MMTRo2SlW>HJJ6cYNHRPaZ*9 zBIk!VW8xI)xElrr<`HSMWJ0h=BFHyTDt^R0xZeor*$w%a&T-nHF;GE#)nS2NCSZY7 z5Vsm^FpGC95yZ`p$2J$)8>S&%IYfqi8RJ^0JLSUOJTb}{eay%-;zH!7dY+(qW1z#} zNzkiL_SzR+YCXnX+TZ%<%IRyd~% ziTzs089ynj)wB%C%_K+3*x0QM~MdzKHQe=Ib5~N+5;-`%jfZgsP}wdrYpz{dNV9aBhsFFSLSDkF9;BA6TMH74m)E{?EMkfLwv#f zZT~n+iTZ|EO4l>GQnK>EN~wCrR7#c(rxafpNj)UdAnMO189!OO_Y9qsE*mvj{VyWz zl}vcyaG9$(`3DY{>B{+)%?R~TT*@PR(b-GVQ?tx;Pzjr)Epb3e1|^atmjaWNWKy6= z^2ph!B#WFN$)Uh!C0P_Gk~}OYmL#^QBvrzsB?%L3Ijv{m%85O?oLU8IeaQp9x8xU6 z_oOXxj_KelkR-W8%w>{1!X@bn*V9Sr0!2DvVp(ZEUQ&EHy%)vyWnc*UO2DGt{t_rY z?SuG`mNtKk?VT@|W=geqX_j>>W{6y@!qHBIfPBK^*BZN3^FzW!K>$&6b_e@~Te`aE z^Spa}=u`vee1t^diLZDlaNg4S7%C|8umiW{aXR_72SQd?yDo-fYZsiaR>$hJJ?P2P z)A1D=N%lO9z8r%@DTaV-10YB;99Ph+9H?;nQN++1gV&&Reds!%EOA4Tx|!!dV4-Oe0OpgZ&l@-Ew(Y~ zsy#Mnxi^W+8wCn;IbD$}e)0t2p#O5`Kk7~&^If~F_d9-flA&RonTGTB18V zn$b3k+6qBOjcZ#EuH0U6;O8O5M0N5Ji!*&gG<;jp?hjS;Ce0H$l)OiYl5s0|7>T#$ z0Ah$oU~QBn1Ftn1#_#^{Rwp3pXp+Y#Fn)@aLLIY{g4VV&u1955M4)8O03>=+ek^gt ze3Ztnk4c-!n81@F-WBL`s~<^Bs5QE@O(U;@Fk|GE53wdu)47C|9jB5#Uj@hALM>ew z*-;0{TaPfuA8{F9hRP!Xmt{O;n;#gD{G2KJIzIx93&iTZali8vH|xx1!*e~D;~`d4 zYUH}mt}?zSxOhHl+b1bQv`9#^0&F`eGS5byhJGZ7C7TzX>EIg!@ z7KXt=9|w8RrT}w`XGT_l>62msODx_zj*Y%A2&35K8ql2^7+sT2De}MTUpmDF@&xfH zuTazqIai>mT>UCkvNU>iz(xCHJlLd@LZ!ny+iLsd0Hkc9>mWFu&g~$7yA{^`y6lh1 zMj^c{y<;HBu8@wdWVk?kGvkYFgRx?UsZRKXA=(`4R|W2GW(4o<7Be zE0IH&YxmHu@w7XdL?>Kd#>+%fBpRR6ZrKzltv}Ju=~iYtie%M{cI0gbZmhsz$xDz! zvux)Z87C3PB%r`oc^c1r$*H2idL`cxCdg*bkdRa2;Py8!tznSLLb_~iC(G#SqV z;CgU32(i!iUnJs+f~&T6S0DD6JG`v!-Aq9ozwtWz;~yk()pvd0J=KQ0Yv~*|ck2o> z#&}K4X-~(k&7eN-^5%BnhiGazK+HEeK=_)Q9PtXm0Gh#$_uv@MAy%;zv|yfS-Yq1S zPI@7xxxJK_pSyw#6W4#s&sv5=D+Yty!3A%6lz`{7#AFaj#h$REXxOcDrWEqvoN?Q; zyrz*CI&KS_S8cbi!zwT8s+d*$WW3p}PmdKnE;`eMM<)bgvThy8Iorx*p$TCRI|!gtLw82w0rK34^Bk-NP) zpt<87m99hRpZ$&kR0^=<092&mStBR|lhy*hClU8Wg>^dB7S1lVua^t4jZkInpu0eBVdwiwkl~;eLR6v^rYcoz=IELX?< z)@Acp{ZX8f>?no)HJRLV2k~tx0#iLHtzw){B=G5vi z`!T1sN7;@cIgu@Q)Pm=&JC2;@80<2453UFe3ya+TTy-7VgXBBBP9Wdsvm54;(+b8Q z8ajWkj_nJ}H_s&hf2*N3RuPlE+GB>elkAe%2G_5oU&8&#r3C=xnx9whAWmb%!FJ8D zg=qnlijPDzAQp~$#xf%-P|!Ca=;7FIvAr1Zc?Y@0Pwq_6of=pd*TpM@*yuS;a=)<2 zng@%$%Gx51Gfa(Rn}XdiJJmUqAlo8c1U>Her+gtcrEsM@oEPq>LS~m-wWvQ7LI6GU9)z!yx6^G&qnZ-S*fOy7;jx^)N48 z(e@D_J3uxTBBwh8(M8t{P6z#efBp4eVN)hWB3j-nUZr_i_KUJvva{7$*JfRrc|8uR zuirs%_TgO(Ay&mZnsCQq`aVMKdIv*A6!f_v2E(^=AKLlQo8x#{D6R#Sv!Wkc$^Z)1vU?0tiv`<5i|r@{ z1{fX>wQ;nRpta<_cHDkas&H6lfITTQBpiZ6^ANMyoXAuOn+Dh)+57>4n2?N{(2WaO zj36cxf!TdMyLF@3{ay|EcQ|#wE-}_0{D3RNZ+9e{4p>F1>9n4L%>B9j)BWzq-UY|U zHKfHa{CE}t$B9(48=A|Gdvn!wR4z``h{m-cI+~)#^0-}o9gzay8BZ7-xpdKYB$IszN34J6B)mHgfv@)rxX(Ymcqh2 zQrNLtht6bEI=}OY!O(Coq5TcecLKq9#lRGNK$9>`g)n^33FReGfXT~`+?9&Dl&@yE z6`NX+$V?v|fBqzJk(RpC0T{A}#~5s6vTl|6=~vwJwewwdfA_^jzD;I#IO&cCV}aa^ z?(S}eG3@i`s{-5^)DKMI#eJh708tf$k9g64;Ek6HBFA(tVGe?VK>&xkq#!=?JkW`W zgn{G(m?aTBaa<4Vzygs60D37H%Hn2VJBO8mmNKIz`M2-~%NMtKZMLw%x1k`+t%GY{ zH4k%Gb9E&YOMVMC$ycx^1peHSRIpXR)IJ%1nvvdq9-?&}MGvn_ti@zZihIT#gP^QQ zz15-1QOJ&ps!@kP{O3=KcASgUh2m~(>|gLG9a67~&I)Lp*ZuK{<^8V&z`UlqK@or3 z($<70dLl@oT?UVyVU_~nogY@!4;XU7tqU1*fTb+9hKA2NZo=^(V8mYNTz}}A^J-7Z z;0xC{XB>}OoPcnk0S$~za)>%DMAb%_W1N|~=2UJ&R*#aLjpa?Aynf46sIOB+lLB}lv3sN{wv_~7vr(fm1vcH+i+eQZypg}Z}x z`5Y!$Jcv64Cjf1HsvL6Rs|>`{$Pt&0n`YnmX5)ER*OT9G>f6EHxBC9})-9|C@O?P_ zI<$bvbo6yJrX0BT!2CJ5yPMXN+rfYChXybmUXP~3t2;}>$pc{Y{q}xp6OC_1X}(pxf!>4uQ}DeBJ_u`P?7hMt8%>{oRZaR_Xvme) zCaWi3zQlkplbf5#A2Dn^DM2UPzGx_)4MoQHH#Z?RxWAhiLg^G&Q=f<;o{Ujr)2bva z>tNZD$5}MWu$IsOapQJHVlsgC#L%8(9;(33%w{9S+o@s;4Uh&3OZuEZf*WEp z@xxv0`W*oLgg#&4vYxhfogjCA`2nTTv5ifK|G9Sqmn#g1O!NeagxW4j&`0|5TgS>B zA3De6I+jqvyd}t03C7I+Fn@L&l{;d)V=7g~tdTUJARcdVOg3qGDOgXESJITknk%akm=D*aI<{&v zl+mgl9;mrm1q4adc<}2QKyY<~v@$WiiKTectjrKu{C%1FszsmM=!oSo5t-D=e6?x|mExm}x7t5FAiSlqBj+T?1PlErC9m&kQ@OYr- z%CLBsJiY`w&nR~qGwl;#X7qc`m%GiKp*^dL&i6|<@6{F^(Q6T7GS8~F4dko{TDKBf zC|Dxh?MavnlWI~KKux&zMG1z`5sTUHnDuVyO5p_`3<>?YPJwd5yt)UNR>lb-GthX%m#4VLfTK4 z8f=l+Z;1uigGxgl=Bt;s)3Ep_q1aaY;@6WbJIZGq>pTON0()}I*tc3uabjkAI2SR41-3Y8{AwYOjkJYoWLVM9K2gtG@Y zwSCNu7Zm!bw;;iD>lO+2Na=n4wrE1;DYqe46MQ5S@f|q%b_Ls`tYMO5!Lr~w=$BKc zv`3mE$b+iqM+hy1eyr&C!X*dI=;i4L3Dp)b5rM$#{J4wun5fqN{N4}4Rq**JLtR+r zQo$`M>JzQ6l_l`G7yTi!J}RM`o1Sfj>{{m)cXgO>)JC)p&|YVF2N@H!ZzhsUhG}a* zA>lBHNQx524x4$qGvh;c1dI*yJt){8VU6v$vTYGpobn?&pHy@Pm7yp`mEnF3E2wKz zbTe(1w9y=Jn5?i6qebz{S7D^Ny{f{2F9;BpXTwZb4qw0U+B&Yxvur$aOLT!FQwXjc zY}`LSus{!>$xmk~8tH*YkQ)tq?xy{h#L$kL@LlXn5&?8yhY-i_#_92P>5}PgOcC9T z&9#u{S5&GI-8}_>Sy$Nph>yw|3wgUG-6dB`LN^rl~MMx1@Y~Ex8JzA&@$6O zTLHR(7&w1>F=s6lv_cm}+$QT*5H|_u=hL2VzgNxTye0)tngl$+Nqb2UMpHD<>dP*U z6JMZ_r{=h8HW5yoaC?}r4;qybI43)y#18~Qii*80Ol8H$4y?>U0?w-^2wssQ5G%j% zgR~rR-gWbbBC0wZ_dnjat?If&5Z8~RwJDYrlq+psa!4~h>tbhJwV=k2g;LUDL;7kURaj1(A`OV)#9FrfSr4ph! zrN-hLW04JJ)B0keR8+`J1vCQ-)lcmAn^Fc5+!Vorb>fhxyZTgNSo@e;rnycr^jL&O zmG@BWYZvI$DhLFMxtjz2E2V*wU@SYYa98-Xa{W~H5cS8N|;ut+|_PaGxP%zGfLB|{vWyK)d z?hGk3JA5&6Hfi&n)8;#C^Z87F{U!d$ufG&O;kuDCNL&1zw)i<+EC7f;fpw$s2{$Y_ zgS3;*X(yevlYEvA5PibMOP`Qoc22tWoOJ6s=~fqya{qUfImvs(07bjrnf*CnVh}BJ z4`-Z2Xz$}Mhqx|`26WhOHa5;zD!6zdeP)BdE9VDszOY2s=yRq}Wwi7GQt$!q-DfuiK;)Xv{kn(5YV`>^EVaOCFe3nLK*s)|} z$y`%{1E{u<1WzrfFtS%c%G7Ro@r9hXa2cJ!#W+I*7OsiIhHLU|qL0D@z+AvvAP-Ov z39gR)=PeUu+s79mW15Wx_#!5+ z_{#~V0CHz750c?mNN>iff>izzRb9Asg@r*Aq%9C&Q#ZB>#5q)gcvX~C(Z^L}(0Pa% z0Sa2HTp>-RU!bra3!1j#8>6;9F3%y2i|`*h);)Y;9=ct+&flNNFs|6EAQU@hrgx3? z)nq!ozojRXH}|u<;Z)#oAX#4zuO{Dbr^DH7G#LwGH2!^X1_D5Sc*|zPtmp^6}b#)p_)AvYdZWgbj@~EY@zW$Kl6R?C--3V z=pB#SNmZPlw^N8rl+v>bI_sKf9TIvYv7W}*es&|qtx{`^EL~*D5qcu1ewt#F81j;> zQG2o+6WcC%tX@7HQc%~Xklj3^>E;P!3sI?n{skjC{6y^FgI#;_VV7ZmcXJ;`CO)DI zV^;nc(tOH%9c+t%p|~x7T1Bk zV=L7f2uaDPygR)0M{WpN}|>*PqS<%e1Rg^how zRfnevCuawfumR$}TTnYPtN>0wPO#W#TYVS!`r$BU~di zd0QVabX%{q$szYc7a}y=sW?D5dNr27=09wVb&B0YY-lcHRI8D!Py;q|&O`)YuTruJ zdZRxCr3bCDI}-oR3!z51PrnTAZ|>^fzOxAeiTxf$ZwFt8bq4tA4gwq{RQ-80iQ;3& zC2@Q*z5O;AON4eF3A@eHZMwI2-y}Z#eRQR#5r*7N@5fhzJB?0<1Gl&8cgPCD?PN5* z^ZCuL22=g)A8u;K$O@U@X9r#*3U>kG;|KF6>Zi95P#hqoo%u*cV~ z+43uS@`*rE!Z82GW(Tmis@Fvw+9JAkLz!M(B-4cF;+AdNLy1v>{JU7M1+sNa*ijxu ztXjt}A6N8xpB`L_cc}yRv1J6Q3e(DiX#3>1ObVey&aB;X{zpTuLpN@pu{P2Jfks!7;E8c?2F^xzEQ|^41R0JIykn97TRO; zO!pPX{YIvJ*PR>Qeu+Q~%C!5#vE4I>EVMtL8$6f-^@_=Pm8Kve1-p>a*pLg=FxHN1tp4XyyP*u!$FElQyi-cD@y|wFU{QqISjnVqH5#=fcJ2jkmBg|_ zXr3oo-NL&sv(_DOd8s=dGb;QTyBhvU>j-|C4R)(pHJ;YPKZ*am8n|_3#-;;gu1ae4 z=!`I*Ax}PI+)Di4T<2G58Edj7zL;yZTGJuANhRL!p4N4A)i@}$NGc!i)P9dTJEe0)5_q3iaZ zXzwQ9M_2Wi(GAy$Ox*nGP8W#5>m?_fAv(Fe51DZFG@Y908Q>`6LV$g98-|wARc1P< zwF0-($^W`yf5Ul*;-j(8Ne)R4;;6pjdb zuA$s}h#MBqYpGEfXzKAx_!>JTdzfaMnoIJLxRgBxru@36>UF`tGz-b3knnk8Qj^vJ zprzm}Ev0V~6Du3L*BsmuL)XbtZ}?5+@FIRR z$`tDW>s>(CNo*_`{TN(TZ%|RqB z%B``3^CmLkKb$gaf1|Ubn*L=60(J z`jy-kZZoR>7)-xcSCbpc^lte5meaL+=&3Q8+d6A`!#N^W8)n`hf4kPWKPVyc9b4^n zMtVitXiVc_s9XqIFp2v(NOj@h*DFi!VunmwJ;Y+1=3;84hr+157HGp#^kNz=c!4@b zXl+gWYYNCxh}_f1sU9{*KDtUwjyDwkzsVRWXG7{g*UfGiQ77}lwdXkkJw07E_M4Rt zi=?el6Vu-8jfwl!6pzMu6(Sq%U|3rb?LlWAMj{~JRJ8ogm#|X}fY&bT6J#-;LXG=QIosYE$&cHlaQ{-eQ>rk&Z`vu(z zY!Tyqoj%W(vLcNlEqRB>vd`!F7dQ%F7|_WG2q1IC^i0b!%mjuw2Tg zql5cUr$)Ic32io%n`+^!H!$uLEUgqr)p@sf{ad-C*tP^Gh6$k824A?}H^HN?a zkahu=PMVA&iCo+Z4kGx{-?hj(&ru_qWI!gv3}P`=tUk`EbzHZygGQUs3P_`)Bvmx0 zQF&x4Ziy?QoW=9meM%aK!x$Ybd?^T!E&C-f$EZ?2<3WQhx0TU4c9J^S{j%htnr~^~ zzQ8!hvO_!@9L@Mw4KZtb|WcE0I+W+|fTo?0^Z==oO{IJ9iC$BdB!ZQwj4 z{io)~<)hoY*JAVwr~I=!twN2I_7dh)8+wOGmW6hQ&3qa6^4Q5G)p9EmmIybb&?YqmW);875AmJyW3o`t zWwVSlOe~j}*DRVS5@CB!_0xXww++|9whERy_NK|~uaIUio8-*WLb2RW-dkKz;eBLB zCM;LYi?a1{(aGkIXw@M7mRdaz=*5>}lYcTX|MjnT%> zV|$WfSz840P8=1?yUnqA**~Q~+OrnAVLtFqBj>!moKg_*XBNF!775Lc8d()l z5-yJNx`+>&bFwRyZDscyS^oLzP1n|) zhtuOh-6Cv+bWSAvY$IgHO2WJoNd#|?cM&57*^Cj>pba%nL6v}XEEAF-u_Y9gYYAEj za7b_epV9T|RmY&KR2iYG7VA2IT_j*wroul<{E%*o7rw9%4FP3+kpc9u zFm=Q^kqc3MwtCO0h9Yr;<*#GpffZzltTW&rA(y-0T{_viH^c5|(r3z0c#f5#Ln zJlHJ7dZK@Xw+eX&7v%x1_1ey#nzVsBeT;4->5I2ITyn{`*w7#kF>UJMre`4sg3;faee_=E(!I2mSJ7J1onHbapQ%ulr zQ(eA6b!_XVj>6v zi22DoT~*s(7D${$Ou*Vz2JTgoj&l(#@rJtNeUx%zdZvt$X(9P|KtsVXyYvesL<&IZ zkpr^<2hid?Y$j6@-qv4-o5|$2``avB zPY0rP0_`pl#McWLy4;HAlr`jM5)le#WU$8Jr z_e>i2tOOgbdnFEOdjz1FX8}k-onup20Hq)R1pULQYQ5e}zGj)?5_#-SQv!FxfWd>i zuUC~@FG&B1Wx=HIiLKhGf6^#WF@TX~G0QGDYH*r}U*!UL*H&x{g>!_HRjKXNW|4-O zXz4E!Nvxszg}52odR3FHXqOPL?J*Mfc$V_f;kXjLNLm8oi!5cJ#0?YQEQPy926!r4 zv9*m5MsJ~5j_n0>KpooMj)WR{j5tp|*w-vxWA6!ajU|Ge^OhtCx~8%0!OuZe_JhKx z_&MRKid=-nec+5qW`eC0BUraX&V(*Z=+umXgUHyeHec^=22(_X(g9-M+_9EaI9%8r z{Pnnhg)1R<{KWX1NRG4Ht9m-QxvBI<#t?rQ%Q%WaQRgDXksIAI&E4GfWE{5AvCx{^53tE{jT>a9(8dItu@+_4-M)5g@OlXg z{^yO`xJbz9Z_%6M5u_qJr8AD_$8k}EFAlB;w|Ar8haPbAW#+?QrUTlyv47{l&o{1l z(dq)9+1UNeo%%lyu73MEo!pPFt1lDRR~&?t;R;ipYI`@i8{AO5pt>hLuZkcy|2MIb zUqa;nW_Q;S-SlP{;#LMgiV*HM+=7$q$V&9Rx=qs@!mPGYxXuYt*Y;@J0H8dfxCIr) z*Jr(ja67jf`Mi34y{fN10b+s?T3t zr20aCF|mYkv5Oy_A7cna@t&tKcwQX%ZE%kIn;PRi=qJfqSlvIFo7om z6+So{DK5FSiyo|C@qjj<$y{ArVNJ=kpGh+P(D9FI#Ca1>0bx+lOD?M@0<6if8 zKCSkzyXtg2@5tzuPskfwB;Pi@$+{_g$KznZt2?R^)~eH|ZnbM8aeri-Hy_q= zH*i>!PL#9)7m9`Obdvw4Icg8e3qKzGHsVgmZXmGFFTBs00;TG8saO&umhT=)4I%ekvm;nxnXQt%Xm6H7dzS zbsN-=Ml>h`dL4;V*h0%EKa68ZlSX8UM>sao#+huru!i5K%2?Zm@5Em{8|ju6qZs=~ zjPq1-8sp=+H|qGfKSh0(Ji$^?)}xWk9QyikhQk4XFMOP}{huK*tezKq|~sA*Y`e@SMuH>-x# zJ46W&ye=J%N4NKI_IWi7QRMF<_jjY42$eucW)z}>I69v2dD{cNOv2BY>dB1;1_SE3DUp|)Lj{QRvX$UeT$w_T-b%mrS}Q;hxaJL zWA)yzx^)5O3~F{@S)@(*x+0O03KjA2&9y$lmkf?c#Pe@Ey{;%Hacs|`fhjpXWrf?c zpsBF)w_1FIrUxs3ERS?rE2E&=`%$b|VC>m~1Q>D-mFXKVJUGB~I|qxTYK>mj#(oME zV2M#&B+}cEa$k8at%#PlfTPK!5ow5er-<^?tP|MZ?KP|UG551*d#cor;bF(a-~s_} zGNqi^dvm!8tX&i-(lg&GZw`7!I?1$p%fdHvy*oQ?6U4{B()fkeCWdR%$ik}y5fgryPlb(#zx{4efx~jC+lfU zbNDM@|7mprns3&$sP>ZewkCNl-0)24*)W>kIfA1+7r+c_9P8mW#ekOE6+N5o%_J=z zrDWR)UBnN3geYI>a>|4&_y}?L4plFAkduCpO(;~bk6*Y%`hkY~00)sLy2MK4)IB^! zP8c&6muWp$@h;i>Bg}06mkE2f{$A4eKVISk3N2n_2y(hhoWVuv_vgYpyh33dUSb*w z|@Kjq))02wlc@6nTx(P++Fx{V`DBHgZDC zc6@B2WSqu_lD*4p^rn1|>nJSq7uk;wrG1|RDeOTdR^(z=zQc<2Y;(OlNvTK$<|HQz zT*~`&?>GPA{n=FDSPE0#vo6Z7yibqPElv+|jgj&Zw9@vYv9uPkT?!`AX#rNu!^(CO zRFDBCh=^0^!4*Db3o-08cCM&_jTvdYfY*Y>}jCsQ-C76gaD&q?IDese3)iXQkI83;kesrM^ z3j9ktD-(X@0-EoC5(3qI6b>QJK?!IJ>Hoqz=-%utdsIXfy1+9aS!3#jFU{Z*g|Z}B zF&k+le)f~4>gA>iBR*WLCCKzDuCH2ICkIBV*hGeNO7N`P;Ds~EDjgZ_$v!DIJBwJ( z*Kk(Ftlz^ktJO2}GTy38S7fHjq$Tbt-A^vEOJ(9Rf0T}|oFPibZh-?T?ZB4hxv-7L zWTov~`Jn_J>-m@49$w|%r%GrF&7I{_pdl72n`KP_ib+pBS1z++OXYAlF{j;^G%QAN zJAy69Z&B<5rR4{>$NdJDs*kUjHRRu94~HTz&GAj5kBuujf`sPv!=vWPcE8)*-=dEgU?g88r#AC{-bgizzYs+a$G`t(Js89s z1AXp}F<^Z>#DF---_H+Q$6Y*hc$ydiUjCKDf8y>W%?K(cUGyVlOnpl4_JGN>T|bKL z;3at0Mo6Ky+lt_V0lf(9jp#*Ce_5|tml3I@y$D9HY-1`vK=8g)r=P7t6piczvg@E= zM38a`>osSM)lt@!j&&F*G7R~& zd2(I3I7GXUp6QDSz1K)kvQcJm+Ei7`vR(bKmQ!e6XDL+P5vgVtsd|dyyFbTdlAMgB z#2gjAknvbz=J2VIR}Kw@(Y}2A8nDL?IX^)z^SC zx5QbtdR{3f?!j$~WA(z}E1wEZ6YPO2$&O$Y#}LlQ3C2FQG%Cq z_q#%d$To$PqO>RE*=JiqN^)@@=ppV|{!{7;tA7t^aq;h=E$F!F7yK+QtmYXoUG7UwnXLAClSYgE1vIS@ z*&OsseW}T@()W##{^3&|GFGQBMJ-Mn3=PORU!l(G21wQMyczy3j z@AL6@VRg@z1iQEwSFwk@Y{}A|mCdZ|Wn8A5#Gz=7e}|;33~Gpabg2wQcDq+v&-qv4t+|-ZC4z1L zpnZ2Q&SsCp$QmZ_4wK9bW%^6Ak*dcRaX?f0?VK9-lc z>rB!cOq!;wwUy`4NB4eya{usthC-ONc^9qMx4 zy*It(%zMd`+%H}XCs|*lE$7>FiCoUOhq#<`>BhO7ZHY3;GrpTnvWbz!l+pEdF?mFh z*Oku~^Ab&8 zUtZ|SzOh$al`e2-v9d-nog&i~PM;y8njdav_&XEn*0=kz3G|$;NPjCLPVGHcdK`Q+$8=GMAJSq$`V2$4OTegDT8i z*3>CXTt@Wl!xuL6OZ)fbJ-cV0j+B3rlo2jXw=9>_!*lwc$!##{IVMphN)I#%I!PUA z8YM|1Twx!HwU7!sNlcLB(5t4DWYkO7m!BMs`?4vYoJ;QkFXz#B?kK)Kd^fA|oVxJl zu|LNW?Z@(cr>I5ZzMMZ+){m9)gXQ~R$w~@qeOZ=hd-CnirLfutb?AJdwYc<5W}f@z zC$I?Fld{}|2{uU^UM6P=EhyCo^ATbbZojr@+>PKRQGTdaAy-+FcjXBFgCoT%AMIh<#R$7L6q4zF$o zqwnNajofM=E$m-XTJ>}#b^_^D8mINn7dRSxFK|4#UI^sIe0*@cV8}xp)qz2IMjCgz z0}Wk8cKSu z)tRdJZWgD9VMe4+iLh=az9YrEVn#{^BKJGI(Gg!)YzBFMXxMuwJTmOJ^-?_rWjE9^ zpG5MLycbdrP3%Z*zfo(_#7DDpucSb>1&lpmT@z%I6uxaSVbRN>YH_jciE z$N3_K@jOol9+_w^%s{!I6R$?%R-0Eha$z$a{)YqClkreNchkRMPStpaZuu`g=M`JQ zrqkT9A1<>THzHH!p$qQC1k^2zLo&AvxZNspo+3=E_pL&1PVp5#)}#U|s$7f0o`$|P~Mz!c&Y!pqh|RQ$ZoZA`oY zg_n&-xVc&VfQKN~a6Z$^Sn(OWT7^h@P}d{1IC+T*f8N2%zF9vdB?!NRxx}1diKYqP)9xF=2`}4(Qm+gs>;-U<3ZA-B-x?fPa@tz!ga zYFAkA${~Qn3nk6x01Yx<6IFo^vBqX17!vj#U?F}sMJqSgG6RRH2MOJ4y_j$2JKeA3 zrr$N%#!@Qpo94i6Bwj#xb%M$Q?f^T8j$rStyCcK#hll5*?wM?Vp% zm($kY${wNDFmlca$0)E5a)2;Q2y;8?P7DWJe(dWB05kQ*Q}^Img4_ZigFscCqxN%89#9b*X8Qh++C}6AloiwymC?kWilb9avLM4GPJaH~*-NIFag_>IotbA-AxPaeDsdjO7iJdCjG z{O{y`Iv(86SyIDfs-re64_v;xGaX!yV*_FT*4Ndy!Hhi(46ntf7a%u-*_}8b@Q%w} zKo6W%a80>uLxfz9u%FbxQv}b^d>T-n(a}Z_pex+j z$1vLrAvfXYQ*gI*haPcq#~Ze^ia*!;6NrbH?U0?lq`RDPuN<8>1DpwQa{>bYUrvC(*YPZ6Rk(Y&;mD!#U{c8BqOf4xH3-`!{ zQP_e{cASM`t(r}pt)pQ*rm<8R-qk_n3ezJhXpQd3Ngq~+ zs^(9H^_IEdFkm?&UM}F5o@~!hL$V1W;hl+L!|Gxk*zqB!v>>;g7n`VCEh1Y6^Eck1 zsdvXG`wXA)gcrHSo^gwx!SrtA_9eJz{``G(=K^%j*2L6;)+POd9M(Nl*X%~H{`}Pk z*{hC^&D`1QyN}+Jiysnc3dm=x{(M?|?&KIRw>7}f(6MgB!|=83ab5y> zDtMXw58WL~SgM}-m&TTgGkNegO++$i)n{tU+l}tAX4&N(wk@1rQjBaTJe~bcVn=Ha zNsJ7PE#Y*N=KA`mTb09NqAE|ql|x9nR+CWs6w5Q5L7_HsFp+~(hVbXEWX1RJAlC9A zHut%C^6ZnI2$=U|(SBeO;%iTlpy@aw5!a&^kR4y^M-prAgRf~>h1;#SD8&*^0y%zS zMTg%m`670=*iEKKK}h2cq2B3kDIsGd3>j!4-z1?{3FkK!wb2gMb;me?@_Fsft%BP9 zb={BSC2jsvPLd>lmOnp@T(@=?pN&t>~QhsBv3g7 zosYPj!wky31*SsN#?qn9WJvCqWdq2&g%8dw(=9X%Wg`d?K15}jeudb>oiE*3DN2_! z0&<(s9-+&!70!u}CwQGQgG&W7nhtYV*bF!KH*d65#mGn%RX;?0043AvMntZZZYpa* z_lGq3O16=jR~@rw$#S(?DsI0E`TAof=?d7Lt}cP%LIFmQBC6gWSIu#QB1PJ>l9j)_ zk!n~C?{?QU$5WC(4#E~_56EG^U(qQ!Ru?96*MToy)c!+^6MZ|+!SJ4aG?*c!r$^Qyt&*Oa zHp4`FLaF69&BJL6f2V%Sh|H7Ga{oit`X8hy^(K;8n@e4IW|NPw1X}E9!el*B^EGh{ zQnn#3$jWg_%f|#bKV?9-w$R4Vb_%9yk%8ix6oBm4B6Xp>i)9)|h_6@m-8b9|RsU@QP~gskXi3WFHCB%!j_r1J8BZTOA zcWl-zn?-%=9z2hg!^qSy$Nfnft5^+@GR)WNJ-A!)y8zV1w+y9)+e3MWb&YdAvecx0 z+Asdru9NAvAc~p|f%{ZA3YDl&o)p}E1`O#J{=<1u0>rnT&CdXBeo;ZvG#Pmtl@L)N zw~p0ODGEd8FYEe6)LNNj4==3(F)HIZ((NTpj64%#4_+6CFNQX|r8{@v(1w_vGrT)k z`)Oz!&;cKj0~kSP{f1@%&l{$<9X?L$J5cQ z1ZK4QoqNA$6}VLJ5^4L2^*a5y-9v7rp0ZhZm|q0FcFNfJ4tim3j;l0YMd8& zH~vj@tw>t#pyNQ%u3|9DMG41oQNu7=j+~s$3e$*13W~}VB5^9_lia3_8v?Bg7xi0k z6CGU4N6>W)b^X*~kOd#;3@5h%DRABFnxkVclbjX2j&8!T_M9&_k-n9S+K%CEWV!K; zPm$2}0k@8EA?o<3U9)jN?rc%<-}bPC_4=)wDeVfeUw`3vO(&CP^^*^Ms*t|+DOkUE zRXshPXp?a}>bBzy=f}AVK5W($-5)v#IChPj{$00Uwh;SlA-$k2M$#N%miqx0^C1d} z9>d(+c=2#unj+xd&EOcqb2fswlW+>bvzrKn{h!K!h5Z1baaTFean99tnB{3x?-wU5 zZhQgZHVfQe9m`pO6JytZg|{x^CHa&$v(I?5XkyJhaD-$ZISC6zE7a zgV523mOivuF5V#gqwsSG8}Re)%$XbXrgH`3(2+x~G_Duu=91^dFFy1?Afz?d{T}x2 zeC&Rq^Fcp9=x4X!pB6t|_YZzf&qPT=GkhN6kLsB#`z-Z(mRdbaou0Mi&s^?jE%mdM z`B_T*?0CJdqsy#koV}XX9lj9m+>VD3wV1#wJ=(ecbjvThZaAX1s7G9A{(}UTNA7(z zJ7q)Vr^@iS(HTXZ<|iX!#E9)WPs-tEZe?mJ_bL2f`FL{qAdlnn1!86H`OU_|yWL9Q z2q}~nS~mh+Ln3Q8dk<$wG~KpSb&#_^HRl6Fl}xav*+S=bM~%Khhz;^*$=KVvV zIS+gnTKUj2gfOlV*l1wqIH2Vt1$n@k;3pIQnZL|~6G1oVe*Fa@EUNf%t&SgzzQ-+= zQTIcW{ZU5fyI0qgq+-bmrya+-^Af6?O(zxS&5BaswUn>2ud%PN z)c5EsjL?=Z`DqyNcZnz8AAOE2h4VxE(GG1?2y8C*_2YJR;!@!+&Be#g1eHYU(Utvr&Y2|A3MlEfb^w^SZ?^hkek6}u1V=|wl#PRfaw9|vOyIsqI5$2~{Ctz8ioR7^3?>Pb(8J*m8w-Dv} zTGD{-Jny!Dbw`Nqu{~7Ghsn~n!rj(OvkcJr`9#|x=7I+*S?y*6R0X&-yTE{LpNaXB zzbs#IzYm-Fx6mR$hZOKazE_5_6O~tB$%T!0x?pg zSNG$@w@bVPN*-;{Lt$j4$$g+cw(Cch;;}LZ9iVo5xMSmH(n!~A9$aU*YPv_R_7dWa13bwy=9KG5 zYS}Y$MW-V-hZ~myIktP^W}Zo=u@a`ND&fF&c|}1~pk2}nDgGu`sp^hZWFAYHR*&vw2y*5{Xsh;j@Swm@@^f8{u}~q7>EI!deQc}W3SONAVm&hXaX^|$ zen4eIOt>`$(_0-AH@?9PMe7G3)7$gzbZ4?o=fqB*aq>UNHEO zn^=MY#k4NL#-C%q-8bIq+ptqCR z=x+4;umZQhJkri3b%VU6pXZ(Y@c96_CQm}#9z@V3&WOb5OB6%x$S+E$Fm9@?&Th+a zD2xNntfPm~ht{zf4n9Anq!hPf6xV_DmGR_m^yROb>R~Hp;PsK1Rxy^@YIqJ)vA4Xkg&{gLD;NmF(K_P)jVT809K6I9r;GH zBVDiKeCOC)o7%B-$J5f4zI$p95bbQ57sp!C%@gJ9N=}!k&5vbEp5fe#Aw7U*{!qK~ z3D#wVN#BOv8!BZK(PZdc6jsXGWdK)(%AEqw-HA_KuH12a@m8@ZtWZh41mPW62WaQ^ z$mOG7xluuIk2+D7d<(jh~k6lv#-ReIg!}$&DEv|49#$+BMyIpMCnStaHD+=r6&Pm zyvizK`X%eDWJII`#IfO(1a}RI*oB}=DQ!p9>V0y#J=m{P>uH?Zf>$G-nO{2mz$=eJ z(@Nd)*e-0d@xemlc4_c5cJ1&ZDPCXvP%N!Q78yakuFsx?46+W>!$DoX=`Bw!t1;!0 zY&W6UY^SUXPzzuZWtANOXPDKaiuD~Ux@{Evw0clD>~YXQ*`FTWh6g6uhc6`C-0j-N_S5x^*&K zLEy)Xnb?4L@&+}yYITTqrD!o~z*kEGa|`@=+u#KDxVLb-vmTpg8O0lm7O<89f5Nw9 zTa|tVWY?^*UDAr7+hn_cQMBDssU00k>3V4Tl0xIkHP-QIUe!?tFh{M#G6UlVJkeE# z$$a_fcv}mgiAS~I$wvNTSq&*_fqW&Q5h)Xta$xN#P6h3%VtQS$EiA0v7FvSwhTt2@ z>ySnjB5isD5ka4Uuv(K0ucXmrtkdU4*E9({e@KdIawCKX!`+iPJ@9FjZg>4=MP873 z4IzEr^qa+kZ1~KtBF>Jv*)(2U>@+haVNg!Jy!t19g+k5W-#M@Z}jg7j8h!H#zpeYi10@F}#rfd{rzCZ{iuo zZjBi--Xrr;DJIMZSzR~#wQI5$dPW;oG$Nw{QpgudW7J|oM6E<&;jt*p1=16d8&?Jz z6~@O%`1d4-BhfoaVYm%XV08JN(UHGG0Va7R*(5n=VrnD4L59H9YGw$T$V6TsH{+X zc}+dKa)hYc#&&oPZ2|3`q;VFc;*Mj0;)xPOJ}Bl~?CJ><$4V*z>NRHoS{#maHL&Vf zC75gAD(aAYoRu02-c6pTs&(7MnMLn|ia7;6cLPirwu7fMs1^!q3|whR-c(HiItcG(^tF=1_ECoqb^kA>O+NifDj zNF|^?Qa1&#iz?9V#JIk9+%EnYsPUQ+fj#hen$t-Kza%6PD!E9R|EQl$maN)l`j?d2 zkcL!5?lli*3*68=apQb72hn6i)#vo=i7(_C}WJ;hD+zvsPNCIki zzN=S_UOdp2tKeoAfk`i}2NyE+mrEW(+P)_`qq^2hn~0?xTddv3FlczK3C$*8QmRXV zMkvhk?l6>cggXqs`fj2K=H{mi5(Dhwf)@u-E~GaeK}?C5;aN6WiBg2{`nU?;umrgW zadN+1;Y&(z373^3OOz*ZbuVRU!9`$9TOtiGwkXl=!pen_aUuy76@VlH=Tm5vD4&P( zhHjtyV{DU&%eCzug`VvhR=fP;)PG$9O#4VTmiOQ_4uKE5WH3WtUJEpO&p-VC^%Hb2O zj7>mjm=MkJNWeL32gfZyz-SKmX<93DaP{SDvhES&b~>6&M|XeKzYlIKd^)_HOz-NO z!L*F{Hkf@YfIr{-b~U>F=6MW@8{nx#4)%u7a@2JEwUnUu1O4Cr?e?~m0N=K7dZv-r znZRj{30SNzVba_U6-N^GDdTHRBStzwYwIUErM$3`%1Ec~_W?f9U%VAJ#aOYyX zrz_m@Ji-V?`ySpEc2616AKaR%j`!M@OBTVYQz!g!XEN z;7-WE9~s_CoDcB~Q%KdD$R3tb7&lIFSO_YCGS8C$O)c&44{c(mNx9)OY&vVQ9?1~N z>tooC?{fvjOgBHIj_Fj&n1Jmu zS!N_|jH*?;2B&1t12q2$i9fX0Q-F4V3W1-}`awg6lFtdH=YY8q;^NXB5#9L5Pzc@S zPuGw3ctW4;eA+NnAE_E_5Dw+w{IgYP7@npm)5nM1 z2t>y;3y{sof_OKIh`73T*O8h<+YZ6XyB4961EDr;vLy+rKsmZ<9%}C2Bu?Y)ry}%I zoFfmwq^y)>3W6wz!h2|c&o}KFHhgJdYqj~k3#{HR4;vb`qQWIDHGdIo)P8nQ?Dp}t z>4%<7$_z~34^e1@@G~+C!_+Mf*v<^tF7y){U*$8WPttvO)OJ0iHi4%p%JlMG^{s_z znE|4K9pyz`kPqw##G8nPblJex%10YY|G?JPPBw>l4Da$u*~tLwWU00%s2-fCQpY%1 z!q`XzFMSr&{K!Bu4+LbVhNa?}VTmG$(%>nJfyiBkO%{X1m_-|ZOt(ax#H9KW)kc9* zpQxF^4aJkY%WK7vFrAaGHFe_!q@U1NnZkX9QMKiExQ8^Vy|8hCw3F4suO5Nti3DNu zgg26-w?bcs%wI>?$>!i7lsr*wl8(`)ofvp+4JO-m9lo8*c&5R zk`URBeour!?n)I6|2|}rb8?`Gkm<=LLc*eV4+c7(rtv?prS~z&9x)F*BoA+SznLTU zhj>{_^X4tPuer-xav#g<5!qp}#8;apiKb@g8yBo~FqsX{gU^cu%40R6!{9V=eV!OE z_3boc1ALrHO~aa;4rMrlzJP81_{YrGaMR-1G*3&lblUmp>j+fTg31 z>STI~>p^`vrz;Z6SJ4H_s*{HTv0%Ypuc$|H?Hr1z?9n1kl+g4!a|W3!AYJFE7=;x8 z@B&XCfm8Z2IhVzv zz9RDt%OzQ!ek4t7$hzebc9%=cWx2h(zV_~l?cL?gz#pbzZHi`bS-F{$BU}$Bm*6Cy z^m5RGdx4T5YSf%54V9243>elz0GP**I|2HqA5LHn=>|0n~Ot4&7~ot z(KRz=4wrV7-o$9myYps4cf7b+$$<7E5}LBQV-i6oMQZv8q8Q)#Fw6vn1B*#5(6Vy` z5Ehie%sNs~m_rIv`T0x9eQ>i}poV94`Im!j-2s-@A_kIhLI5TF52piQ(fsu3-_`oT z{oS57^)F8${Hu#>j<3XOV~jf(ZgTyujiNur0WWQ;89mq9PdY7J&Gr1Q9=s z5z+b()h>kD@0yQNh)>Lj{(wTlYcuCcNC$1Gx^8{*wPKPVr!L54Jy^C`AZ?8iw^cQ9 zsw(1ARRrUz0^+O6pEVJ^3!_>P>COPSu9W?$ld+{SpCZ)z$Ei!i^v8$g&%gfr*J!B~ z5V@`k;N|I98ixjK$Dz+R8jA|G+qA;cjYHw-`W13E!&iaH9Ry77Ls9dQ1LIn_NGwg&`AL&r1F zw4|>H{nC)m&=z{nfRoj zd4hu80%0XuDHI_+Wec(`YRZ?X!(=f)ZQ}$M=eEmfs9H7+wWk4eZeMWoE(V3xOyGX- zt&)S_%HD3SjN*-Jxx?A2ldd$9f};-6+!HXqk$@sywg53Qyp=hH>iV{_nhxRcA-I_1 zlX!v7j|>|x(1iumo~}h5$+i_`K&=vkmXGZwKoVsq%_r&rDsr5Y-uvhZtW>4UZC)(j zNV+>#XISMeooAY6VOOnH(9enh@fx%$>0zy+8KPRvaW1=lT(o+v5>+iIWW*hj(PnGU zsx({tb!P;S3poq2*Kq=poh&JQb_1^;q06=svALQLkol&McD{)qYB9V(Z1?At;rmLo zcK8eTDoQUFSZKU(^=o>bbBJGi*b*3Eq^*v+AHhiFh>k>#Y0Gdd$R+dutl)jp_AV}Jx=OJhKq@Yi4JBTR4aA5OZFL@?V|d{1+vXXbJX7Tv4S z9ZW|Ka2)tZ)*S*Z-J;>eJ}4sgbC=%F7>JSnA9sZZ1r`|7mPn~k_VO0x5jr^JQ#q@J(~Si4}XUr`0vB((V)KiHW+^$TKMpPhgWz0Ri;6Fxfy(|Zznf5 z8StLM8JL_#)RS>N{PXIj{$o128-^v~VW*lcE~K}k54-RL-i67+AuQjqYZ3~osoi$< zLm|Sqa9^(gv^89;niqc6%RvJjF(2npMoFcU=XRfU55nJdT=QI-*nfnX8b?b%qTAxc1?dVSn)8cP!a z#EbX*aDb_X#Y)^iE!`1(D-dlwoU#E142DWMvJ)2s^f@w&N|l(eR??Cv)sg)F?cIci z|JvPNXy{^nAxw<1Vn|qP5|IGLAYw=^fYamrl{*1c|1=!tZqw4S!00*z2@SrEW0&kf-%V>%PbPx+q^bjb#_>q5+V>;niJR@d)EU zu6gBw2VS|Xt9H+-E{C%OD^{pP7W8!=?a08k<4NW)v9y6{J2;>;wP{c6<}DB~x0-VUk-Ea? zo8P{=7Uaigc&cUrysub@+lQ_O)0k>Jwb@3W0CRHJ30;4MCxxd{2o5}D5wJ1Wb>s|Nf#TmiifZH^dY*9rdl4hZxeAth$MD6N$5)A?c)@X5 z57;MljmI@3`87lkoFi*3QJl*daM=3^ayT=yus(}x(7M^LD)O61kDw`E?U<*n?2A5k z9#ID1mJr!QU@YAA*MTfgIx=#Y=nf@k$xKc^1fe-jmNOTAq(RW`L#A8#r~?}bGz+xi zexOm{yki(zOv;QP;az9H1ap&YaPRT8dUQvU4hus4{Xg{=-TJ-{r(cHwdgpjn$MxP1 z9iB|n2Ku|f)o-Km*O>O()!m;NDKWhf>DXgZrDifE?Vo9BOeh z?mmo%%A-EK!^{-rcJI5%?QQtbj7mAUBHP1(h`u}>Qq}=H8pnj>*?f3=_e}v;xA*lQ zlj(2u=fU08H(j`?UEQ$2PSXk7Opg0bO2I>cE$2V7~-sxG&z_$ zdH&={$?!Jej*EIj_6vMf1e(+qP`B)$1I4q51(2h=uoAFqU$Vq&z};<~r?zbMll^ zkO}bjZN$h6nA@=w24p<)g{T&_P@O`(c`NXv#e-H6l{m%FiN|A9o6W6&8g>k#260NF z;IoQ^qBz7-T}$>a3^Yl^*-7IO*WqKz;+w&ORXPk77*kr)4jsWLdq3;yJ@Mf6VRMET zDB?jvRF|dc@IP+F_+t>3NI=warG?#ouh{xk^Fkg6adIPWyXsFVvltE8N7GlPb{|CXy(B#tG*J)gyd$KmO7ExH5eR0B)V9BbP*ypRFLsC8HMIKRn>6Mt{c?s7w#NPubHWMdEjh*Vjj7+V@DZUMtW@_q{{K zJ@|prb8md4ed*ADdSGL6f;jEZZtIdxN|AhS=s}t;E1-Ov7I4k+xG&}>z9LE(I-3>{ zvdbq3@Z5B&E+9y)A%#c7poCoP&p6x^QS;?fxfsmx?suntbh!cHRPZ^2(y&Q^GMZ8_ z51-N(%i|yn5Ix%J@#L_QRa?OP4kLv!aSG-0Y68@=cnW@aD8l({ngHpH0Vugyjd3Ip zND{bnIu7|#Oo*rtqO1VPwSga0qDVn0szjuK95aczFuo*GD*67pKE5VWkm(SWTKsiyS@L-!F;EK6jVYhM-4UoBH$472f1(37{79`i8i#Z?qDa^kz-q`0G zMiy6~0uXNZwsEvbW?nh4pCpFd0==HuEux7 z*;z?5EyH57mEzJcv|y20RgWc6t6V4$T9>trx^F-fCo@2(J8Dl5qPQ(U6Fjk4o^DY| zrs}!|M>2TaP@H$3LuWPQvvG~TICpQ={@AYNTE<9;mrK^{g{uv@W(XLT^H4!NL@t92 zNEBlryKBiO?|$L_JHD9ZUho;k(jNqj;B2?2IG%4mhd{2C(ccFi1noTZpU3 z*jN219w%qpXheR*nN_TUc6I<(#}c z^AI4XV23Rh8* zo*Hw%6h6qDCERY7n<>MDR?1M^NEuj~CWDuuB$_XM)VE8au*C|PRw>s{*5&MD<%2AT zlIFQYR6ZJ{RQV|*r6`2xaRLQ%!Si>)`ad zQKeKYI4LJnTp=AxVv5NWRY-NA17d7(e)kR82$`mgBvEjE}{*jLhS;YQkjxQ@G?27o@06n-$E<$lt7^3XCP#s zz0{nC$G5Is&Ns?gwEr{~z1goXV7V{Y{bvamv{8jB>q)IzAHE-+)#Nx&#%qMs+w+LT z13@Tvc;gB588imfhVP?s6dn9o;iB)$47YvL;g_5H*|z|>9^4HKelojD2`1xVh(R4< zGM-gLRNoHA*Q4>*`fl`nIJv*m)%TH%SvRNp;hEI-pq$!uK@?#%j)O2Ifs)({8#E)V z76k*m9yASP(J*Yg+N&#bKoCJ1<~5DG=9xuG+N*xzt4gb`1AO%ZSuD#*XlXOs({jG6 zNgvUz9^?ebEvuxjYc{awa|`Qdxo&{la10?&Usgj<}>Lk&S; zAu-r|9Wlss8A(v-8c|M}g6)2w>e(?xwCI;f$WxX(dLN?Ko1_YRn?dlI zg8K~mJ$}5>P+)(QVR)DaLD?V?VJTdVj;{Vw5C0s&vpIs-!`a<*@|TOT_*-4E?U!C( zf;4#m5bb|NYu2cA^PU9z*saC=ndt28y?Q$<1BEzF)h61KLLr2uyfU?1`NXDOnJ3a0+R}Q z>$Tlz+Y%Kcx+e+BaSHYfQidT>KmksU*-idSc4F>ps8s{r54n#itHkz;$c6P?G-X)^c8Ri{z4X(^U;;c*uLmKRi!#zR5_TE{P>S zzE(Q|$s*aY{wgCWemLT>!ZW3Lg{JPBZ`VnYI9#!q#l+ss_&YRyQ{y!RS$(OCSq{69 z#u%)>dvc`oQLs$r1Y=k8_zN;_(gX_bNbRp~9EU&`;^&S$vGNpm0Ac;^$D{w;4~YY` z>aYgF(7y zpGDFC*c@twR*n_D#a;U?6lXD4V}S6r8SwM{_17W2vY-n4vdQx_oc*CE-X1mT`yG0@ z(5K(<#ic$`0USb>!?~i9HhU75w&43iCh}ooZ!Jbx6gQOIK1tg|m!rJGqF`v3ILXBp zG0XnLUO%{d_7o930m?^oyFMtKwzj}#OJmgfJZTl<+}cf5mGF21L2cu8p%8qg& zMdi&?VC{oeGuSqaQGZL7VwGNZ&b*9C$*lATZN(=HvL~!Wv@E?QpQJ`sPhiLAxbZDK zDP$o@FM?W`TEk}|?$6wqdi0$^MP?JB{QjT-XYH6GhE-)eYTl)r)>@loCr`zEJ$cPe zK+3c?^9^eqViA{D70Z)fNomf?BMN0V5||vy2#{~3@g+LiQ8zoUM=l8LYP{6ZKFd$U zl&1R+A8PHc%3Dkd;wE`&A*z=$+e-H$6hEh_67lCYbh9T{+5jkY%Nc(z-c_83i10QdqpQr0WCi=49MJbOs{? zSO5#B;jRrw>ZlzK3&PL4K(#m-o_TSi-m(yFyw+92E~wx(WgP3`70g~_8`ym3a14V7+1Zta(w^Qs|@*yBrMI|>WJnLGo;=}5s-77)^f-Zt|c zovY_)BiC`fF6uz#C;l!Qh#N?8njfE^mro7pc+*i{A2u1?MY{Iml{RQ!8YpGl?C2`7 z^i6s4R>ZLmz80zs_R5oN=Sg_{EDiR*0+e4O>dhsi+AU36t{~upWU*{cI>|d z@)zunmIY#*xskt!E$0|RZJ8LdYNB$Ylu!G`-w|c>eN!dQ!HtwIy5#p5I$hIvka6|T7hGS&RGn==!nk%if(Q!=|xB?wj&7J0stNrUP zK^@=XXOIy#JBKkieS~XPk3Is1gY()RQfjyuG`k`LX>St@_xbW|gV*UWO%t3_ahTVm zLr|AKz`;g?vm}D7Gfe3D3Wo4HAK|p@x!isK02>!D_%T1OB@R0{{Ic_~+an!4ExDcY z0}`^-bU(v0a0l{{dT@0GN60d_G9;xz<|kh3tvW8&7PS<%v%p1mm&3 ztC?V@Q5=#OPupE9__ki2j}-}$__YI&Pc4-5-OM5b+AyZ`bvXWZU4KCve4qS2_)|-W$CLUN5Bbl#IlUrrvr9Mf`QQ3#yWO!g3irTtJq5YdaZfiuB&FgpY{XWz zm2gp|4y1SAykHDE#Jbr%s)4rV`GIaQjkb#DRy8lO7LcwZsmJnNrw(n3sFo5w(SdWK zETq68lHXn%TzW%lP|NvYzGydIIfH7VET{qTo)e;8Z$g^OL>}AKs@YjA_DI@u1B_ne z!|08r3vq72RYNar#Ixf5)y&X1D$KUr%s)Sn0K-Jdg{Z~qBIL~#?EPaJQgWj=yOdxt zUr`UK5=II{X^mki8Xz!|xCT?MGEOp0M!kfSs4R*xkV`{`9RpAr0K5ceOjW=r@Kx{R zew@dT=ataD+jh4<8cr#|%qGv1+?6SX$n3YHLeDE&(oSGW8lhovPpS>GA-V8#_%ESh_SA)&EE z>p_+FY|^P<^~iQnAs60e9ECfHZkiRnp9-nniGp8!E#?Fdm*yb@dR>IWo11HUG-%hX zY^Tz62hR+*ZHwk@@0t__Y7Pf7uQ%hTlC*V_isKs(zn1^^0xWS<-CMNTCTrQsO$Nj->x2S=P-~$VYWOJV% zPkk#J;mRu;=dq8MucJkpm4nNJc5yr70!~Hoz;;DHoB5*IRLA`ug6%VLA?PpP+HM5E z(4fOt5A)MczvA!DpYWG}O2ouD}0U5AOf`DTDkRLqcr$fA)J{ro-XqnT1SlhvOJB9^ST>RlPp24A+fP z{;A0XapH{M)>|A zLA+%dkQ74-X9`Uf5Q>w_aB;@_Tdy((s+c%rX$s*J zS0d#KD1y?gAjKtDQF*6}U?5|ELq2Qz%60(;e7Qfa{5))zq?{rr8_dBl;XIrtH_U|L zw1Jt)5L%Vpo{KLh`MbqoJzu^7#NS$ik(A1S4xVL6uh5iP(wd~rLu(cf_YJ5T;ZwxT z@a958Wq))`2oMiDToAI5&MnH|=uXXngQNposd5+7%$L-6fuUS3>QjZ?69)1rB8C!4 z=tcs_PyhbO2kvyMPQQ3dV`=^%R@|aBcP=%B4KOY44RzlEV@4m=RnXr-nS+5M?!t zPIRJ!Y-r9qZgPQfCXSng`J@7#PaPHlw%!#>&P+zq*Sd`%=qN*ug8KoKNVrK#5_Qiz zMCP>c4&?{vY`MFFAT6oWZhyFh=Hr(<6Zg1a+c-${LPBB2fH=G59%3qYqS&37-8Vcq zl8H7co$a?I=ptjbZ^9ZzAmmoL;jwwEtqJN5lBW9Q7dABsc?Qg7@0a_Hx0VNU^BRUk z-n%)5$ybfw*hA{e3UKGSMKrmX8pfFBR8TL|s;lnCqM0jZ=1 z4?k4r?nuMEBa_q6$mZL2QMGi1*mZPp6@Z*tC3bAEC$k0KxSZ{d4j(K2DhJgDI;&jp z7wO*3wIVkpgyh{?WCK)tUIHU5%afUmr7Yb#dsnt1X#NDv=N?90w^o@Lg_WS;)JqCs$YZ)2Su+GMdir%m)WH_I>atsaR6SH>XOv+4Ocrgu$crl_)d@O_Y5qh^SFuv~Jft z3=T&!#C-nsmx_Zd^dmm)m;=+o>4jfbm$Z{QnJ zKPCp9{bi+vv4*2$5!p!h=E`K(klGohMn+a34kM87vBg}v7(C+(^$2u?qIw4zmRt+_ z))T{I@)NhL0BuI0#{@uiRm)do*E(q7LGg?Y`jRba3G?9*X2s5j_0b*d#U>bR8@of4 z0iCv3xp3d#kv%UBtG%!g??_c(dESr%C8Tu~a1)a(gAp;=#E|zH3RzRnH=<(YwwlS^ zO?~%O-zyr(AA?yv{C<1)mw{ak##h4|(8c8u0i1pX1y2dMx%{2B#G^ZMfoXf!HVxko z2*khk;Hc=Xvn@H=LgeMuNoRwJQZFaybi^3SGAbm}57JCM!@hq6aP#ye(^xG=`wXHa z7Q~69011_WIWp4-(Ga9fmf?|6HG;1Lt)8_{LD@)+u|4}7u-9M=oz|d(M-~54p{_$p zZ~jix!DWEV4;bO&HvhYQcyLn~@^E-(^aGfU?2$EXw2@3M-POogwf}00jqS!!`x|p~ zBp1=f5Lb>Ns{4U~@ZujT<_!uOBD(~rNk=4Mw_hH!KdAjXYxPiD6bZ;Gp&yQ+oj#9l z#UIjWd^h|$b!;QSz7JrrJpo?bO>wd7c*U#V2tb~dEC57^%u@}r4%ld<0XtT2bTuU27Wd9EGWsm-65d6UaY11UBPRP}sBT432Elzn zfU%PbHrJSA)oDas$8h5$!oz~AsTfY%HQi^ckEdmch`c*xpEs@_@+waME@BcTtC?HFDVy0e5af3Q}# zXf#_4EF*4z`n5X!^sgH35=nY}=OVYG`tGmW;lFUjdp9IQ0T%vK5ByUP{AUZt#|~}n zj!ljMV$U5A6U+|>5t}^FFMDV7giG>KxvQ|S0_aNmbLc4|j&agK8Rn-jq#~$}rU=;o zfuD*W;6gLTSConq42xN)el!9~#_gd9cAtphzKm%CTX>84saTkwN`?8UT$rDF3iDH6 zVSXwWrlpxG5xDkz@ak@dWotF-VCew5_%f+i1mL693l1N+$)be`0bF5#<7n5O^_D2h zf4#1?KuPE6<+N*sfD__1aJ;Issi1crLojTe@6AxIj(NC2TaesPX)d+84If4Sgf z!C(Y@RRZH7i*qNgC>`BPumD8q(s=i{rL}WUGH_bkK(Z6F%av%*QZhDA3TRY0s)|(3 zWcTtMbY)c&;-&F#n?hfJuEuxR$ zTMy=4dR4<#aC79dxDP|K0$LR9PIPt{184?gua))LZQ71Wsz#G3jH6urXIOu}|MF!x zt!LjxU+!RzxqGIo1TiUJQ3N)HIHZ@Vu6{2+RrEgI?W;#5T*e92kTXzczMYsK=UX>` zp2`04oIJo+ug~?v3NV+hTJldwL26I?1AXpO0_P)`LlOrEx#6=Ot2`kzIFBt~r+FZB zRTgxY*uDG=mloRt8x-pznwsvLq^00~XF8$x~q}4`~`kp@YrM{Yc zzr7jW4dLx*IJKDjF_>a1l!tx4zquRDzD@2da5VYjKQ=y|jESGNFjrUj$h9B-&+z9@ zaW>?^^o$O{1i{NZay3OJk@@}l!9GNRDl|!oI(|7#YFY=^-RwVajgE(dGvW>82@e|) zs=ti>bgccC(T!LYf)l{&>0mULs5^N7Cc$rm>9vV|nM@rI&Ia2VqSI=44xUaC;f6YxgRUpVEVnji3>?>V@x_xLvU?evuHju zSDKq4JFR8N_2m9@3?Y@3!Hw%2%^FBE2&H(gL8g?>_usd{>{~6vSBM5<&U%4yfibo- z7EZ*t2|`euU+vG>edx_0ECs2h`sH(OST;;AK0Ec|{ZXNpf~GEHMf%q9sR3BZiI z8!>U+n|9TdED(D%Hj+wgszGys#tjQUMymbAK|&uSxsluWs}q?o*n^Sjuks`A zM)+#)b-p`YDhNy}Y)tlj-eWF}*)m~q@Rmu7qqt0(4d=obE~m@~bD1t1cRlT3#`Fhj zSRBzkIlt?Ls5H3WCoYcdGHG#;_jPk|wD&cd8TKD6#(yz3?ZE#)N5?}yIKoNCdI1xJ zI62Ob<^nDoz6BZ{s09R#pHeZ+P%M?lkG)db+}BZQbQQ3EI2CYy{1ltc513+I%n0er z`BIKRZq)0$okUbn8C86DTnf{>1dE)_VlY zUxD4AC_cR(kHKt3!13hn3w@4?D;FsbDD*v?mO8?l!TNb^wbnr79}D6YhTAdl(lydxuvWPVm*7zOQ)exNQwgQEEX zU2!@Q(=|Ul1VLka2L&Us$pN#IipM?aK~WgOf2?mQPiQgn1=k8}@ghl#C@ z;KIY(j0whL&JXGsSWjq3PYx?t)l3gdv*{JH@)p2MFC74ojt&C2FK~UrTqJiIhXB#e|MO;tG!>huFzq>*7<=UMO9jp6w?6}w* z0ex=*lYj_qD>`(0HAR3XT;hduyTN%#v^hH8WORXt$h^}r70!ENq)?|4dGe&Op-TyQ zURC^dd!`F`vg8NDE_1hDTJ-!7$E0^;B=d{xF!Q-A-SetSU@T8-mjMn1Ey4L`oYd6> z;;Jp|NuRH-(W{iLYX@pBNROUcX4zSU0WAkwm_v4;=G=S(M!74`Z&fHZug?XLB*O|w zqf!(g9EkR*hn2lGFi;PJUXGkV#6DXsjf|3n?4Tzh$KN~!br+>M@63AIwQC+mR?XNe z3e?>*=OIzrRCKtoqclLUSG4N=hh#4La@<4x4Ayd!kY7mo!%jZS;5r5yN1#7mM{t^HD7Z((!-_=Il)~Skt_ugX!zJV>6r~ z12x2%K&as&u&8E4ALq$IpGLQZZA@TFNL`7YSAg8M0Zc>KQ&N?^=<}79Qmzta1{S|| z?+v%`m%IfQJd4$-(>%*+BpbU9ay3>1F=r@f3~t4LId*k z1(Z`nKoBvt1^7}%tIt_-MUXdyxbzX*(Rz6$vyZv7lAeQ6Q@U(AznmgsGG_A@@}5)& zj!HsRK)`BA1%$3k%V&KJ7h2J^AV!}g@mc74L9Zz`79#7mMs=M~L&m&Xh3UcUVhr-D zB6RX0TJ?j0xCAnVAB`ts^v*oj{IZK1Fa0{}BJ+@+KQ!5r6gi6O1)P0hJ0%^ZcqCng$@F>t;kQ%bmyeOhNb zfQ?hM%VW1hm=D_$RcXYQ=n8|iM3#-y-fxB>S|UkCXR&_iz$_NK*Nt88a4gq89f`%R zxtxg|eg4@l_0tsciMg#pCNV)Fhm;*FDDD`Y|ag2Iw zsl9bYC^a?XT>J;Uli0cScLb*J&>Zm4|&9i58|h$F;x@koSNH@BB8@P9Sw7vn#Zo! zBwZRx=vm!1M<*mB$pE$Pvi=_tgxn>h5z1bvM;ZZfri8I)A+L&Mlx+S1d}7yX5bpr}ET z^7=_*c=+QZ=Qwt7tC5dMzGe|#z94hlioq$<(G|Jb>04$5AE2TLk4I=UjnKHGStJ>< zS0;;ax$SVBHv8@Kmz(|RvrnvS%Wa;LH$^fIg)mdd#>$y zb7~!*37uvUc4`jV@2UcOE6vmGz8xKRB3-5`zR%Qd-t?*SZ(gy&a`e&&z z4X%x2s3cyKu>+GJ${+D)-Cw?#%G!E| z-CUE`PjoBWEZ;T_tgW#t+_`KL^s=1Cx9SX2ZA~^$zA%ASK=`1!&M}>g?=4v{t;3OP zAveF@XJ1+I(8OoMv6}(c)zaz=<4dPk{TQaW4Trr8@6%tgxp1tNUM7xn9EAI`2%wt#rSZZ(i#t5>4?%9u|KtlFNBM20!W5{`@Fn`R)$R`7l zVIPDVg*>$PceT>3uCj5A9dPaa_KzI0TX6xVAa>v(K=60%#_%GPg(Nks2HjczKR;H z!~$A#;ww3~;6)Bq$!>jSS0I#8vtt+VK-#9EZSBH z6s9~2G5C5~!+zo$+87pQH#-%lX_}@GMm_EG8YSYFHU+vVVX{_Z(zc zD;j5pGKP3U^%$p=3$GxsP_2$Et5|uC$Hsg(XfoeOyw z+bxI^5(u<#)fq$8q)ZrMtP#dDUJiKM1`8}3wP&j&l*y}xBQVeTh~dl=+Tj&E z)tOu#c&#?BlT_Cn5~!A30+xZXrfsLrr~D$YKhTPwD0|XQb65)3((DiJ)Q>FuG}!Hf zW*xILBo|;51O#{y>lhmtQKafPCWv0<`M0&gR;TcggKs3qb%U6-p{>fbDqw>_r1ixu z{t~7>!oxpki}5Qz+1^@KzMf2f8&2^`@ivND)oX=8%{BtqGJGE0k*jag{k^)ngOxVC zs8hXME>Fe0x>y>5KkQD_mCr}!Z^>>7g)mR4_>zVvmPD8rCSz(1zprIpnW{<-*6Dkl zl#WVdi%Wo5ah*WpDUIDlbh>2wDxQse72j%LKiT*q1MO!Sk{((Fq!wHZWM=@kM};3I5)xnbTy)d(}C z%!hngx=qs@gx?9!<9WABfnh}Jfzs4|)hunI;NOu6ONFg?-p>%PR@yL>(Pu>Zi(R`{gp5a>fYC630@#D)*nU4UI=6i8Po%gY|RZOf%jra!5}DtSM~*54-6*? z3un&*rVLbR+DFM_J>H+tAg;A**zbvtlJ7(c{v^Mj0`j#XL+oxGr!bSjdC@f{P8N`0 zpt%b$*u9;LDXWt>-gZkvi2vA|BH1uLy*&E{MKFB%v3-Eu<%bM*jEl%j)RruX669z5 zvATIa&o=?WQHakE2QuYP!hpl^MXUzyNW|pD>knjsmoG~xh%RE@8Id(VvUJ&Vy4r!f zX)jnQ-p=C`csPVzm*Q9n&Rgit3N!9=!)R@3m#IY}->tc%l*f-sq`fdo#drbm`Q?NQ z7Ld{?5!KH4VxxNJDW7p+@9~NrB=d!?D76mpsB1j~S^ZdBvH){x;bV)8S!0M&+P^$wq#b zkLTSJ)d%k#1BBYgrqeMW$D%0%V@xvUGwP=;Hq;aV7*-y>U9VbwC%*I>Eg_QwaaRAW;%qug(}&$$&E+~B=hiOi%bqAazUQlkkdKY zwJi4n53zp*;epOXeT61qSl@v;IXP{gNvg%+&P{Z$L2^d!bUW^b2c8cbfSv_Ps3#=ZG`5^&@t5B{K_XV*=77< zq^Qk0#{o~(c1%bNw!p-}RRH{8H@`l< zke=Y!Qxuclb)}Re<#~5xL5d$4FU`@GQ}z#PJ6g5ERr&n1-?k=mV!sQ71}1&tm@snu zl4Gi*m-xz$t~D~$ZeN5;e7j8Y)L3X;oUYjc4SP9YFiCf4VaRci{}2i}wmbUS6Q{5| z{j+K@OqQDv=s0kqfMZ_fM|Y-LZqD076}Tsg|GQ#-iln(<9aHuSFbtKSEXJ)<2`#fb z1t^0AcH&uNi6cxInu3y#geXr4Uu+BX*%%n&8(Lav^mV%VF$`CNL`Q;<5TYfUNyus} zomaQbR=CDvvn12`?m+X(#~lvTtM1)wQ@Ru!AV z;@$Kyn099n?a6$&2{qyM)}7yRPR1c0*8Gk~T+u{8%E3U~Ix36P&JCa~KkqbnQpeye zf(R_Gdu{2ZG-NRIJ-q}mAm-_IE025J zAmfdZmfHd+@xKxLlva}Y{S-(;G6f3To`U`2R>&IO*w`^=ilYw5fHBYetnM`a6Arkp`E-*vl5yjb=I z`ncO9c#(}LYPRz42Grv3jvSKGx!9y5?ue$A&FplPB|8RIu>H9cQ`P4kWQZ`JIsRJT zk4Ja2`lo-z@lQy=T&_Es!BepN{*G2tHl!UM^ta81mLI4{DfE+oSL!^=aS6)LCXj28E!q@jrfD2o#x-P~PaWk5M_*py#%hT@Ej2U2@T(%pX&+JgjGa18DP zr+xQt%a9Q0oP)Zbe$B}WFqAN(D*-n-Sq|EisB+k1U&szXUqxTBP@PbTP;^t^s+J;X z;JopL3PlM>7xaDFtRXLR{N(ZxE&*eNxL!zr5A6>(ns`ZBwb0SoVYP>}5bV30R$p-a zK?<Clcm5+~n6k!!wzT!q|Lyj0Ku>*`nN z1-Xpd7snRw&Ra-O_D6}k;yCtbM-Wsj;MwzLz~YsbK~vP?kK~UEruNCr-ocgTN4sSw zRql9qd^@<&>1NE19{5Qdf@XKPKJQjt_2?Sa{S%*zYEkJD(59)9}tZ?{#{zdY58MH9t08xto{SW2Y8i1OEz zik2-0P10p_Q6$Rp$G__Z`6rq`HJ=~}+>yT~j(HzZ9Bp5!&o_hLhM#8j==Xn_@J}ZE z$%KD4;a^Pne@ysS6aIhvry!rgn+V@8-Q)Zx<~u2Lf*UkASU~jC|NJVw2)R5IS^@m@ zi_}IaqKMQ?Vm`N8oX5i|eY;mEycy5@0m>JxOOFKHcZ(=$f1qTFM0IiO2Wf4W)XifsyF&ZQ@Z-FS@RUL2gI) z-Fz*)c03${Es9)zC|N$r4?Py@IC-Z80(n9B@yu(=XSOR0;;{+Rmc)Dbd-$%Qb4W0!CO-1!q!mQ zdWo|zrH`h+g%skVwUI)j{M_N53ljCQYvBDEs)E|GDFVm7B3z(R`Iscl>Kw;oWK?qf z1Q(mnQo&2P_k43AjYogQR)Dj(Fh;0Cd`!)vj2JjSlQ6$N?&*4g98U`Gt3m*H;>h5X zn4A~nxCgT0>AnKyV#BAh9-`OdUhOyFHaY~B?iBL^bB+GKfjlaAj!E0h$sJObBLrpc z&=`L=`G8HdYDgE*@e<^a%s-rzor z$V+vxpy+mD+ANXETA*gR_#5KF9Gm3IQYZ_9Feq!-I3xOYTt3H|`QgYK$zG~W)*l*szNITAlF~Uy?+NAd>HFx-tWj9Ah@I?EEQ(%$_ zyl7H<-X0cf+a!f+yBK&%7TU)`LmOGBw392ZJIlC(o?dqU&|7YYA%v)%yR|I_vEn~1 zhanSI>hp1ExWyD^5%n-#MLmEHF%Pb~9>Ui!54ar1#Y-rUqVZ(ki-poO8TB#EAM)5vH>5Pzd%jcN8whG-a&*sp*!QwMWOKoPMQ*Uq7z`a?GWX!q+}7smL?!#SZ^+U znIw4xvaFD@zIXuq9MK(vV@ON}ZV^aQdY6Ae#mXJ1s?TqD*Kp(3^XeaxPR-pM-~rd} zDr#T^Sg*(h`1%lwKB4FZE8!4=#FzwH)tsMSVOPYi!Po5i0UtP2--d(hik#zA@GeqK zX4UY|o8j2~y_*iI@xZ~ZCf~oqQunv3spAmgF6WwlDmZSVKi89Lb~k}z9eO8!M{nv~ zF7DsVfv$%XK(_9`%h@HL@gGFK5ALqMRX3x%ioH8Jny+`?DtdDF*%j~m@OwpmVA|aS zdDf(R7maY$pdMO1&R^UfwIoHKAJr@AIKBc%9-eSbPr`M#l;~e27O>*F$&!|A0S$p~vL8j!~%R)l2cw(P-|Fq<1Jf?Do+eHjv4*2XA zEm%=KZ`RdnzN(huHK5Z_h2C+S2JNJ-0hbw|hD(kRUcK!I#}X~{205#xq__L78sX2X zv0bk^=qR-bix^V?m>s+QqdV?FTGpH%_p9oaNnUFnC@iMu#$=4+FX~6uT_GIHlihGw zpB`aY{YBPo(ICf!WWA)*k#AU30F5xwOIi`vwL1%dr4Pvv!sAo3cFWA(ZE+0S!32%$ z6Rwdq)Jh1gPV5hy+ik;bwc?+}#{aU~h-(4X0Hy$@$);wx?uq<$q1vR%-~cWYp!NqA zzDv)k(GLh&;FuXYQb^G37Zh2vqLnJjR4|P1W-NK1grtS8qU36xTE=ac5@ipkL=|+W zNSH%<-rDV9Dk;PrAos^N?K_Ea2XPo3uVLISZ02to6(@Hcw{_AV-0Eqs@l?={uO2q1 z<x1(2kRTWmY8-BoFt24i(qG?g)R(lpR+}Y%8P;Fi_KItZ{ZYn` zBDf%&NMXE*YfKW6w16%@5(K9u8yHlQZaJ6rWN~gc0>qZg%lY9MrY$fPd`84izHHbj zW%c79x%d0?|HK2q7`u{>xgGK6Pf_&OUqW>DZSd)Tenlp@+$44rum4wgb#vZ@NmR{- z|EXtp)8XKIjSYD?B?vo9p4|ha~Vmh474DfbvP0r5)g!fj&N8{_^pCJ^{ zGK8yTO7&$jxpN;)iY&zBrYywo$H>s}0v4o2bYR!GFkZu}BHJh@S9HfCMEErOWu4yq zvz>pc7R$f!U;RZ&YcftEAdw)hG9<{pEWr@aLMKq_V5K<24e+u?k!Y%&8r*fctYram zjej?+9czOB5+imcflY_E31s$dGQG>eK5?9|kjQ+S86;Dd$@r_IG7wEDAU8QUE8qolb6t)4S1-r{vB5eIGd3 z@OCgA2Eg=wEU6vK%w<9;iNWt6qJ;7R?VdD*c{Ee}aD=g@Yr-}=vg|4P5NlRt*j+bar>25t#NU@-lzzjxp6 zzkjC4%(cN4<{FtBsYI<6k6NoA|NgZWrpk?uFtg**0}z*;NZ{7U{jyPigj{abNh{z2 z>W}v@KjBPd!&J3Xr@nms69V2$#O%un&VP3}v`LnZg7rfEnb3f|qvQZ0l_W^x+TD47 z=E6vh#3>t6^9bKSt$A-KlMq9v4-w9X>S1BD)D)?nzf-Ua( zm!?yT4BPqct(tF%rOdubiwIFCWE#T?!f8h(2Fhfc5d8lbdV@BO0P}d0Ju0s3OBj7- zkWZ0Gv}*M%9-d?s> zOAZq|d1|rgqa23zdi0&_xsd@@EF-rO=#CtA1M+o3UgyZGbBNyzzue($e3arMcelnb zO_aP@hi_AK@6Lt$gOugCqkw@epGnGig!$7YTDPNi?BFHN?MW@fGAv6ZS_?wat{e|I zoQ@{f_4mp3kk4@S7ib9#|1*4t;wq!S#s7DbFlra_S2)r4;b3+@T<}bHi{Q)rf@biNq&hKsp^BuFHiO(Pd4$;rUI~)Z$eRI$YN+uY>H6Mks8-%WN z{W`pMdj}5YGH_tr5+hB1r7+5`1gJY1XasY9)jYr!3Uv-I{TADgLAqlvHpU!rC4jQI z)oiznb%h-S=Lw2z=gazV+VhiMXaLHus2jykHc4^>me;;>w9s(#;A5oZ>lR#AO-Q5i zh;6?U`6v_sS<3eVdKho`L)cgTd90)%=yeo8{FsSDdvW<%otNDwQYNg)Qi@1=2s-cT z^XcK=96^W`ND-r^a$AH(A`Di0PeroC@D#lzQzK|E|B#)Z=bZL295=7VU891*D;B`w zOb@q-F^F9Cfd`Did}m#N2_ss_#BF^s6kfW!M;2+Un!_ngMas2|hr)7(<1ZC3Nj^uG zBBnsBdS{k4qIjipvw0H|s|OPY{3zZuR21=#`4fO||J@rhA=X@BwxR}RyPaQ?DIlp) zC??t7BD)nG9t*FJIL46~3%7T6WXzFdiEfK>I3{-k$06wyx!aQ1zI(z8<2>DtBHpCP zVYAvkyrLyx)B!KrFwI1NT%*LuX@reaFQ4!bk{!h3l-#^PYAgoP_+`B%qMc+<55l>= z8G!TU($K}oY4f6SPg^ZF^R8>n5b>Xy>@c*x zcWSbiDq(K)Zh36oYAlD>>cv%;mRKR8V)|TstETyqH&zKR^?aMOJb#?bjG&3VeSnOP zGBe4xXfMuHXb;EsrE)FJceq^fv`09B=`fOh%aHTof{)YbZRzb9-wEj0Yh-h@KP# z-Y{H1ltlp)K}>d~Zz)z@-{15Q$Ds{~pX|i2O!{U^e zLi!LXxHe2nZT#I`s(ElKR;DtZpi%(1dDQItw-VX(L5hDli%S>9oSW z{8~Tqp8WHtC<^0M%@(cd4t4T$>a-7GaJ4w@@peTL6*&vs)c(?77-H9x>G#3-E&v9< z4@Nhn>)}CHlkx2S`*4bL#%BYEx#ZtXe0J|nBqK+6KmI%#U)w@dFrc`>Hm0`!_=gGz zh1=s{tCvB?Ex(e~B=ihUjHKa7%NqR9{#YFz-$cB7cAVw@;D-L{z&Vm~-)6pZ%<{{A zbE3r%kFBArKr)6Cy}YiO1R){oO1W-cRvmPF_^}<*@Z;F!=BZ|z`Y_4WKsedD1s`Dg zLhH_98z`F;^4zwE))n{htpfSBb>k5Ma%@WhS6um}vlGIuoTm*3p*mXQ(w-Dtp|FJz zz2jMVWV3ghNXIW=A3LAbW2ZSG1WP;amos^kr`el>JNeJq=bHQ3<8OE7w7z`MYpza`-GYXVNc zH@W+20AFSSy@b3koqd&E%W?{^<-JcSr0FmE0AYAJ}V* zZ4J0ss%3Apvv)BUP@-d>QW$(MiV^~)*GM+(k?O=Z1nmdu@c1THQ!T=E6F-3SDyJbu z$ULV~68)7_T?_WE{;}}|pgNtI5WiZ@5TtY8dBL_49^ZnzHyThJvqM6JpY&NjXf(!y z$;WW&BU@egG><+QWel+$MSTDJu6H}h(Ty{A0D-FNLI#V0@)|PoR`k-O)40lS-JADG-HB}89p|{~D8)cd28cUm3}uQPsZws>@ZRRW2Ra+pml2X3sv}B; zWX{+%`e8GFt4KTkxaJB{dDp1@s=|ep2EM4zJ9Am-*1Q4gYi|4zP%?GCx48~7yvzoP$G~iE%589WA*FF?a-x~4o2f1 zoW7P!k+=7=ZE4&XX|=S=FOGGPB$xKM!J zPi9|J04sf)4HI&EZD(wOwmo7rK_VLN=Y&jw5hYrlM?g$$;4wXK;4v-3B06m0F%>~# znyon3aYw676LXUWNn3R>pURT12`)bSwgb3Uqvl4n-c`Lm!{5#3|V7>_)$7kn^eC zbou#!!DuZRyP~AFiZ_-(W{-nqtlc9S=eP&R^xoOIOUQWJ0*I|qq}irpih%i`G95x4 ztD6I;(~c!z=viNPIq#G4JAE|Z7rBgr_Kh727TBs@*Br{E!rl0dP^TI_mK<9Jv%S(Wy zJY@mH{G><3($dfAlLcsY z9e3EQNE-;6fbjX$(%WM3@ORi9s>egMI<_wjZ*6pW*R@MAFeH4B`xZt4UsV_^XA*h@!t++E)4iog6|vh|7x>BVqsKmW#)RB|h7E zwOr2O=xbLsVucbTd+{bhA(!`Vk4IB(*|SB3&sd7%LbF|kFpQ@(T}(_Hiv_So3PD^) z@|=B~A6KtXnkDZgA)~`)ej>9vfV)Y%A=OQr8^(eZ!|hWi7=VJ3msRuRD6}PIR<{iKv4%dbiE|O9MY)yF1c}-1RT4sla9|o3DO+ z@w*b;qgntPVKM;T+uT56QENcRCRf17iyRB$-A{$X+GL{r?zeA~z#S>cKP7Ar=n@2c zY4h}OyLkdw+BGBMEN8!UMi70M83AQejbLR+krex`2V}c!0mHkjN5s3V2V*u_8j57c zkPMhmcDy}1HYo!Hcs>*1_OcsjQ0bwk?PGAcw|P5ZBa0=u#~ zaAF$H8lj=A5n<7MG-mNqurhEVHH~PE@@UprG8+Bo&0use8b^&>NJv~-Mx)Xc5@UZv z2RqgzhM{A>;-%fd)Qq{Y!p-l3y~YO&utQuj+PiUEhyk z%wu>>kt|r>{b^%gaEa(eMXvbS74# zhKX){ z&?7p3&h^tV0<7Z%U0=q@^z&V1XP}T5B&7umv6neqC9wVjwNZUhVk4eUfl0QJB1@12 z;PBF{41hQ#u`;JHTy(BzknX#a$&+WR0R-8~d=@(N(U^bdba5R>{UYc_Gysp_!XEZzR0 zVpN5zCac~33*9jJ2FG^U|6969L zdjJ~?Pbu*DEoSrV<`2KEfdZ#+4$@`N+>QE09M&&PD>3|R+R!d-xcoRwQq@o3MxcF`~$ z-igXDdd?vbw-vd1zdWm7=es(W@9KQMvf7|QD}G>9Lvv+&Y~nDv3bpg!j+`H$Nf&U3 z#hMNS%nv)*-wl|hkpNX1mB8%OmH6MUcbxKX!e(D@AD%d z@A$?**zV*apk*AK8;<<$^|gKEu%1u6@OORl9tC$$lb|v5&X2f!ptX&!bHmxyhYyZL zqMqJ5P<|T%)pPWMoKeg7PUW-~*-#UQXg} zU|J_}KM42TA#%X^YG_`(?(Z|*({-GX;r6)N#yeq+ogCI1U^%O0IJ+2k-J8HeeG;hO z>ZBzOe}}A8eYk;BL7j&ODO&<`+B^ZK2m1upgvk1u!~RZSZqbXy5RKw_c-7j9Zbyn| zm#km}P`&I_d0GN2=m;@#jcSPqCnvOat=GRKJihEwx)w!jcA6V0o~p$G)(+p2>WOv! zcWHRpSm$jJDlWFD^gC*ry?&ch^>4;UU?V3}X4;}d&pbp!KQ=#_i| zV-Xil5COU=VYh*KuLu;M&-|Qd&(DgYTZnv1j#ZR0sRnu+j6sjeP4`rE6gFR$70R2O zUDTV3g|`Hf)c6W>qc&{fYkfw^X43#W<*oRJ-$lrw=MOyc<)Xerkf-7v{x=fHaWSrc z!=KbKzT!{78MRL+i;=1XnoF&BMq9ua#>~YhfD8^h#kK{SK(d(r$mD>hEliB$bUxT} zo@&G9!0Z^s*fWQpwwO8aOx`}I#{2WanDLng!n-d5`2v{K%GX%gaq6Y z#)fA2I#$NgrA&7mA4Qb$?XqBT0c07)qe&1_a4v00ko>Nx1+FiYnutC-ryGo6P4f)) zx_f)uj?M)=O{AClB-rG+*?Z_H`DqfU7^tn4`rrEZlcLAQ(ntO7E&D@xpX_GRPy2=E zde&EXyADN)BqP$v8ZV*5rwlozaDi+K@O70AwJh~wTuCGZ4V$cwdf*;5$H z^g^aDYDKD?x4~2xfJgn*CdZrvz=R)5t1gnHX8qKC7vgafOLZfmLF^sjenOCqN zE21su35ivGeFz|4wwJ}ec0^_9KBV@I-3FA5DTtz`%H-O`|0*+5ozt~XV6J*dEAOd%p zpd@LnoA4cW;Isy!pfs(-&~JXsAF3rN7Y15&7}*Uxe~Z7yRLzwJ={Cqi(7_?xQLQbt zHd+*Yc;RG^<%h!w#%4Hy;O&&HAViaY!5vLd0IHv0d=D+e#xQ5)KHOAug2A|-WQ1@TH| z)(kE_cUr5N(>3}wR3RTluSd+Pxg$6%uoP0;46e=*W3fn4QCz4?e1?X^BP3kS-9n{J z6%^P+i=O={ayK^wyC4-?&pHrv#+Vy9LmRwhjzJcSb(V@;uBXtBhp9MGP;n*0l83R* zBh#0j0cM^SnP!X3<;VWaMX5qrJ+k4 z2OnOJK41^fr{!rb8iHAW)YYZS7jiZ@I66QGAu9B2$*E=e;3tRnY%3~1iHdiVG(LPY z{w^DRDqPBn$Bif#4$Fgh5_&7<6%7bl)FVVy;dgC0+e@-!K|4bhYm`m)UqsW|Wjn5V zjl>qZUv|Pa7B{YB$FXfCY$Rbn$hU{EBDpmuEFy6ClZ4{J;g*U{oGArQ!!Y7G=!PSQ z-7t}`pT-PHhC@qxHrmQ}ZPIQMGLPXp4$Ac!k3O8@zgavw)at}qq-J_r#%G{qjfzcG z{C%npKRer9!Hgtx_-uoBil@r@QbTkmQzyf$0}3twCKyp5r* zllm}&crX?#+8=PNV}7rY0^v_2CV1un8NapPI~7*73D}XExtA@W1laHQ@pTdFNABgO z5Rd=EHY5XwXcvcLFs&FdagA`8a3SPdS8hRAavI9avTXkjEntH6?=x7wj%-J^CmQc^ z*q2LovT%K%9eIvG>$HawhAAIP`Up~~kzwHcqH^t!N#fK042!Mm%eskZS z-S>ao_kZ2@#fRQ-^pFAW#{%en8%~Dz^1a^Aii#@03tu(q4GVQ!ppqjEgi65}3%3Ic zI!Aq#-#?D~#khYf0s0rdZ@=MVSbVu1-2c&`oL=QFkakM;Fbv*t%JLCP8ES-!51a?F zb2{8PNKEqjnU2zQQX|%8BQMtJjJ(pm!h@oOhI0}jo>Qi6KtwHaJsRt8&wJ{axtGp7-iIS$t zfugo-Kxvo|490a@63u~5|G|Pu0L+Jd2h{>LLlBcp+8~zHw`T;ilMxrSEdmzUS!EI( ztdm>FS=Kp}wz+>64ca{nVlT^T4WqPM?Azj+;oEi1_S-7`#!U!*pO^MnbHA$p;e+wF zYcO}Xww2} zOu<82ffiq-W+Jze7k1bJSbA#_-=TS7*BmP1|21X24#;SwZtXb=t`)^KYLCUJGniGu zHjX#6ySuW$d2?|%LT;ac*4v*1yKDo>z*?^CJ*w0%hZ2k01`aUznL0NVnz(mRVNfut zePlFH=P@BUcD;lLFbF_YDhiA>hf^IcDbUBuHWbos$8e-`Q9`a~ny7&~j|nvbroDY~ z%vnU1ma<|7z(KP(I{b>ydNc6muYA_1YZs)MvVL=6^^Ow(>{iD|P@{wapzl>9z+S56 zB#pf66(B2CS%KLOoPJ{s#^4ZxU^6{}0uyI*fI$hy2VH~M6U!DDKvUx4&w-=R;dFRj zyd^2m*38js2e2GWoKRaX%*!`>h{1dg(%#`yi!r}>&(^LldGq`wqA@s%ZBp}uj?XLc zn8n67W>u5U158p3Bkb(Z=jTG~T#Hz5cZ}( z_%$QB9~M_1Ggx;#9(=vWv(yya8>?;GtK!ec!RU_!&u$KiFQWmpN4mFz?zou~j2@5r zV>my^Q4e>mm~Riz8n`a5KV%5a=&xJ$Hai@)Bzb*1I+xq1f7|_wsxcg0_4$aBQrvW< z?cmq8i6zWm#bo$MjC=onGWtZ%Fv z|264de~pVZ%W*+9e&|z`K7PEr`NxGne{Kn*v;J~GI?l8~IjtNT6DazKc7h~!??tN>3*eC=lvh|P#MDa#b5k$DLm#JdN{vkwSd>tk@h5 z^j-3ebqOQO^2zL!8s;%r{Y1yv47P_0Z~0swL+tr}W}mayb+I@cc5FXIj6A9&6@vc4 z>bR*ZQw}fJRPwm4q6J5NS<`4?x-CZIQLhQ5ImSTtdQ=SWZ+~#G*S#-j5qKzQ1;w)V z^`6194uZH>Tn+EKgL{eH8{R#1CkiTL(HbKSWWl{l>&RG`P2Sz&oj@(UkGVd1yr&{u zUq?u=-EM$!_qrcL5B6$BbCxGh zlpM5DRKN?w8L&c(iHSiiLZPlQIWJEs3GH^rc8ITmFdi~lLuEzH;WZGb`%1$X#xJt5 zsBMiG$7w@hRgnWNA7;cJu`iHvYs?6F5Vx-<;W$!Tb3_&DBMTN^R6f%wod=(swwok+ z0~`_-o>sH+QwT3Iqsx<4oPb$YSa0^V%PtH-2~isBh2v38e+^=MPJ?QMF#_X=@T9dB zTkP%-0ftO3xvJRa@gAy`L|9g~=gz}MmtqMc({+jaFgmfYeoVLprPWUQD^xbze(^%h z6|+YOs1hF$)Usu$T{yq05jz{9DTsaaVAlHe-3DfWbL)hu%+=)=Dq+C8sTjkquX#Xi z7cXuSsflmD^J&H8(L!ARA+N0EEE8O~ifcS^K!jNMGPkgSLHB8kG4RkU{|*(@3fm+4 zZuPNZmzTCov1qVvK-oGLO{irnrU4|-)9z(cZr>b=6E2Db!1Id_TTs_y;i45(F(@PL z_;I|%$qw{!mmFl$Q{8bF7c}awa}5Ud!>n0sT&@;pQ9PfUtt@A?WG#h8K@%cZBDSL0 zRCh<;^He^o3@Yji=P1R%U(oE)>CKzru{6M(8iv1_6z4V#0pz{&^sIXW%Y zvWW^(!<)@v3cp#Enr(`~RZFmZjUb&&QK}ci(*7{%mBN@K!(lA0Itg85q}G0AGC3Jf zFt@a_{DSqle+UxFz)_(KRKeuyEdf0pS`3LEml&hd}7zwpQ^cM`>2s zfZ+zQ$c75ZQ3wi=HIM<101nJvLf- z5J-6A1C4LKR+pCx<$--)J2JQ1cgY<>Xl5-bPX$7FLBs_|#Fp3~BaM$rw#a?gUgQzgUfGG=u zS;a`@aR-ClySj>964PUvfn3XQSv!~szUN}yS zGi1Xw$6$lk;N|@PPLMx2(00LtKOv($L^*FShrgtvW`$NrI|9V z*{nd}_80&?qbh4YA9CAKsfm8u74|I$(6B$WA;a$Fg=7lSDV5*xQpXT){|^ofrAdS2 z1ky-KxriYD^59eyw^2vGMzXP<@gOf_XrNOFB*`sM-FH%8Tyqqj$RE;-=DVUbcdk;i zOzT}KX5YjkPId-nYz`FOy5+bm@CL*mh|QVOOwP=XI!I~a+K5{koqARZUFveMf$HSK zAZ74Vl+LakYA`$m$>FB2680094ztG%98V@rMW+(Tzy(_Sux4K5SrKHfK8R=5`Xm80 zbQQN;>aY5#QAU+PHj82V=PcdYEu6EaRw7k5D1$=CHdi;`jZzHxM7Hg@Ud$qzgHCZO zVsgY&*1HmJM1u}ohLdi{v4Q89*V`Cf2T^;nEl57FfS@hX*@PV8cw9FMh;0{eYVW;{ za~?#;gBlG1q}mCW`Z9w^Apu!f*4LnNEo(0yoZ~qfXK}f)-3OUDyVo>nQh5xEqd$(; zr#)y1rpk$lAhCdAB1SD8kocl<#3~n$x0B+2c;C-qxSAaGd&6(=cbt*;*|nStRQxF(_gDoCL#gFve#t-Vt4oh74i8L92oI z(Rrytjcre%%Gnt^1MjRk%yB~w>KPw706X3ztodRHUV*$w?Uu_k(4a2nfEGSJl`sA~ zO#*w?KZ`b)g^U9X>AM?3*1lY<%Gn!F1{v$J?FrO1fI@ubjlX$19p`p+tT1;&YwsED zs#C5O`AvyqOhnu(8WJqIuS`0Fo2d{$g7VD3?cf5a04IRhf8u49j9oHIo(md&atS`Rn;#~LeEiQ4;M{J@kKlFMJw@#cH$2SvGs%OeC=}6R2+(9TTUmP z1ownH8C#+?Y$4Ngh*k;EN2Xc4nO56G9|EcSe$V2$^qmQaScDA7!#n_AW-Y)I-s9BU zT_;S5K(n;_5II-}>ri>^y_$3^i-z$GRBlYzNQmsGRI|eYUVhtwVn0Nr3~I7kDKnUp zX45*fgWndO5e!$^F)Ljtp-d%7UOL`mT>uyU%>1VzlmW&M#H=!}JuIBX&5@R{2{Lsk z|1HVx=Dc#Lfs{iPPPYv3HBt^@3eKN#iG>LnpYg^!|p#V4-#hf<499v+ERAjFg3IU9uR&l|qlC39LTOTj8ED zD!kPpepe1j)Vi*AdUszu@8^n`uGw875l7ha0|N231_2Re&4{h*{Co*eIn~OWZ&=98 z9!i14^jZQWE^QudfR1FuJ>~RYEMCa8N;HEwCAMD6U)kacm^^R6S9s5YK;RD|jfE1r zAbQ~R!>zE}`obWSvfJ>{PgRsSM_y-cT!c_7Bd4&dN3q{3`cnFOY3C!aM`q zdt*$(r9G#d6wz@n0B!1(y{~M6F|%SIE1RjL#J(;X0OjfI)?WKyBNcFWV+co)l4(;L zMny!dMTUqlRIlH}FwLg^h>V$_(U%0kwNcO+aB1l@^&0BjWz7QkW@{;2?B&p^(XK(9 z8^M!f0*O=&B4fg0j%xVS4I`^^@MF-ZWgbJ}*2l3kj|*DrVJs$}8Ls{UrdER}JV?w- zQ+GFmQH2wRgHl`xZYouCgraOZfg>sJR&GsX>^vM`*(X(vew2DHj|>Hl@jug~(3ynm4jNnpB8xxRl zh@YY_Qgn)Rs1J353qcjXXyuc(VTfpUt*hCaZ^{H{J8RItPILtt$aFh)aL=Fo5^Pzh z%0O#0EiH@Gn15AKtBElTztJSsVzg_H*Xr0vQ}^X$+{P%ZXq-ne5iba0=B(p@(bEwz zFkdyZu6?mAVfiKmw-i5xh-sW8j(}R}()c)7%Pno1NCrP2BTcTv^DefGL45*!Q&H}C|Hw2%EC#V`-+5+xMC{s3_abqm!%sW)@$hkNW;YaRDVcNy)=~De&S5Vo zm=e|Au-j!O*@Z2TgR%zW(-u~I%T^`?Vh#{#z=SP+>qAGqD=017i$PiJWfkC#6O%e| z4B11}&ZgT|{30%?;vs_?Gz~dbTWgL|Wy5vLqGa`S9fiV$&JtO8JJGKxW+tmG7ut7? zbmPEHKok=OqN1ptk40u7%L49NP8fQtsym^kAcRCi!>Pq_>ER2m4Iw}+VjC*f$!Xw8 z=NIy>Jw!+)e%MBMAI>gJG>Q3+b+PDR@z&8ts5%5So1=8LajXKSK^+xxt?KdV7%fmVL!X1*#bGyd`o0H# z8hpfkx_h7#VD8GF!8EHKm_1JWU?*a1UA6i-mBPJfc$-CkBP4c?zBlH@o>s_in@J=`6?4dF*)Dy{XLuBqwTE z;lkc@9#{!L#7_)kD?Adx)bDi4NdwJJ2fdQx<2tT{`K~U9*{g;KN$Tn@wH+)tY1pe& zyQA_#7F+J>Szt}sZcsflv)LgG<&B(%_1+xahTkjltfjZ;f^25Uylt65012-xmLZ zn|QO>$UrKeSB13s8XnqrM;Edvmz~pg#`_VU^-EeX5&&(H7OoepWalUZLL|!Z#558B zw%Pf!YAx^?O)#`ucclq!oRH_n_134nGNtX~Q2wFdMSZWry3C&1D!5hF`Y~GL2 z%sCIVM0J=Y#HIj?GNEeKJPDd=8^Y1#fheGckHg|wRg~23l>|ZwB`C(yVdF0#LckYU zp1h&7HxGXmlOGTLqJMw&FdW=ZBILIJ70?J6^_tD%E<)hC zEQhfTCpK7>z|35hEB105OMQJ$Gih|!y|vJIG#Gv>9&Ub&Q^>ag6)C2H`HTBX(Dbg^ zFc%C)xnRHObsri4Se6RFZ`2S8)z!DLwgp0W-M`{e6qjQ6L|>eFM5_!Y$_hG<>JyNb z{pZT8;faeGr>V&R*(F1EqTvgdEL$6RA>JV(%$xWV{Um9fA&Dz%e5W5^X5b_M{L_>G zR1U(W)Kmx$$W^B09uT?udq9MjIT0jun{r#O7Rj}-nU-JJzJ3&tw0caS@kGb`kARb7 zk585F8*PVn}hCsBGmSbWG584blkaA zkb77hcDTKLE)P|?J*p|^!RXIo)E^BWC;b3bK&rpuTX!_*(xN~Ex(z;7=IoWa)ihVC zCG8_LVr-$h|901ht!17rA@FS+zbV_hEZB3={P%d`2=B+^Q4Dqe?7G1CPZ#L9K=1C$ z?XZ`G$N!7LFAszJ>!A;iU=G@aDSi_BZtPPVO?MtaQtUKCmRfVO(1fl?zKxTzG4qrHcn|QP?w8TyLt3RITd7f2msrXX++s?IdZ!p&{cs`Z z)W#4-;LwF19$a92GoGZy3(#S&_c+Rdy}O6oNe+w!?@|wc8BmI2_KukXufM|wY6|P# zchz}h3dj2dLyW%_gLV`i{HukVp*EuY$ZoX+}mROe21Pa7e+zylz}?4D$;jGAn!mGAbnbwIH4@z=xs~fTU8cl?s-=npJ-_A=}f)||r+L{q&FV^_gfC9@l(`c+ zOf?W4&__rNE$g-EO9((bRV*$)eE7fu!J`$n+{}xo^6(4=%mm@>at6q9O{0BF%Q(Hn&4NIW_zM?MoI?n}8{ zy`HwkRwx{Xxc=>`#(+)0)5C0&feyr_?lahC2}6o|xF5E3^psDt5e<*7Yd&> z1bJN@CMg>)47LmHa#XO#m(Ra{e$^GgI)l$TR2IB3JG@@%J9J3BbVk$a@jOdsGt5xD z(!6O*^OId_+Zigu2j64~6k*6dE?S`<+)|N@N0Yy^0i6otPh3oNWTCzM?E^H$mV5}N z8M%FS>KOd$du=xW*2rc#5{U?=dZtZvWd_is|9`*y?Z5vm>gB$8t`5iL)>e)E9uhNq z*>`+`KJa0>TU$#yNHF*lS0i44wNAH;{!xAmrE6Cmfv!B%dpEY=_e!mFg?)j*8e9({f zSQmTOQ?a3R)X4sCv)?~nHo@!PW}p7^S@X`!VutC>(vW1}i}E5>+iLYU4e043-(MvsZjd zA=DZUdfGnWsnbTTQ9g&UN}I%Q|GD^Y!N%Rh{I#H-QS#US(CWjIneu>vT$uaXmI{Vj zK{KGB3)|;UPnX5TPxYC|t{t8)ir+rYe!uw8Nj65c_u*||WmRH+?n6yH-5HD}2#;3L z@t>A2hs{@q~&};oJ9!R z&de8n){-20eX`}^RK6@!Gp~LwJrNDQxU$BfS+3`7>Ix-Q(EriacK}O+8`p3Nn&IFN zkWd8%HaLO*{-;>)Erq(Oi{CzcbfN#!+E{N`>=|P*piswTpU-20aP$`h>agTISx~HK zp=biJ3M7lb0`_JS2y@OQ#HiXuc+gnF&1e|L_4CWmx|r3|-{R25VC4m2*BI^lSKD?r z#N(E$S2L=n^8{u>)Eq}rlKE+iS4}Z}n8!oCoxlUoU@r!{paGtg^xlLh>p;2 zG?dD{KX}bwW(kLiy?F7uU+>sz;AUox%?{Yu=9+e5{o8LJKNrt+83-(=kHzOtcQ#Jt z`5YU;hnLqlT$lUL)S#AHg{Nr&2h(e1tjnfcRbdp=%h%XRi{o?|Lw2UO@mU>1ajEjN zit6iw^v_7E)#4y$pDDE6!sdWW^5fJ-Sj2u}S1%K-#xHO1opR70wB zc-Hrh!DerAe7K|LV1ZaM7U1c#{jE8P zh_Tdmp9GwNl*Hnw;orx)*dhC7)Fw*TNZRREJIvvd25LZ}1)vpUVVwA4qF^J8!Z|w# z1TEe!JSy>w;Sq^r4MQXzI&vTmjNFYW+I#qjO(ELr1gjmP_z=(G*3x{<=bA;wROGd3 z^S=BJy2x`HEGk zQt2sw7Wx_`eZeNErj9Vfz3OoUNED}?RXMXv0%3!xd!>YQyE-Ihoc3yCGL+&_wUyzJ zJg>4Kh(qqs;>3O-j~ng1?h$g!#cAPQoCb}^W8IQfc}%R?S&)g7x|K&YezHB7pnPsB~NRwp|tcuO= znWJkH$YUB#Jbe>!iK5adm$2pC>0aM|o<}pP?Nz-*2_}go7$0LHEKXiIZ#z6oD5??4 z>(hipnyJpP8bt#8WsBOcrjj>{s-m66vXKTx20yAEhzHd31R|Ft9wK8Q$;d#F$i_xg z{f#Z?hasR?L=+T?cCNyNlDCk!jY`Tu7*Si+w~4Sdk>(?IeS%hDG77}7?b4g}vPrme`x6YTw)2G!P+wq2)}&aM(}n8S zzb>|7NC(T^UmO_Y`%&F*InY3PW4K7l;oo7$qK%f8ZwKxLn`a)l-sMRGloE}C71E3} zA}GRZJvZSk{h*2QxJ2xEES`z&+NygZ3)K)VXdArnoy<$MUaOOALnLEG)NPMXbef>3 z_JOGzz9pfz;sn zcyxXiuG2X+>%dpOK~aMs;8fW{>atTmiHZVyMcD0G-9JXI=keQVCknv$FbQcp#hpC? z3!^c0`gVfGS^Gv97=-s39Lp%{STJ_VYQTD^t6n3Gz)y@vFx=y`^ia@kn^}tlfT(e%Dj5MfZ@Ga zg+~~)SjZhM?TEs~(Be|KTz#sW(-GzPc?_27!>6!7VsZ$!PpZ8NPwOMGI^1!(9D*mL zsFfOEq2FptGh{o1chjv}+U9oKELJ64bJs8o7NSeBo;Q0;BYACqsP?e1A)sBoEI9sg-@CCu_v)(n>$*Q8=H)9}#Z~y|t`*#; zP5;a7V0=@2edu1@8hFwtri7TT6v`fi2lrpP_g4w%aZJ38OTGo!OeesLtHB6HdKK9N z6LMRO`hPxB;R1Ac_s|lZYCD(=hWFiDU|bs*6tr0{ZfLhD?Kukc@9z7zP$aWfb)exj z)k(u1KI)Hq18ANLh{;ks7oOo`kARgI1`>~VI}jVhKEH?leM@!@td@#Bws$)m_gi9d zlNUGr?p0bifqxlZ{b)jaqkeaimPrscAX+fP(S42?QRQHj`L^F3r>PC@sb}B}yEnX_ zKvmM=zQL9B5SE_D55xO$-{T(dZ-?EhCZv`4;`b!s;6sz!LTyBc0q3xH!>hsd zkCvuQqUHUO#A+>HkB%CXGow;o{}OMq;_;ah;Z(~?ghA5L0%gV7*A`= zW=DL%?hwC%Ii)$6tU0kh9B>Q$lQkNx)NVAB|MGkt^CRmLpkeeWv3e&;|H)n#bUERz9CYvJkcQwJ9{VCtdT~>8gWOF!=V6nCm^4Wr0q}p;b#P(o$lWQLKO}#w*^AEe;W`2!x zNkEa|6%DBbX{(?5Z-=HyFyZMc7+g=x=Z6LqiqC)JM>sl`tp8NkO*(Kxr%TvHT>M>> z2l=Hz3RUl{5RBq}lDM++$b8fRN}O!khs3(~*lBxr(z~I3(89{_Sa2{NA#OapN4_$? zL$o7#@v{~_UeD4`&ov75M4JVy6X96N4!?0I700<;XyMG|8&46ZYbbrNjS2UZ`?#C! z;+l9gPxF&uZ+IKF=ZoUv9OCjE;^R4l_(M-vGB%ywACHNXq?Q|tGYEK!Cw`&}woa_8 z({4Tb(E@)Mez$elUROkN+KuG|h25Td;jWLzQ>}RU7>C@iJ`nBbhY$ZX5Z4mKG+h;V z&h!TdzmEo#cMSLcKl4E$nGj?6pz-waP>L(AyMtSEPJy^+Dlove{YhUVYUzsZcs%%e zuf!1?STBH;vF#>>lI-#xVU#d|?$oKh!ARm;`)85Oa$UZg;^n(ZUN(FF@=P`#-_7P@ zGN$gje+}*)@8s16uK#Ei+y%!q;SsSN&mcp3<_Ewm^*-!)DO+}&&x2_FnJ6q-Q@CZR zZA?p#i8S}6>fZ)5+VI$11hsAO$GdLPy}kzP{NrpHFInn;g1MU023oIkUXX$fKlgpv zQEM){gPBSUVOj)f0d~Y6`88-Yv1AOCgLwiH0E)I`IUIcbL2< zxME^!oCkk7(O_w~@e{eDv#=OX_4S!Jml>Tam09UaggBwuBQ|ZwJl16^^rH?)c4`-M zkTQmSLN*T?#w@;w##%GFv;cl{K|F7OlXo-PXOi@TnMFZsC-DU->j;F@pPtRLyKodS z%<{|_l%7iPxa?miFcxQ11kR64&;T z?!Y3T!}H=znK>PZY;Rn+K6?y2KM3e6^sW>#|Ckqi$6z+=?H0SJ@!LjR@w?9j)p zTSBBPAF`AwBgCqvFUQ7WQ`LO8@dW9rj)KS^#LvLgY9c&cMXOnA=;pH?$DULyrxqC` z2L6IS3j^(VI$%Np&Zj@%c@>EBQuAT~bFf0G%LtNUV`LV_3iDHD5dG4j@S^ifi{wY4 zvL-k@ci8Hg3+tyUhQ?5^y9x$U!KU>Ys92u3m2iP*$ z)3Y2|+=>zUUE|SYWarSfzA1RIW$#QMEbKH-)S`4P_wBNlx>5+kw_U7u$ErL!TsYnY zE}IZCIdus0(6eTMEuL7ea4%u1Hs&x$5G!%lC_9Jj7?|)K)kI-&Cv)w8$9rm3P1*1{ zO>>??1QW9K6D1*U&LBa^wL{`L#Us22mEvrS;#`!ZtZW6`7e~y3pJHzs)*b>$ zLH&ed*2&K}2I%QU4kmdc3Qo(rfH$944BdM%{Dr6moofN~VuP%l=}qwKvSse7bq^ zK`+1@)I6cIjljc1&2_z;CQ#FfWp!5=L)qyo<*F`rOKL}fsXGB)pPG;+m3grUcW*S4 zal{omQ|b&lJ?unczAx&zSxW5OeEC5CFX;az{r{-gj-z;j#sn&{JWvCu?HZ_D;Q9IW zsC(B}t&;xz)o|2`>V6xv!p9F+?evdVgJCP?YIG+BDz|U3Py(XWm>5T9E;uS3&4#1# zLl-B~uU{IlACKQYU0$|=KYePa{?JUgKkkpd^{<){4D;Jr%;yGXa5XH<+!j}fuWUse z0@5*jIo=Jg`g-0;VQ|ZcP!5L)uU3Q=#5G^FS%Arj1smM;>EQ12^U%TMvH1Mqq8;&{ z5C3f<`hQJmm{^v3S_ODE;yvC`s2>Ks$>WH|!1w`I1To_b@u~RO3cvVV{I?bH`BQQE zpH|G}Z=Z{ckH59z(l!zY&`Ei_y~*HPk~<7dwBkO!gG0PtABXQYv=*uj722Vh;JHGa zNrtB5Su~gLU*J(1ZYlG3-W*mo1d?&_*SF$FuNMc?dqiPiwGxg0MMA@ee?t=%jaK}Z z$>oR354g%2Pm0^eyI+#NLy!)#zfa}%Sp6eHYuS%E>YtC@`^n&cEX*lJ5YAz-=;8+L z9R7B2H^7zTIsEnG?d@4)TB9AC!U(yc>iiEEleZ2?OVVV}OF&LC3)8^##f_v@iz&6 zeD^S+eU%2>@1Gp_3oUYZ{dsfyRTr{nx2Jci9(Uq`dAd6u#ac;cy;vUk<4~=ht`^mnX2w{QQY;L5xCP`+;R$pElK&FBst48SrX6`I14tT|MNGn{f)cxw`r`%87b;${FBW?S(GnXjBz(l z10~5o4|fl-6=K)WX?lL5k%M-T@p+n8JSxzlaUwBeNE7c07sJ9rsvX95>_hJ?s@wZ` z4t4j?|9WvA`EI<+v-x#<#cl5#_G&Ud8k^VK5mmSt<1TJ$it*roZC&fJ7oX2zY^!a-d}=AelI66x%x%WH zX2q8K-jDNzi6kHKDE3{7PoFM+Me+Nu()j)N%U@9Z_w%pPxcJZKProAhFW07hGJ?B1 zJM8|N6uq;91lSv%48Nu*zMY*+Ai``b#*d>BzdiT`;irF*tEc-Hd4KxFlm^|^sQa&T z{P$Ind}9RHNpVT_Yp0)VjZvTXtLZSP02Ol0_2QXd5>&L&ig{j0k2mb2?Wuxd3K!uc zd(}KKXCSrs2(_HiqnxNrN3e;J13n#r|G+zs7W|-pdsTFA>2!48#j&G>=9W0KUyzIk zbm;x^Lw+Ocn%aK_IXYZIcki#j=T3%qzbeK}_x4&^&(sw{5AIGC zaYwUG9om&Yp<2N&S$wQi90Iqfz-F?W4sm@Q9w!~*jB>%wX}f1pb%SwIj7X2NNbB7y z2gOuUSZjQKYuc9Qxw2#_rO30X$%R*2E4z$ZQ7*3r-euRoi8ro&yf$c=qmluHne+X5 zf_I|EvbCc3<=c8!&f6(m;d4}Mt%OT+rD?)lSyH6SCq=|ulEa9va|7;c{Cs8{r3lXD zdB&GS&k(AwYy2K?tphKX?D-kb{$?UUoyMfXvwF7O=;zKp$`|{Z*+<16c&@;ufQjyx zL&=Sf?wjvo!oY(K~hvXx)zGR9t3owbqNH)RdnTthL(eD;zH#xSugd z_AoCQLi5u>Hcjc5V#)?BHnlYY4vWiG=d`U@^KwoH=_J5*-BB`v$zc4}8}K#(Q}SPL zCLC6iy!iYwyuIQNHnWS?#?AD)u2ys`{~JHc1O7_8e0}Bm;*tP*4BHycN2_DGrj3S8 z#39cP7n(|;$L!AhwAsAPaNjUH?C2mH!ZPwY^;@TYbx_!>ioy9pRznM?A-?}S?Hz#a zby68hDgy?VK>~%K-Y|Y&@h2emr{gROcAi(Ij@nhpsxF(w#(sGM;&zv39zJFVih_^T z@|Az<#ov%oND|}4-#r?^1AdIsI~LJ6= zC8tZFC#ts8o=3CTW92yE0$mndOifmD}^Ghj!&YfC28>|(t-hB&X*YQ zWwlt(JDYl1un-K;XIMgxrFn%Sh^o1D-hALy^}OHocXcS=XfK4;I9>_xNSK1@7b90x z=PjOharUZ_x36AjeBsWrxJ`M$SP^lY22T4udokd^T3s4&;EBzdp+e8`i}w?%#0=WR z*I$Y+x83_cipP8YjR0K+L--q>bJ4+Q`~W8(0esUAW^Gq~euJEL`?vD2C_D2v>C5#R zuE;tE+7KuVyGvA}m2NLn`&dqC#9<9W5;7X`^>l#ICThP|X~0)*!B-J4;(Z_G!iYCU zya|GH-ca-I;W1hhK~v19olUttElWOI9qdg&hqj@Lo$M(UH{J{UDm^VXXxrtcq;+|= z{)rI(BD}|T#01Ywuqro{(F)?x^0j#7zg!k(0jw`XMQJIPzEN>31UvSI_{8GUjc8@j zH0Xp%(8xd+)_Z>HiKJLjYr5u(bNZP7TCfAd(}x50cIdopu{RzTFnD1f%PEn- zc%uB8&ioXb+v3E5-yIyQ^#UNhikGL3_2PsFrn=5ZJ;27)KP%$bkGAAsVy!E-+Q_}D zH38qo=08L-E}xhSu%5;Nj`b=(Z=yU-C55^L7q|$OtHcNx9&x1L4!dzzoV-eK-=2`- z?WB0@s*8S2qk%t(`KMobX3N78mVIbpKtL8-`=rrK3#0{5QLaB0Yt+3AlI}1WP(P-J z|2F{H4;as+&AvRw@J3VP_Z!-nX26R-r>B*uVZ|WT;hBq!9@O~wPG8dKIp{H5Fb;}#rV@%X?B=QqR2AN?Oq`1r^8dhC*6zCTipy5C*s;kG-ure)HB zt_P#L@7+<~fkf`x{mZ2)&RZ>X3u`chj@6(!MUQ{HljXRg&S+H&gR>}e?{MgX@wju2~|3r2ETMwk!Cfvk?m z3Pro6_$mq%0?vnqcTi0bF+|cz7|7fxiMG#zL!O9j;@T4yTjb|5l{MqNVmENy;BVq2 z?;Mgx=D(@qatAdl=~3Mr+6$(drEZL=7AcQ4bD+n%{IORBoc6T9e3?g^$p^R=;`Oi+0(0 zXP|SsrvsPD175cWYg<<^msO_~s8MZ`fm_P;ZpAwl)JdU^W?>#AQfg&A=X#hHQ8T+1 zk88bA!wcIU zQBU!e?f~}9DIIqqG3+w|IbU!$h48r$okHngyg52X454Zc0}I8az8ApVJn=0bV^DZ6 zW@E89;T4|SzC&UtpC2aXGc$$pqlbhO6ysYCppN`B#F=ifIoHP&I1Lc|x!}K-Hb7y` zXz@2rBzYNiFg=Um)R;5lMH8|!pE7r6eI#wAf$4r9iogg391m}yd}u*lmzRb5bn869 zvB_@Uc@jS833n!)Cwaj6tUt{CJjq|Ncmmr)G#a0Hnbp8^f_nC-Cp!l{+XufdS>t>! z`V<8VluXBh^)#?;fwoSng*w=HH=R*oMZ(Ax?%Kpqe0IAUjEP71p-wyHsB}C0-U`2= zeK|vXI}_pCxd>PN7HZstG)W%@f3d#I!*JY(6UBDyegA6V6yZs}Bb4A*Vz$nW$m)grB^kj zGmhL$J!N2bi1J`NV|keEmmbEa)(o}@OTUBt3`a8$UfPi=0b&BT9UpTTF?jq|y9I9L z_l(BV0SEDf(GU>KGy7AW8gs>SM?QdyQhW@uUuorfg2QQpA9wrs4Jj5E&fa&%qoBMr z;M@WONlrOO_ZmIWx%OY;6Uki;-!fi%ri3Du4q%%fcT%`j?nn4L%Dyds30uC4k09` z<<_XO%TrmjQLGe)S;tF{mvi~O{?fwP<(_&eG-L5uCa;nmJ_9JgW`BSkAa-$ON|p^D^R#7C zggUf@Tg)=#p(?1k1F30`{jL@hmV(id^UNEDRT<}`2#JwnX>lyHke*vYIK2UYtJ$~M zX0P_G(j5`z=GPMug3DPR$r0p&^Ie4SIVjw(x?b}1iMT65Odb~ROf)+aPP%ItX)&3) zx`n%Y9V49|$`@Y^S_Cv0J}KTO*9j`*Hdm&`FLgGZ4IK~ zS97tf3~yIbe0`^dBjdV~ldQTbCvF&nJbdulr8V#;&UhB(tqu5N`Evnhhn?dS z9%Ain>BO?H546BjVd2q6BC_SG6Hb(&+IaZ|KFanCmyT}}6u&z1(pd%hpDdC9XeO%M z%*qZ7PL|fUx6bP;!=-})1%JtsT<@00v|nqLX(DeHhbEabMCs)_$&x{mTg1wzbtioN`EEo2hT}%Du8wNO1357!-L`NXIE2v|91UP}$#TNUB2>&FYE1Lw^suW*7 zNtn6bYReN0ztA3Mi%JZ@2SfDE71yT{kA*yM7oE3DT9gjQH@U9T#(pWcygR9RO)Y@x zd(8K5_Q`Qxr{IwPc<7G0cg0=*&OW~nt|m7YxaqUHhK73g6D@|FIjm4BU}pQC$Jhk9 z!B~wfCe{q=5>acr(mK|PJfuRCLUO82$dBmdTg(=#tyzW1ty=6m4-MVxfnfl6pmeo| zxc;{LC#_ewnhIFGk_yqorI*!5q%=k!OrVJs(pvY2hXHOjoQcW+VDpwCgv*Z*^Jxy9 zmhJJ0j>R!4I_*zxz74L5{%ABD#bC6(C{_?#5NgLTVlX6bhdq9`bOu~>dw)dKcrbYs zu-pQj$E5KdhAatz0ArA5W|;9!_rWE1-S4uRs(IHo_|;(Kss=Mcw~v$7YA3k7=4j`q z=Xv2?N2g7lw7s)n(*~^h0kwEChC!L~RkhZ{7H=Kn1RIb1ynB5*TB>Tq#DhgU>{n4K zZx%h6U9c>=iQF7QY}i(8k7YY&$md`++_9e1e5TJRMHvVu=DOthCHO^9RIKPlw$W_Uo6^4l85M zcYL9)iNi7OcG`h@@$+6Zm+W`H@2C;{u##utLQQyJ^*=nD4Hyln2_xjfHdIbww@ZO$ zEhcV&{2gu2EVGD_K4pFaC~SWL681iZ=w-okvWZ!c8(boW4UdDYgF?+^p*bDDx3MXX z)XvA_T1#du3uGv95;3zNrbhzM*o9|59L!|R0v#Q}RD}g3(Q){?Jy#lDIycRdM=jLt zsr;~Fd%!iNEG$=}JFztI&}Bodqe1_EqFa?YCOJ={%3beJ$P)|N_TD49?O#uRK{8V9 ziVpE8Iw|DKe6yNC5P^z04H<$0(GjH4c?iiu$^ubYNcmHjQT~R0pYW#=*2GmDDxo-n z#Mctav^#7{;-*ogSp-LWClGH%FwC#148sG}xTGL_4EMMV-TCPMhRzr0XGO;0>suS%6sllau^WRIMWnVPwy}2>N z185wJ=KPTCrTn=FhH=XSF$hvk=$g*NQN`b#;Af3prK)u`OVFGb28)VP0_rqah+-eX zB^`c)d1;}p=lnLLTp3^%wPG3xzBV8beN!vq!8W6gjr0QT@s+SOJazm{(PmiZ+K3tu zS-dguq?(*cM#MU2kuby7DHdhqi#-`BDRIYDDJ~1_%eoWO$T5htuBOaL*to)XR*-e0 zc9t+l>4-DrYHo5b7l!TT-Im`MI4Gw!g9W@-D77as>P!51$g6a`&t-b3lknkh7nH*8 zUbYK11k9nWylFExkup)mQlws%MlN1Tx0tJv9eZu+^{>nt#Lbs+19pA)y$SqlaMu8i zt{%Egpc&oZoHynC$clsPeb<3<2Pj5EJNgWY!I9L=i8&ke)DIk5mNYcaY7%obT(w?R)^J?9Fcu3=(lF-H+IA?C?tAB14u zxuK==l;j2JJKvy6P~~+-vwwP{*0)3>u`tgYI$u|K%#7aj72x_d08KIs02vCdt$hs4 zd^YgQ?*|)b^?#*?e>sgX=vwG(it@~4en`Nlv{&lD!m5Vi!n5dAs5n%hYU z;L)*s%{Fsh>gVMFR-KhfLm<;nqYK#yTMdu#MGE6*y~+~-NU?u!1OBH0e5QJrzI_1X zV!CW=Nf6&|>cn7Zu!u-n4*g0@J0$JcVQM3r=M9V}+>2R@gJ&8#!|`qL^>+BBdkZn( zAH_}g{_3_rV)#9Anb$uO(AS54629txdHnjdKPv9JgZpA~1LNu`qW@RF=MjCVHr?JP zsSxbT<7hkyKrSH)eLCv8XA^Y3*9EoO@rAJjp47VbJ!f+pG0@u?Vd# zhh)9B3xG3WC{hE=u!vjleVn@+8xgsC2O9bBra9p2IH$X2VQu@Z!yBS!qvi zMd2U2M?F8LgUXIAaQh(!l(aqN{(M%_3Kt7^I;?V-DoP0uf|6#^EIu)y8N5t@np=c9 z^SNl>EpINmV91)QcjyU3jbxf#PaQ52*(K>3fSQI6KJtDE*D7i2FpHLgV3xLw9VR}j zu}iU>B;BocHNQFzSP^fjs|=S1h+_$;2f~vr%*k=iwmeiK(!`Sh4FXZa2%| zR$YczIe!POCU3>9WD=(hR_zFyXAL!`G&c{C2RfU$rm}Z(_}YnpWG1WW*~m9%YqFU< zKSv>_ii*vj_(j83{B*PR+piAeRT+y0v&j3vwFW*|vG3s|X4Z%Rsa(c`GAcA#+R}XR zho4Lpn|HXRvgsaR1l99kztHX|p?q!bxIYM_O2 zdv<&|dK1T-gRptw9g=p#{6q^lmEjICf#xSC&fPWTfj2*gzKM#=3h^O{D*VfFk;_Y|-XSUMS=Kp!>)$tU+O4HXE@{KE# zv_Lz&>|AS3Y}wt;JLc-ZF8`;Y;XHnZ*ihD4st@8j>-Be-JN2zm`+)_E#|vO zg$4hvcFr}fEx}u}Y|o;2PjSh}Q!kqGS>=IV13VRCd) zcsvH?M|(wwqRjBn>1^bZE&Kl@9#dVEB?!?k@(YsglFKSzsbpsmxQ=GI&Nw`)%kk4z zKD@Uc2JB0_-zew$EDlp$qT7co#PWoWcKi6Ij_WRO`eJD|yE*L+Wm?3OsIdfGQM`vW zTqi)3DcdbGq9^R(TU^LJV`^<#AzNn(dpu~x#YVRKiI%q477H*{S2y{G_Hr_yIVWzF zxvphsH1_`X(XG*J(4@4rR6$}GUt{qiA4(E7_@3Dod;FHL#uq4U;>I;3N5Oi5PoACpWiVY3Ea%FGAszsF zApFo1KQ_+`nhHoZwy4S$8ONrZ?ASv!%WYG#Y@9>jnGv&;FZ^Ie3U;2tBo&9X}LEMZDyex*EW)4>mj(D^L4fY)_P`1hfrX0&m!xo4bt$XKA2>rIH9I2 z(7f!O+kj10(1ur-uMv91PZ8P|Fv=s+Jl0Sr@y;F^n|-CSG_wsOTl^WMho&X8MAdFa zooA-}o%&^!hZ%dSQ9bwb4DH1ak3)ZHP#jZXnu;O{?%njh23g5h>xvn;+Q$6wttZco zionjMA@n`-Qv8679|1Dlm2LVK_YMcv9+UFPe8x0)6!ONjqvL)1=FK9c4RZ!8CEUjI z$h-w4hk1557cU*d0fwakt0#WYuPPHTrsaZSp+t-Vupu6{P-*G91-{Fj z?X*12@$h`nQ6czR>L6|<&9QFu1(o>Llz>qyIqA3 zQ?WhHemyfF+wjU^qhYT<9uIT))dMJ~npA#PSd&B$d!B081?Ul z-}*Y7*eA8zMuyklxK*C68w8zj+su^e&sr{O<=aPOi&yfP1@($D>QMGz*~D3nIYW`+ zIcX`0pY3`RF7j-Mxy3D&o$l2Awho!dMyWlDaNo6H>9PnL~ zV%!mezzi=?PS93LWM+K-ARNIKSSKw9I< zotE#my6-1ky{N3IyiMiY^F%U(vco0kI=x}Db|LH%Yg$-fnYA|F)kV;aOIAtl_cdN> zR$H*GLDaG-!$nA3)vMiRb1IfEP|^3SCJ}S_#nGNs2Vf_Up->e0$X10F13N|F(ol

VL}DBcLLs=bbDy`FT}ug<0wE(;v5B~E5rc&{lHaA8*pQ+9e1sK91OaPfchl%WU! zekI97i@L#VhH-SP7J-|L?GqqA5N7Oh;dxLursjv8?X4X?HK!-lV1i(sUZiE_r;;X? z(d_aFb0JpSA80tdTtPIHo0@C)<=0&A<0aa9j8pdyB!B3p5sN)4A5 zlQ|$GXQt92b2^!*x>+I6ylL$K5pJuQ2sR~^`m5vRCQU1T#uCXhG1wfD<-QBxbA`~h zTv8)dG2wVKuFGq73LRh$z9RFS++YyO;v`M)nFno&^+i=$PrsV66?sGOGEk z6J;?R%<5`XlEkwqji2g-Kb#q(M_X+qT6FroqW=v(+Mw_BBL)Xh>>qv|(J3JUdqeoZ zne;8Cj;W7`i*f95{Iy!|ro;{Cvp>CmQ+;8dxpJ+?omIym@??3%H*xSv4HZHUqaA}9 zYPV)3JN+$ICp;K@;T7`0e_yK33+(+K)^?Cy%+$*@%Z3*-Q-F~(1633Xs_;$1>R&nV z`)Dxf2dHR(={tuMXzv{I1pa*NkGPS=I2H#rg{ugb##Yrb>WT5Bdz%vUet{kJzZSg= zEScT)CpW{Zaa%kBj3y~y`0&su*qF`eoBnlZP}^N4G_8&)p4vJ9c)8&hHp2bzh+rA3oG)g{Ekg+U+Y+SPyhDl5IHPEK zsf?0BdXR-m8;Z!I?11NQG7S;tBTKN#6027GbVM~4F9C_mtz9|wT(;ZGHL^#=)o?MB zWe{?>c=tckWj7GVyX0H=FpBwl?$PHe9V{9EF=sKV$=vhjPcg53Lwy$gPrGprLkH!s z^x1uEd)gq6I;v9A_`oA=kZg!55b99x(bc{kvm^|2+KNYUHvC@Bj!AE{pmgB);mnr5 zcpRiq$b8T+3u^*d+Sq{kA$%=nJ_7{BqyX2cj3d+&wZN3=C9WS?@l>47`kN}r4z2rFh5mf;ihR5W;c(fER~Oe1{jTICzmNP)T=~HHX2-g?VH=f zLB9#@{dKFmD}2yH@r&h&DF_!gycaXhR7p8tI)^DuzET%7{3**D~P*2!j#I5gRj& zFPys3!))g|PYU%?1*a6KZ!i+rdbj(D4U?tCdy_vImPdQcdcDWhf?e(GUpC-UiG88Q zd-#5bhXh^XA%ED*?F2Tshcy&ptPo9er8x{K)uFS0EsMI|tC^MY1N*GM9^4c8!(ZLY z-(Cv>+ULD}|0jSyzJ||>&%g8M-QB~b!Tx*kfj@hFIN%iY==%1Gzy5sej{YeAB7|UW zAI9V2_F)nOUw-(&_-g0#OA)HI4YFJgr{}%zfd|@%FvCoVifMX|iQq zi`7O<3>iXrs;OrApon2BQMsQda|_|-wRp+y2g3~kh0-b^Nou*77u|r$OLArdf!YG8DP+l~A0*jGGWn2(jMqwoSDnzN< zh?CcnxK_Y?I&C3V&nVqZMV6mSwtlOZ_Ch0;quN4F?*^fU3nxxPu2nbK>rJ&O2)F5AvFaTk$yNVI-01FoAv6)b?$7m#(P}ya*0-3$=;u*bwx4X;WJ3p&-QkEmilRz$(YTmn0%0k^H*xRV^`>6I5E4G+Eiqe{ zkO&N1mYa(GjUIS&-ITB5Cvb7x*1Ml9%UQ2s^M(#hTm4&aAd=AUJ$yjP_hz;_?AaK` zvz+7zjw2N<_K+9tpu&N#7(d3=xcp-?W^6zaSq2izMbdkHz5>UJY@AFpTB;xStf^CCAc$Pe<7c6@X?Dd${?#=4c zRJiW-ZiPpmB@~L;AfCnya2d483ld4tU0bt^JPq!q|EE%M-ur^S2QT_!8h7WG3V8#N zg2EOck@&VVy)*6XH{tq}$(?}=TG`cOQ#kbrERGw9=b(xE#&Q~JZvxa2#rlg5p%vl9 zBz*HT2Ck>R7L(|5SCDp<0B%5$zdjS?T(P3dYXdVYgT0VscZiO**gB&Xk@YbH#8mrCM|1hYihFu0 zrxWR%-z6qUw(1^?Dzp)ZiM2%wnBNrBf(!SAZ8)4pX`?6)E54-OH;Ce04`@2u@Dx;O zwAyd-UR5-z{l!}=87xq|LzCPKD$;4^rdlH@zD|N^cAh=F<7zog({xms@+jv^)ea(-(9b;DZAv7WxDqwNq7M{jnx-HQRa)O9 zag62^l~qxFc_ct+;J=f1kFm6sJYhrO4M0c zDMDAx4c>bnz0Oqt`LmMlE&wPRbwZGph86c(!RenlK{%XZMrP;&_UxE8EhGEI<9%wk7NGNXU#P$@P z#XDP1JWIJmK5zaGu0$1Voe6Elh zhPB2$H{KsM{5a&a)(al}UY%ImU#OyqM zh|C#Uz?w+yxA5X+{uMm~EbLH**~6e2vIju*JOfPXxT&n{kwzk_Pa1scOd^KGJ^`I= z=JG2lbioN?qok6HOS-k%Jh;wO^GqE>T=7hdnz{Znq*O1~nFlD(M5T6S5e|Cih~7zs zW03bH>nh(!ps)OOAoGJR@@%GO-_ulLvy}xsAY1E9cdu;pS2mey7jOXi$Y`m9)3w`I2ayqqg8mMFMO_IR8PrD{5IS)^jstqyc!ql25)a z)bFs;@|gD)E%!WFzvwk&m zc!fG#1+S*Z;@CLJ71vsyJL$JBj+-?sUvLrYj#Q$U()RLG&IoJ*#)V}e(1%C(HXFBl zSmcQ*;Y%l`q`6&)twJfT0;`(gR2MOx@mwA%v27R{hYDD5le|1Z3V~6?!b@%jx#lx< z(4*YPsk~W^!W*cg@`fp5bUK}D-ZOb$2sdvIu-jXZ)3(ApGFT7bvxxPjwkML7&${D_ zC%t6q9nZ)?hXM~{%C3iH@!jrb24#ULdh;w50HRtJMrE}l-shF2d9ri0Ra0t) z*zzT5aQPB}91%!T!e@uvm{;VtWl?tMBkBt5E{dH0c^h0bdep?W+<)l8j$^rfyXBXi zjvZ;nEM$UW-PQ3~Tc&>X2`_l)#O1zmn8fKLdy=yEl+NMdKJ*qn%S6_}=BdIP#zv3RKNu-%%4 zy_8nH&E3oPr98}Q4?OK1NJXyiJkCz|RJnSar{SldTxc)qv>`YY$DeT<+TmIBd#YD!(Vcou=1%P2(w#+w5EuzeY|uej>4ghER= z+pSNVExRSKk-y%p_$7TCjJ=KPX^S-#@Ro@`TqG4*%leDWQtL*acvy;qyn^^WUg2mW zKr;c0U9FS-J+xhDMxO(QEd|w2jYV*>N$pM<^_#WXv!XAIcAd=!Hs&Swb@HJyL{>(S zp@6vIEun5G+QYJ)dMlrTPENrJ^Hw+%q^A`RN-T3JOfH|;_-SgCQqVl(I&Nn?Y$&x$9gKr+3w7U^-e9U%4xk@F8&Rbsz%$E z?m1|WU>4c(mw-K8;!_F_ZT8y1E)~sUDE1OR>SYK>e9$RaPajy(n@y$cc~rNMv_sg= z|8zu>`DR|DjFrcMrDagKV*r2Vx%;z$e1js~&^3pg(FVnzcaJhOk zbp>&j@`NRUeI8Ecuvm+4lE8Q`PdJuaC^C?p$mC-w(52btvLel41_xx-WT|%oZ}7Bp zwdE=8mzfGwq_GC=Sd;FwBg4>oKlV8iv$hy9YQo^UciV-o<*;W)83L?3`kF!LV|bmx z2KQI}zcSb)K1~X+`|e#1VuRQjEa(*|uNM#QcK%LAnM3=k7V3wI88^E|G~AT>XxoN` z%7w0#*mQydIkKZc1P*r-#;u=`kqu_i0lfb*Scj)_$0CTpY)?VzA1cJMu4}b|i8`i&wZ&jDoW`tb-l&FmnB_E{5@VFU-(c`($;_@@g&mATBeOT2XAMRuw zZ{LCy$xQjGGIS?c$cVXT;<+Kis=i2g(bW=}g%9a@DRj84*v3Z zeQiDqu3q2L270fR;n{fA_%cGG>I>fO)hN`k6g_OCSpbhF%wo6b zcFNP9Um(25Hp+45o!}QJg3Ky;CCZIP62hEzxqVC0H{;KXa575JvI7T{>Ce1+hYGbr zhowrN#%3~XBlObm0My++K9fgLwpIO!Jo47OMN2wNzGR)m&D=#y%EttmhTQ z)POO|)El;K1fyO+l6VKx)>z#5uN?e(oI59b7DVj?#$6GMT{ z%|I^8S=|ZNoc(Dy`#(I;<-v}(mlDRcx+7}CIasDn z7bnjnZtbwh=&AsCYA&M< zr)N!Ot<)4l7z$#>*87Z*)!jjZXdnnzotqU|CY@$SW2^ATV>?)DX`!UDDffG}&0>aw zqlVn7YPii{wHD6DteC-W8ORc2eQk+JuW#DKn-OEEDV~VYK(L`;- z;5qlSJhUV6tk6sncsm6ePtA6=N8M>lv|?3PFxXwoNnkl3wbUH}ty?Bf+DKD3=2as_ zUEp7v4xLawqCSsF2hrKJ?Ce73w)s|_V&2uum-EQX%ZYmCIKu;4#9tD$K1lIdG}`cN zj$G z$p))d#CmNnIvtY{adtx-kybIy+cfnvKDKES%Iex|wLsFe8O2||b;PYp(|Xhyqf#lO zsp+Tnh&*S;gDUTp*7NKhViUeqyD#amRuU+~2cuB$Qkp8)2m63qN4BcrwWPGLSPN&W zKpx-aFQ6K!s0DA{^Z7Jkr-=dvh|0NFMTZ6iK;guvVdY&}|LO>4fK}KbVb>eNyhLzD z#+vKya;ycdcgwtq$kk>GQAv}$YD4IaV-RUX_4+pI%%POA^od`s0ByV0b=b`4RX`*= zXUu|c5;LG*H3HDN_>msu#|jCPL~!v&C_C>i+}#GzThbS-$-<;8YZYQD|8Y0l!5g_9 zdAxoHMboD}LY4ZcjIzzghpX-cmd(XIcoW0M`-<+k7~c2C@1XzJ9}UMLZ<-tEGU~6L z7b6nJp02p62ovTnhp4irO>!lkwi}zPwU-GeH}ZXSvn9HSO2X2$#(k-Bsp~4k?8GZC z4Yd#UanVM{k65aipKEirMEvAIs)m(bImgZw1^_Dw53;z11zbA#5~z(UUjCC&V+=$Z zIf3Sb^0eiL%@U*9vV_cbGhB&?c8|>W5N;WDp3Z+8jcEz7@Kb9 z^zOQo-c4~g319s`?d!H5z9#ndHNd`3@-#nNT}1!_djd}QuE21dwJ|@7g86*eY_q+vfW?RhmHp~ZROfP zo-gjSVeHO9m+)khwHW4(zN0eVmPA8(IU-zAu(3CI8(Zl0X}X__cM_)n;;z3YlhNQy z@#o{9_eT>v?z7p~UVo769*WIx;{=-DuPH4YleZ@^Zi3Yp2it2slh!Y2M&0k{5(mm6 z3yG=DI0dP&8$~Pr>6YCBmk6u9+nbm)f#i3_QLo659oPU*R{K1TP9w+KwT>IxJ%q(; zNl{;$M?Nn_D_ap6xomQpss1PaReSM@1B|vA|0KObx$+8G<*|4c+{mjecx^5W(${0Be6luXMETZByI6gMc zIB!Yeydd}W9YHQ?a^gb~j*%ZPaj}%1e_)iuYdA&3R-PYZm?ybWiF!~3sB?h1+H>dD z9Ln2S6D5Pxnk(JlnNFPsvt1|OX;G#Sy#9({Fvt+nClvwAr}7Z;Cv(bA-K!)AW)$Nc zQA3JuN*f5@E^v5?cU8V3d8#o(e+?1wF2{@@$R;wllN)51HVKDMC_r%0mdGMpc)+S88@%RnPS^TpY&Mt`^NVM znIAYWo53Vs99TsfMrHMRl~-w1p3Rwfsm(yF1%okZe@(j$sw44DsohcAluZ(CQ0o(v zoFMg1h)b&=&UUE<@pnrO9_AJ8_`zyJ8E_kXY1!k+RwP3F%)BatWTF{W-Z6%E8;PoC z?S*uij3Y;Saa@W!ZL3*Q!G@Ty1>;$Y6q5)Gw^3P4nIGKdw)q6hm3f&dP8Ibbr5I1T z{5!ZG=+OP?9-1#(j=ZhqI+&2Dta^J+vDU$pCp+6jNpJ2Q%x_y&d4)3- zb0oOEH=QN5=O&8Fw4VELoJc|J9L9umF^&4vd3fthsHG%2Xb^_y_14(KFiG+mPBX}$nnebchi#7A-qzyN)LafQ zL7Z~R+PVn3D4Re@Ruw)tJ;0g31s%ly>R%<0Z{1N69zIM4<~Nf;m;PIwWO~TMA75Lb zc}ADT-5^Po4shREs0fl3=@Q`v?D25`gAM}^EqagR$?z_Faf6e2RKE{8Kw%B`av6>3 z8L>c@IOCI-?{Xe&OEgo$&C@b;RO`u60u8Smc-;**?)-4CfRT?%xyjQuf3)8om9lv` zlzWl!TULI!G&V|1_eL!=YmW@Lq;xhcnLId}^*~i#X(5RDOvd9J^w0ttO>)r9;3^08 z#to`olj{1apM$!$qfT_pnvD>ip|46B;WhF0>~?rA++2>p>~`;xna2^CP*h#{kjSN?3S^pRbd`)w!nAwvJ4? zuI@?kY>~DxIDZG~Ry9chds~9Aq#KA#mA$d@x0WgHw6k)ZkSDWXf2fonZSE?}%LKNx z<17Xyt&2Vsu{0$-Z^!A3co9hqA3qM^eI;y{X#ia;0H=weyofFY;8oLk#57?uvrvIC zV!T6ClZ}_6{s53 zYRq#{x|zB+x4}5p@Q{c-9;}KUGKM8*U_$Tt;Rnp|3%4(&ZXSg^*TM%qfK&-18 zxZJZl3m&6~)i&>w5Uy?BBty&tpg~Ft7aJjZvS%a&XRDB|LVO$Ds9|#`$-@*FcTj^A z?A^(T^hB==br2TpTbX7D)zw6lO5}K{-{o68$pXOgejf9|2!PmJH(Qe)!|p>o04`P8 z|1_;B+r?Vd`jfB)%c0K{6>d5=yqM%kv-#I%A}DkMUgKcb zT4A}iz5LXgD@SXi|9IJ!Z96X5dL*uwc$}GOu_tx0I|3&sYf0k__)Lx$pU-5{=wvfO z6J?8uE*k{R2{~>l!ELCelxk~QWoDqFE)ow@4xl93z^2vXQ#V6Md~1qJQd ze-p2zNS$N_NM;Am*!{ATOuS@1%wKi~8brs%rW3zdNsGUPL99&zXIA2p?sryq#6-fl z2MOBbYk!gg#vTASssKjF#h1YZ&C z+y4F6$xRI34ZrnUDigs;$r#*LWRFNn48-qg&^IQ+A1~7|Er%gY1I5K24MV5puG5ABHp-pj?;M9LF~o>LcMst zLWS7ZldsNV%SV@Kb&StV4`8aBVBNw_!H1v%;ysU^wf*6lk=d9@V0mAPQluuGUUIQH zk2XXy(9(O-_wZ1|ldCH!$ZfdyOKKDr(+*5|5XJ-eeOO zgqJZs4!b)xL(@{i4a+_Ql9mbr%NAUW?9aUHt*z7qF*`~yWeCsShuH5NLsfRF`W$ZfKe;W9>h1R`QWvYs<)TxxhrWP z3w|erike|p&KrZB{^GvP@_im}gpa#;h%5gq%4MV7T|c)2M8D9_*BL-P}HT?%E@ zPkc)yQq&eyC@m(ecWIo~D^@C0I4M(1Mxk25=CyZNLh>e{A=!dT(@|$kYp9jU+F%t7 z?IF&z1l(L>6{5m1KOd{P*8JSM8ztKrS@udXj4+o*I$PSDwN1t2xGKW46=ogD`#=#D zz&w=M35+yd0*;9dXju@V;U(KGJ!)chj$Z}Jsy%bwwm=oC(QV$4uf9&?hQVinn5A$J7kq5vwL=dsD4aPXJ% zfQzEwO@a+-?oPo9yG5~^4SBDdsK7Za^zF>M=O?0q{f zvRD!!#Q<>h30QnL$E-zrx8YgSteU&iiKnrvbq9NFf!#P5oFnN&9&<|T_e6csQM=h9 zCk)Ymj#}8Ls2(m_P!@~zqgx|2F=n9eB?X(XO2O5(m{-s6F*djFT5W>!)f-sA~1pj#)33G|lA+An|5fd8M;I?B=Ig9z)6A zI??$t(a0P!Uj(!BUV$Gi!WRX6M^L|%`#2EJ z*oJW(>mFyhPEDaQVYAbDfIGczQ7^dA-^*BX3ePtCPJNgqn#6)S?GHY~Hr@1PhXSu+fehxtb((SGia$&hNOum z=4c3h+@01YmPhk!&Z07iUPkO;+1?$F&x;<~7plf$)M_j%TdK~iVEYp;{Ad0dfC+KZ zZ%OUbOT5gsGpcEr8R>~8w-gV zb~th9=mnGX1_`Ce08|cZHE{+?0b?nT)iV~K4&IdNDr;49Alj{>dwB;(`?%n$5wvGj zt`hv*S$tNtLW`eU?pJw%%AeW=s25C+Fw9Cx-*8?nm+`0_j|l?Rq6iPVj+|prh4owX zt^P3l-X9g?$A^d8AFwU)fD`THaomFF-E>D^`vu;Mv|w-g-P_4c3xaJp-A`ID!~5I8 zeOp@H$H@&v8T49klYZ~!et0|l`lGFgKYF))RfK6`zYT9EU8({6p1gw{+`k{UxayAw zU*9Df-2a;Be)#yOcd*0Ww|B5#hQqe%_Z~+hYSlBgEZ~C*HmLGH9RZ9{n#eN(tLD9Nf{iJ=C$(-rXrpd#@V}58U^YVUjbcwDS*-<1gn> zV#r=1X@%&Gn-#&cnC` zde4T1K5SZepJ|6Iskk})Etk~e8SbnoDD*V8&*6hWv!EPze$Q1>jGo5t~OL6 zJOAk^ceywm7V~KTh`~m~Cq0(4;2e+KW^l5{=R|e-eEetLInL&+aj}BjifvHvaj*#z z5nX_%RFNPik;U9?*=;hT+;^6&9QHYCy~CYAnolcQl1REat>$9(wB4pGv*5i6SeMHMt?w+BMAw~;CfP1$N^`JZ*;K6N+o{p9MaK|`9!krZ%D-KZWtkQ% z=eW`;XqAMmiHa8W;}flW`*L0^e*5@AVMZM?W~KK4*5JOz|9wX+*2OK%$oNv1Z)Etz zUr|nL(K|c+^A9AgM}_}fylu)otZf|LIuzh{+0dZmkL3~^J->Ezm(4l=#tTrxuPCF zLAT~qA9ws<#Xk8}2ugq2u-6VN|A9@$hKMhV@}~=;uANYqjzs3>mH5(8(FVif8Fn72 zucqt~bL;&W#9i5FT*Xi7 ztNm`hX2)v#Majdr!v+9#c(1{jQAe&0<+QWfv1x!88oo~=^#|AW40Ru@3jD!;sEl~c zx+%BiihZp=Rn$oIMV+9l;c3q*_q1Ntw35+`5ZfKFz)8y!f57*y4j?2iy;pbAU%5-K zW8)NBApvZxyY>B#8c2DPACH3kpG{2CDz-bQ)v7O#lgaSDxE);ayVYXw^?o?&x8vw^ zecz7pW`%Ry)nE+QuLk8l|0Zo*)4rYKs$46Jw98~3MT9?ZE0kR0+_ z^T!D~M;L3_Rv*L36psZ-x+ua|@4&OZvXrU7%LC1yn0tH)0xVu+ab4|!C>?-lCG^lxgJXE`))3gLL$8c8s1eXd;cQS6D;K{An% zJ?)PB^~wB1!BXUUuhw!q^p%stX<{VEkh}sXN)gS7ZbC+6P;m}9a!J%??`0JpyGC$> zY`SqE?7?n$GHkw6Mz-1&F~w{E*=9r)D2jEtCmv6Z1K^Fy6)PGZXs@4@wl?6Ebp{g z+Y~%)gOrYVT7GO29!vO={+ecgShSMu=Q|vLTT5Qg*)SIhx7p24%>l2BNNw&qU3Sto z$wr-}9t+Vr-S_)h`+BvXwKi3?+QLc4IkZ@P-__a;^1vm&yiU{iU5YAD1MzwNS*KqB zaZU*Z4pF*=HQ-{{uL&3XetFue=aqwZ%cZ0))>1WOTZpE}Cc!5+{n1?)x53{Ay?$h^ zGkE`Az?KAaetbAH!pUgxP;`3}c)dwr58d&&0lcA;S_0^e29rULPIoZ}a9oiFx9#Hz zN|6Ca-NATp|22bNjfM{o09$%G424lP+Wt4(U_RcDANsw)^}y9zFnrND?%qAzX664j z7~Xa#j$SHp)4l)NY`iO6zhtn-ha4i88MspZGPuR1a-JGjz5$hj{?YH_>KES)Qy}4v*xIOE{Ke+9mJlb){Rs-Z zrUH0LMDvSgNC>eh+$;w!g9wVUy`c2yqMDgt*&7gUo`UmuUal~Dw{#5i|Z2c35Pdw%62$jQ{rC64UCES_v^Z#9O{HJr; za)8|qQZQjmxhe@no3JC5oL$iW%g(XRs92+M(M+pOK%wQA>>~pHC!~W}qWW{Oey)Pw z>A))UO2)TPDM)lG6OenL-sJofem~T%evb2odN3{;vxDomS(b)BCmJj{D@MY2UJR+t zGa@OxaYgC6mBO^^X1kpZ;K=nE$u9{~Trr!bXumRqNqd%p*!zx5@G#=Slusa74YF4F zzY`{$OSGK;<4!rfWMrw9xJ1$y_j=m!dpta1?7(P?IZkidM&Q;*kuvEu1)Z7SI zw&BRZ?)rD8n|9mJ5qHC@N7}?(n%&-w4?he?6GXr7_a;fQQo>?IggVEjh?xbb&d*#7h$KK;@hp>;lE~! z=r-4e%<%U^924Fpxfy)Dd6$6uMlJ>PLilO7`w82)2I%OkD+|iKjjVZeF6oZ$!fT8K z_1ED3df1No^KmfxqoDEKBNW!Qp!(ZFHn|zx|MAehqE-5)4S&`DI_h5OVD2N9w)r$%HeBd{5Fez zhv=YB#}9rzjfabelK5s8IhS~W2l-w_%qSF!G6>O>#Q&EokswiZaq1pt~y!In5%8WH_~**@Cmc6OZKVCNH8>+|`6X+#WS``uB11>&!d-BI^`(x-)o z!+1?GvH;#{$w&7u`M@7yu&y3^#bii)ME9OJ23BnUKDfW4g`OC+;`^v8+U}iE|GH0n zT91~-32{<=h<}heLYx#o1L|DgP12vuL=6TXYOddZ+f&#%E8VcVC=CY?Y$$K}I2@1svEAVnFh!@MEMFH8EDW4Z zklXKG;CN;>>p1*YQs7Y)!R$@>ZxJ(L?9FJYmZ~xcB`CygC4b7=&(-?*^bfmUOWTnk zgb)C)A>i;f29aZUxfKtp1)jP?+`_n81?({-kC|f_+9dR`j%gW0dLc&K?_E+Rx%XXS z!2-jA+9@MMYRyEN5D3~9^)Z8LCuPuN;L${8tAI(q48>_3lioQHl_JM`!?06j2)SkC zJL<$&&%UN*tK3UwV&HJedMPi}G05-<#U>kch||z4j<3ZW0uYRry2i3pL)nan?gqNl zKk>$!UF@pkF&)%;oxfPj*+B}oJA?A+#K3IIG0d6}A~}IjsnOC6z*cT9%0o-+2vOn) z$a?O?Wyj-qb*%6jR%*6qpzrD_oAujlx3w_z^>*QoNqoNSXW^Cn@#Cituc?SH2b%dR zf1e^+u+NowBf(c<5t9MIA(Swf-v&dxS-qkavNtG3kjm$XySu?KhkYB2=&V-^hIe<5 zi1{u)O8{*0=$k1%aiQ2~kePgBRUFl!P#0ra2m-n3e5p`;EyR8jl#ilUD^7Z|sdg^- zTpf0K&{p<)NuDrc~kUdlm%0zK$(ULS#4DnaKhuv{E+pRT58`M$HV47D{c+v zrWSe_4X^AQ#kqUDogg)XU7 z4}6HNWMOK!(N!o#6nL`0$-sX;_8%$9{sX+NXnFD5Y}*W6T!yCXcln*GPxh|+{|!e4 z9gX5xy1VN_ouEG{F4}-0x!(17+;;&zIk{L779)+XsS?*+>J9@vHk$b6dp4xU4`16l zE+#9zos8h`-$QTQ4!^SKzJ|-17Q%IysXT00Tkm%LzwX4)HR=O*4a}W5VFJf>H zOKN;2OUopo8q-SCySpm>!bOPzN5txkANp}}(E$1sn}Mb@eDb8z*h4UteVCdl1i`EI zCbz}#S_(!!b&6`}98l-pghg*vPflZmKFF!(faCO@cf&SH1Ol&G^zWY9ofKOm8$B?Ocf`@Z)lOI@#g0}CNdz&!4#-}@Fo z;-1Z=Z-As60H#?6NVBEEb`4rUE!9p*9qb%!qlK`4>bx2!z%*&%9sY2Wgm|C9^^Yvr zk|!-mw34M6%51tHe!oa&)Zp%}e>Ld3CK})N`*C{6LoJ%F58YAsZk)EyeHUvqKhQe^ zZ&cdTYPi`I#00g}Du)Kr_7U5LQDz^bE*W$NAGsmsV9DZP@Ua`A4wle9+&yH&Q~?dD zY?vA(p#!5?45`;|yFXkbva3K=&rN`jwEFe_NI?BjcMRPU*S`_`$bKjt_lzZt?`*F}h(}tQo`ABVUX5c4*ca|_7XoJFM=Uqk(oz3U^lsSy3@$Bq z-%o&(QTKjagx%4=T=$mPn1?}99)M~_|`z;jk|8;w!Orqzk1U7v1gLpg{ z>gGCr{E{wr#i%*Jn?!kD3B{O|sI@_xnD3)=8TiFnco;6@^6$b;7B7$9i^G=qb_*l^6} zdgvyxKztk{(}A4%*?4RpIJBieO)_EK!I-J)!X*vSAVW)I)47JW3yKh%lDNs+2N<_C zw$VY8iYV-kTC@#Th#TA#an+v;b66DQlfINhj*i8UH&Xo3Kp^!n~gZ z2q1zxgVq)0-6WJIboCiBT|3@QN@;$TRGd)nC6-LPf1M;P7{8)ThEKYvo$s}5ar`yK zxmmC1?(OY+XxUkzb@yHt6#Q3&W7ZPQ8l+_rey386mAct@)~t?O(_$r%VtC)n4>Jj6 z1PLjX$#$CJuWMRw@kfLi|8d`+-S=v|gAVJQdjMGI?^g*ZaKZ*~%&~!T&OA*n zoEg#-0{E&oOxR9@^ArIyjv@eTDPXQXC?5p?&u7{nAB`)E&|qFy<#T?I5;6#<;)x=_ zZUXFKP(1uGu}V;gzKFfjK=0}ci-x(o9>gjuEA5XXs5cqiGAx3=j(a1y5gKPemOaz< zpF(lZl+j@|1;3KPMJv7qR`^mf7^9~Jln_1us&cs$m}SH;)nJcMPVdWLJjp;0chLPx zVOKxy$KzfGydQ><(E9>qWIGyB;DJ6qeMo}8f5@-}^}d}16$sVo6aWLo1{m|ya+Qu% z^%bOV6%^x>OF8HX<2WXAnTxc?4_Tv5V7M~LVLFpXtot{nhJqTigh#{4u!p=5V)h;i z{(`&tF}lLDp06Pc3OJ`d(QXI# zf6(OnGe*?I?8KS`u*ZAU=_{RT#+rKnTk#jlc02fjX0WSa4PHIoeMzp1ulm>ShzCpz zO}bxW-Fb$hKdIXu<@8KbkZ+<#T|I<$Z*P-(>G2H}mJZcjV>$qs+ziHr^4OE>+wNC) zzbs)|~+goFdt`h32EO!ZGRf!iA46-F%LaDe|V65gt zr^c%^Ck9`42e(>(h2Fb>zly#}iZ7wK;>E&b$HWN7i6p7Ytq)y)jb|7EJtX8v0h@P( zuvjpy($(Xa!SGR8Fc){oJ5JYEM7N-u2VWmC5S11q9H#80dQycJC~Yi{cUigmlWy;( z0Z5`ZZWN+=0SXcco!$&AaU-eC%ssp|I4U!x!p}?$i zd6pqe3-1HmBY0r!Nt|8wDK6)?~uR-^A z@V}IrrGb+aCaYl^EXg`q$u#fBF)EmlJ>0canwQeAlRGE0dawcY@iGs~eDH1dm)qL^ z>}dyw3wVW4C*E}*JY+PvCVu1A=BYw;CovkT)-CPz*B;or#XF1sU%e#DKOYBr#0YV1 zRZzf9cO14d1?i2mhU5qqTOklpKhh5Hm=zW9M}7huuC+17k_jLHXf5;|1@6PB;>4-; zblfvotR#lTkYSjzb`N5Jv8oIsyQau>=6uK4OQ97L}qkn9`xqf7GX+l zZI`teyTj{A>?#7>bVpYSAPK03TgVdYr;QT&{@R~}+2Ax_Zdj1umIGdPNAi|_9Abmx z2hs3;te~)L+TIHg_Ql7^@Ih5_0E*LI33OqO6jx9f%jzo7yut%?0bcN{nj0X5Mejxm zp3oT(iKPkQkrnd-zLu)tYF8dOnen>acTn!SZz%v1r~%;U0u9IQ(f1$=Q%b&I7LY1k zg&{+ZjF~Wq>hT5uUO=J0m0*K^84dsF-v^F8<}?ms zAA=E1vq*z)Uy|^6@<;~&yQ+=346fjf?2iQ6l>_DQ>f&>e*C4#7r$6@z=A!tm`1<8x zoK={*G#pT}$|cNCsNo~^!r-d4ks`O27S)~1V#a)y31Y4YH{Q`8->VC8Fa3Ntm{gjnZXB)JrmJaAMyPSfOu@&09LyujEd1hNX^gyCII*+O#t2x zbn;S39;E>y51y>v60-Up@h->gc1N_er#>jOZsIpb(g}4(e$~5c@-(K=2=N6HrE~_> zXpn$uw952Ut>=C)s7<%RUQ(G4)c}C8VHYS5$4HCEtJ1X*R?p0$XiMh#T*@Vt=V;83He;N_f|Vm$l+`nafa{H8m;Ga%WDHvoK90 zdlVJ2)2I6`477GvU)x3J8aaTSe~}CP)SDE`z*o3R>Zp4%$_t{ZfG`a zv|-D`qExu}J(eemp&>NN{NneE--^xt)Pj=PA*E$=m2AcxZy8}kLerjJd@fIOH{T31 z+f=`Q{P>}n?#tri%}9r8I511 zx4WZ5l0TT3jaU)|8%3NwQQO2s_NQYE$dkPg0b5uktbFx9}x94Qc>1 zo!L(7Fh8*wp)Chsr!`hFe3>O0+BZUfg@$HKT|SGk<;5#}w(u6=!n1NclcI>d0REgW z;4TanGC0U4Be;zG$rUYOp+I1oNU%=Cx6FsHDhXoG5c z^8=h8tgEu-7we%4*cKSf?lP8}qeXx(c6Q@n01Z8BP^x1AO66$tK><=83(VY5weic= zdfudw*k*_hxZuFSKG+CCXYo2)pV)w|S|g$LQj7)oNYWp>wT>KSUwJgam==fu(H^2a z7q1<-H3+n_+U^c}n6p3}8^w6a4yQGeH&2C-rNVg7gaTf6vd?hCFvEWHq;fDUe@<>B9kapV7d8FV?>H;T$xtA(vb1#@JxrmYk$Rc_E} z-J2C|QZ{PdAUV?nX9}lnF+IW|7^r7)qi6#bcmNNlDH+!Gl2+)sNVf8}LeE8t3-%fK zxrnyRo&moXEo?e1sIU#Srz+jwL~5U(L%dfS83bqG??rS&<2~fLB>admvnS^X*!)hq zstL0gwvT`arq$X|aSsVVXN;{qoubKR(q5n}Y3u&w`Kug4WZv$_G-6V4gSL~>1Wu&D z87B60IeS{be$Vl+u!_zP&qc;CM1&hYp6y8qGEh6GD7cJY+$|f8(-zJeyAe$GertLS zs&gfSWUPu!De<6{K={1P5S@{Z#vp;ljp#t-U_z(fCbc1jE``Y%-{e^Wtc9`xWm@UB zl9(nvO}r;rUF7K~3M z?p@i!fU;he$yx6gv(wtrshQIZ{8zRQmCHD(9e4`&nG0PAG%k%4Wjgcj6|h;0bZbJw z#PUQ~&`@iFSJqydAS|ibLK99~bteKstZ;%#$Q24N6-C@|-Xwu|X0uTdAwu1-oO@l;q%i5l&NjVF2LOK~D9%@Le#f{I{Q49?gMo$SEM6Ind=2t>tfP10mR$dAMc zG9HhMmnWEWH8F-`A*IRF^D&Pke}In7*Fq_iBPW+haE{z%?qwX(W;wv`hw1JpBRB!2 zQ#q{1QhMO@h}A}HN5@Evv?DnUfplC^f5yor18;MB&535~U5&wVj=(RA+2W*=FoSaW z*nblSRe6Y$#K~t`3KHdpoI*a-H4P_Jv2ovka1;V->m;PfDANkWoL!AHzbJK!NA7I( znZEhu(rSMesjc9fB$*dU;vND4sWJ+#a4Ik`8XN&5GRQb&8Aw}7t0i`aJtTzV>}`M| zU<1#lFlm{H@*LPienm0epJVqMNXHB0DA~LlP#foMnegCjL*+oRVSA>G8O{|k!$=8p zpt9U;8ORMr6O+LjLJ9e56!bjVI|7bK)Gi-!c&W*+3ezg9Nr}#*O_E~<%RM1Wh|h^4 zgb-<|EzN&N(P)?q@7p9t`Q~WN*tJ9pz7+!_g}CLakEiLG!*L-4qf$v{E5$o$nBUiT z5;2lAm2;>4JgM_^@1^&PWLjfql8d$!8YE{@IUl(_P9|+>joqL*m(DxUTVo}QTQg>Y zZpIFWk+!%F*%H%EEv+#l@=S@}ZLOT5J&m(b8!=ksdU@Pdk~68CkKBm!%Y1*C>$yD7 z<=Bvy<`G*6T2nX|u|c0pb@O;ld|Ui8(Ub#!j`u1ERj>u^E}P}}6wQ%Q#^0$QnIdF!@#%j%WRgUfOT=~rvlB^1p*YM|f4y_@L&JJMYm|FY=+PqcD^ z_%)rEnkp!f6d746p$L&=vh=>Z9UaQJ;v1XlDAw{7@cxpsYL-^ko0U6cyVhE@wBV}IcB^<&ZDbb8m7V(- z=H(a+a7(U+J;~;@K34m6r7KnprUT5uvq9!DSz~TauPyaAXbT9!gLr25=&;16g{4>QQxz;%@t9|`{Zrgo#M%7Xk&X4UEm|wSrH9f~V@j!v&Y*69M_@KJ zBBD*Hrkx@KXXDRpqX5{__yPe)x4c#InOWt7!qoe zU4Ugs6TK2Rv_&&UL^=9&OPx2i(?)SA@^%4_(9Om|bl0WQIf`KYEai(<`)b$0pE>^( zo}8T_NcD4|`oqD&XuVkM;V+3vY(GfEpe-b+*t&(lqmz`AohBfX?Iu8VN-k$ljS3k| zoh?{U>b2h2@KnB&1&!%bkUC`8%tWRqzeQMJ_UohU?iLDACfS;lbpx=jKQRWhW_gK`(1U3(8d`13D~`0%F%@pxB3;gceW zcU}7|#$UBi6UzMYL2wVF!MCm!w>$oE-zz46ae&|PNtJ%|ZU?;>_qHD}QrW@q9&eVU z24Z9L0S0>Hu~k=WptJq+zhIEG54Wtbrb|AY(WK-#s^!H?!aH^j9fIP(R!lB9tOgA$ zW?tAN1B)|fPp9qAPBmL~<~4DT^jjZh{EGsx>qpv}pNa1b3g93RLEJouqDzHphq1_7fB4Byr(T!1?N`akT&H-4)2-(Gx@AWE^fuh`R3c?W z9!Ga!m82}JAXi!Z1yO439`C?!cksDd@22eSe$F0JvxX7Bg0I9Zuz$h7sepSpqpVij z4ng&6|F?cDtMytxwcsTWR=9>Nn1iT!&?aG&<6NbgcdoB8UGwkP1gjq zQc`BMXz;gysZkmjUPcb5eHw?yQyV$t>eVa(`-KQ^*cv%(HsN6h5bQP3zLVD6mnV4_ zA)b@iUz3JR&ndjfV24X@+u74$x2^t(bg#CfDWIzB6FlazAIO-tKEa@Qk*F*I!0P0? z-7(Hg)(htknGCXVauZEYweYrK-+}*$?}Mw!P4Ret)xV}Ge$|G&VD|}am`lct+fX0R zqduKS{eB*G@%f$1-YLlEce1;fZ?}_FLWw~ zY8j6Kyv1k$b*9d6KU(ddn7Ou>q7fpr^2D*RJP2bj9$Y>4i?6gxKi;w(H#XTY8azyf zqq8LA{?|KR`_JINJi@$^Ybo~7xtZ%^z?b=S+sxxM;25-E@|kDLA$GWo2|!1LH5^I; zy4bF8P$Vc)A?DRH8j+C`2*0sbqh%4Q9wBnDIXa1%Xb#$d?PW5e80)m%&<4v31U|5< z;JqjP$a602g4Mj@58HorJrA1=OE|#f9uNF9WxdFnBu46Bg*Z(&mFx_%edeVLVd9$0 zP0P;KNwQ{s@KxWdRd{h*t)8IH0X?x;Q{LL(&k?OCyMNKWg#o6x7$jgf0TcMAGw|Qf z!2K*w5FgLw@cCR8adI~b``hQnw8vwPI8f2Q){Ejeb&B_H&B3tW?bb|%7u%3(JbvZz7(W?aeDMX6bHgeWQ{y68H?kWwJUQZx zCKxs+Qwl#r;IzDBY5oQ7JjOgMyVynXZ>Y}F{F`)|6;0bk-XijntRhHt3N0{oS&4x( zePa&2f#@u^I)#fO$5}$GakPE2iFa$J0vY6{|8Qaaj0?b zhU?m5iUG1l@k0o{i#w~jay)MMl2x3a5lgE{*Mav~)U~o7oQjPZcu(dCcn(g5`AOBL z^}JN?=~F1V2^S%c#L>h1#Y~Q7sGWgT2D3dLcI!1&A=1C{86Li)lS~6%_j_&vJ(+eQ z4-m-sP4*!k-?$hha*idda8lF^12m}egh7v)#V5vJ(8$$9S^~Wj(<1?`VTO%$m)-X) zHhmuBiXdb8Y=ZBmrCyKKJM3~nhlRsJ?}Cz$bY==#FIKqmYtk8}oS6 zf8^$Kc^kjud55h(q)_!r>xAS99(wR8;0#?$0@46yz{T7Z#6*-1B2r2Pu;Y8nNnzSV zb+P+tAiR3j!BZ;p`SCJ*e*V;XhA|J`+V!)1E~|BiO?(J|)zfJZZt`$(bP$(NfOAp_l?4>EC$1Bd z29cx^R895=-z4xEFz-n-ea*hp=hfj1g+%x8#VhRq3P2ms^gdZiQe1m5RL-%wGpL%s z8o(tYQEeU7AkPknW|$k+W?&)DrhKEJGe6NVr**Ya1TCs$h!&773C`Ua#H}a7ye;Kl zgpzec^D`;7)YnR;BS>GX2B=KA49YRnN(e;?OByy*qVxQ>VhZkL?7f`wzUsUz%Ad4R z9S#*Xf$3rQ6R*5zs+Ida1bsW<6+0|r;uqc6eW*-?T$i*2a|6Ws9uL)Og&9F97rU3O zEtUlnj5Ky_M2lP<7tTkYg1}($dfrT5vnnVHKrF`GvCqr>MO;!<*5@kLfEv@wwXbIXRzJr2w+VMBYhV5rDX~~ zDP0P&x|Ym-Hb)4*3rkkHBp{-5*<^S(XhSCpdmN>0q;6Z$&PM|%;c<6_$ZnNYC`qO< zG-c$SE3IPl3JchkAgAMobScYnw%exp1=z}0+mCwJK(^N4SRu^%KLN(iv|w)xPnFn? zTREFWJ`C2e7Vl8NsMl<_+0g1STgF=qWoK*RVP?k++F3EbpV1`1&Ze$jO{R)XimOo@ zA1oRTd_`)@3#SqJ1O4P=o)@e;=_hB$&mi!9#%W-Ttam>2RB1?-`hb*R!16K@kQ^eM zYa|>G4_n_>Nf~(Q&DYK}s_qdQ0Y^#u-j~F-A1uT&DQR(hDwIW`wE4$6vmh&K)@d%p zKg6q!xiH9`4X+=2D+$ti{yQu{0dDWaw6{`(>zs(F&mm$AXu5g1{^o7MG@;u<}q@VtjyQn6uOAsWEE zVI6Ht!#ZpWI5w;Tl4C7Pl5$qBPOvnsSQ_JD{+!PMIqYu|y~xdcEh1(~eG?#%`lZ1Z zBDdmj4(a)vLCuR3!#E|=(C5kJ=g6QgD>B@OT{V~{;0E`Nuh*t&hjH9s1w)0jQ3 z)7&1D_Paxb1tRahuw;Zzvw{NG?2`T2rB?Z7ssx*DXsn;cPlAA1N=1u#R6dUGBQ%}= zt1RT#*Of$Q>E3+yYb*J^Hu$gUGoO$w?7Ty`&s1zZU#HB7uo?_AFAE6w$JI1 zbVIXalKChkjp?W+SN&`R$R?xIj~iS@oi$tr3KLYCN#|z#W)!J}j06y>iEZrB4 zGub{D(1mfs>A3lCgS)vMHJc|{fAvhTf(RdKN*jnd9F)#XI2$Y6PUhgCciV8azpH8r zK}RMdz`)93RPk?v(PS_zzI1PIhr@e}kHP&l9GJCWuKMRN@LxA>fy3jXxD0CI#KAQ@ zyfkrl-M`u^NR3d=^9VZB#a8+qdo)ZV(-O91V=TPXgika{jgQ#I6tE0m{_bdtNA%0? z@Y4*W_=c_9F&GYvU^~x>WwQVd&~Y_`GG7pWagJ-+IkTXo02VgF`5s0zC@Mb4E-EM{ zvEeI&s)c3^p#&X0IZjzn%v*t#J>)^W4;`p?v`J01Jy_KDcV~Zyv9i8uSx_=mSX9DL zq-Bj;!vp=QU@%)25;C4w@}q~Bgg}*x%fluw4p%ISDExeRq9x#GFxz+z%QqiBuT8ar zo;rG^IeuWQx-qcRKI`xS9P3ltXyOD~2Vh7#q^k=RI`Ig8hxUhUM}A_FYTz~-oeTE< zzb%K(S|qnJqeQuSwUF_VcaUGOI>*JD&Y(NkKvWWF={&Q-Q?-Lh_i9(a)vPvA)e7Q^ zzlGiL@|PHsrM=_xC%h}G7k_Ve9mfFk;*T&)YB0md5Z$rm))GQf`NACwr%EFa2Z7_E z6XHdX-0+mlf4Y*Ou~jiv05Dm{nj1?lr5c=D9Zd$zN{$u3cPsTE1ODx)C9?trW^k5^qw81jHv;H^!JO!;Szs3 z)du~ByC$ki2tfZeM29pH!b8(ksGqZxIWD^UrHBdh{M6}YB8Ng<3MMdLs1j{Eg#rMFRn0Q?2FX;c-lj^0MgpxstRjB1D$)nTzr<6d@_C+Y=WY3kEdJ~&Fn z3w=@4`*KFu%|$o7F5kzOmh%8KvmWS=3J?HU)67JFxl%~VJ54TtC|ICToXW= zZMmi4sxeq~j_Ag^Kz(uk!I7~1|+L-EFfsygZWJ)%UB!Fo!ZPVjZwR<6~Q z5UX+0G13kgc9Eh9OldFLXfIkioNv!s+N_0?m8xQ6H82U>kCI5~OU2)Y{CO}Llis3!jMcDfw*>zo30G&$U1GF3=4kaU4nFRdna}q{@uu-)QwfgFxU^yV|A~xl_xf!tyXUS zdf>(RjCr|x7wghIM-bB2LDE|IHk{AhugiWNO28Lxz{(9VY)Eli3k4V@(LP89p6FKx zI;_9gPwZBRSqZ3B(>j8sQ$CqQW=4?8q?~j#e~TGNEAVQO1y0-jZqEip=k7@M624i< zPwoRHUQKg+e&SxnUczsIQV?q&sFAv2P9&*tyJHe#ie)lWFu^n%(+TWJC zImn6K9ZgkI zTe4>y2eSa*I`O%Y99JG-Ed9mJgVQTKJ1^XN|fJET?D=L)-Wu38jCN^R#FMN(24NWT^j?@=)Iw-3x3qSC9akoiG zp5ai<1NQ7;Er(Y7%ED~ylvpt~P1^BUD1l0-lU#7FF|@D{>|{(1kXqG0v`wK{fT;y z+I}YXrfJ7z8N-#)|cFUW72ihJyvTGLV=gv8)HJBsol2 zc@M=l%NmNs{B4U&tbMpS`B<339VjPppTV`D1XakTA(SlK(Fp*mC%UC_$I;${ajK1M zmDeDYFu93sq_Wepo%l)Ax>IBtP;A5AR;W`LvDmovbAu-X#IM;XN?Oj=30iJY8h-jl z2-_oVZDKP(8Tgs|s0nu~mQ^RADzu$DzW)D@6pa%2#-p=jx)z)*(K{KvgKDFmJypVX z@``HB7{)&X!h$!4p43hT#-^@VV;b%wnu z6l~r0F4unHHbX{sBO8g*-88~A;|R!tZbObhzhg(JN@yBzzt{Ux^L>=h*zpIbXjmJm zKz10U(IWyl1DNqVTca`T^l48=e~T6IP3vl_RzQ?eWP`+%AL!V}f0<77VIH2a zC{Pd29`aH_u)Hjf<=SBEmN5s&yAuUGmrWS$5VW4+x)F!Id6t3n*SEMn>4*1FJsC}MAVfF>8X%vm$6jAjzwLL&eaql#c-MusukM7CWOEPrxch_3 z#PoOgJ8qPPj!&>`K|wJjfqcf6T*&cCvK&9&^(`4HC}pg03Ug}xancM_9<2?mZuRIu zH<5~n zQlGPOouSe|M?BUBU?5(4piSuKX?{RV*@ajcq(<0>bhe2=@l|Brofn)_P*R;~(s;a< z@!m9+V07z^p@R#sNXMHipwvr%5YYWat#4WSMH_~mk;U*)JB_wWn)T4 zcW|Nm4$3vG4O!pR#-AI+NvuOORYXdPD0&@r3RHt?&+N#ZtttS*nk*bjayC2Oe3lVo zRU7#Y+j}%6FVDL}BPU?f81r%6^KS={mJAXyG&7ZJ&B}C#b_9z3e-)kj7ILbyGZ!O5 z1YubP*!T{dp1{<}7%QR4f!T@}hM;S4)Cn82w5^})ff~=eDjLkx9HIUjzlQiJj#@#b zBq%3i?2GE+2`|$-ypI@vQQ>S4y&+nf1Yc}U$Hi;MC0Tbwrw02GO;#mvN!Aj;+WfcB z5?@;G)k1>o4@ri*I3E~bW5vVRl!pf->k>wUTR!3lutzfvtfzh{*s_99v4u(tLbH>) zv*k)Jj;JW2wlh76wjh2zaeP(Q+3kt)(1PvwRQZ*JNLe_h@{H85db{Y?(laE#B;cK} z4e56uE}`FiQoyO6h9shKv+1pv&6!>W*aW-ubT)q+e*qXVdh4>TEigV!lkme~cihc( z>(2D9e0@O2AIH@{iw~V@{*BG{&>k33r4J2jG#>y!m%|2C^TplKwOlCCYO}N z^62V=x|gIAG*xh`)6rsyy|ptP(@A^`1?;CoMaoiGz7FfB6Et6%UI; zNK)dq#X=i?VY`d%v0|%I)%EeVMZK;lUaYxmI#IZ|K5cpT(`K_^Y)FH|b~Fg*J>Atw ze$-Jq%FDg92aJQjh_9z2l3sW)$x}pYpAo){_lw1ReA@5jC>BanBBH`O)5i;%i+y61 zZ%c$OuVTp3rA3e?IyC<0Nl8YwlJ$&&j<W=%KL4iIZ{F)*q-Eg*Y5L(7~P8IduN zSEaS+FCl+K+aEW1G`G;y$gx8UNilxt_picPFhXvJ-(BeX@%GjQZw6m)T=4q1WdI-Sn>!moX0dL)u$mC)#PKrqUunQkHzi7UGezA zeP6imOZWXTbnhXw!uX;1+P_b`Lt&S%7fJZy^)ka>a)Nl35LTp4Tm?G$V$wMsrgA_2 zG-HN#Ax90iq5yprI+`xZO|9@s7duYBO4h%)Xn?t@ctWFSY;yd%+v|sm{1p0SaDQdp z<)AH;6klnP-%ADdx2}y(1Felg?xe?Yao=qPUk%1OPP9*Rf{0CO)+yJ=T6d7y2?no2 zkZt+IAfyqpctSgBDQt4BMl9yqm@zDuV|uZM6FnX11s2o%pb$vmg|}3M^-Fm=KJ5;) ztq@0>wM`b*M_n=nC86S_&U=y7&O>MGJ3OvfhN30Aql$E5p{~06uqQ}mTESEzjZB=8q;b~!jaWBWFZdf3gb15+BsEs7 zs6%WPYwAPc_Kuuz=lFy@j5VF)3XrQVpJBbAu`6bI5;hm-1Umn!jZe^(#KRK8q>j=o zwZ7ujfo<*$iX+;!bHd9awh+g0C3{ULc;^rWh7eTIOmyC{DS0IpD_3k03BkG<#|kUA zP*NogAQ3r+%8QpRA0mpKnk%A-idGO+a@H|fQTwwL6MO0OsRJEmRsk{(4s0teEPq8< zs3Fm*W^cR&UG={WXpaMf04hv*uGKf$W7zA+^= zhn8081oQ~M*3)mbZSq0a_P8!fSnbkE>s4$97vEUf*HCd~W7Y%_@!wOJeg=|iC=>vq zrHj==JDf#}2-|kbmm*r;D6ZFOzzdk9v9e_??pg;tE&cmc)lae^Gc~RWs1sD$yh04y# zg9=$&)#j?Rf2wE=v65!oU@WPy#F}oUt=kO*%ZlLco101doWFTobYy=u1Bo=r_TEB{ z&CM_`P5d>Vu4pIUV-$+G3t?hlAoW*~AYMbd=+Kdw?O`qBv^j&4 zo2L@%6PDitv~*}1v67L<B%g-kOmfUr!$L^CG_Tbg@Lo0V6f9BrV^ULF^y8&Xjs zdM@};Z(U)E%5z%1X0d?Y2uWVrZ4y}p!d!3~&`?}OSK@K*Vs@e0i_~hfg0);|iC-;v zDNqI3pHt1sg^?RCmKMNbY2T)@Wns?2zlZUG@P=5ghUJ}0wVNH+rp^>~_nY8$t$&1? zw5t1~M*xo&HO&;Jqa}fvQ9XTy+{l7W`kaE{ZO&D82qEIPmG&tX3U~G;x(BQ_L<`_@ zZ3b&WVb?%LS9rxHHXm~&|57{_W) zZ^{0aa8zlDu7e=Cd6e;EFRGLB@r&_#v0_UCE#szvTvQUF{99 z(FeVZ2ju~;k-zi>vi>>_2jpDvHlxPYLZ*$!|U#zu#P>{+$8iZ(+` zBXm>*aaY9zYz#@zjT8ZB$HHh8SBJKiWgYZWmQkNXKZ~VE-65h8D4Rr4^+pk~@reN} zr`-iWJ3$qcWV6uwaSHv!12ults)2wB*XsN&`X=?8C|Kdw-@9|z?%X-R_J=}1H%$&~ zwdhL5Dn)gIC2m4E7rjPQ#b04Pz&BTGeP*bEgMAd!xA3XEW(XRi1)q|%)+K@f*b9m3 zO~j&CYqr8goEn?w)}w-j*nkWNMXU)R@q;Jvzv0=t(-fv}xDO+_Fdr_=%m-pAK;DW` zdcofSlcW$%#4?Qp5@IC81nLw86{=J%g%<}fejGy8PsSZ9yTcdaY`l(xei#YFwP^yG z!)=BK93%uQE~@e(c8S>~OSRo8URr#y~~Dng;VQZKXChrtM40x~yyJO9FuHe!8E z_EPPR>#3L_4wqmaBc|b3-gf*sG#FfuW5e#N1f<5`S1oDC0q5OpB1xW=zJJ8tk(ZzW zly~nt)(JW$7}L^kK`pD-6B}*vK$SLO^@MFJ9=EKcW)LhVYW~E7l7O%Y&zAu>-_ZKO zrhO7f=R}}7P1>ANa#6(;bg&Q|5iJR_H#XiRm-cv^gHjj)sP9kFqh<~hy6eJf9%8L| zfwlk-NnV_dLq(gZ^bLw0O2=B6u`cDCTGKX&Y$g^82PO^k@*1+_ZG}#F`&F&t0=Zk2 zogaT$a=2xO9-<|xFGeg0w)3RMKs?NCjh(3B)20DYIYi%DF#!svl4>q{7kZup=;5d}0{b zk_CHu3}K|USXQPeqW-OFI#e)g3?ug&Iz$i!#<*GqXTRGP^FZuZc#t2VvU0!GN9uXF z?>ep3Faxmieon#S-OEra<564yvq5d_%6vTD?6x~){IJP@4P-M^IIGfjE6xxQMpd87 zLlvD4r9}w1U@rhTwlbv{v2m6}4P^;59@7BwjUJ0iqX_{cZiClqT`nPPv!DQRTL$96 zvEISYg^Z**9}yve;6;m#37MS}J#Ej4@maBjJ<+gY18VY`Q=%~(s}&o!T4E`JVJ`ft z3yUW#OEvv)Vo!x6N5N<~!d5(WGPVz*3t20KV6TE431J>ei37Hfyc2^zh``>q3YToK z_#yWQmf1=(5PChxEX~SN2s@fsa#^^vDDV!w)x@9ll4yGfaj{W~9jB$Y4#o~BScGAE zh};Dri2j~({{m_BlvRjux4B1PvghaEusf%Tw1AyWsTARDJT;@V5vxEqJS97=)nwVB zK4!?yVFocYozrUC_<~DqbH!tBwUhMNARv>6cqzqNbO*C&Z1QQh)K!bv`^9?A{mFnj zqt*p51-fA;OX#$J5w&l95B<+QKr|8Pf<(=FLRmG0h z9&a0i=fIM28>SUV`}$$iURjKQoVWp7i+>0k&dsiE`Uz}7x3u6oH5_z4O=S|`LoxJn z;y&?6yrh?(u;Tv?TRERlRX~Fin#gn2`Y@u+py4RY7J^XOz_D1q0A^FJU&&p9Dd^@gxSXz7OP6RFV+lazgt{F z-oU^sanG3*MHk@0K%$KgW}Wfz6JKU6B?1<&v-PRA9{m}}WyGc(1mnsAxIHbzHxEq?aQ2QnmYZKv<05;ye1pw-gX0L39Y&8S>_5O7LGX*2 z?v~RK@Zw)TB8n}q4*pmM#)BRLxzWPk6MEx<&&BL%XTF$DrDwgL5XEqX!Rf$52Lp-gKd39B7Ap;^iKM3{`s?acPDLAZJ!pd+rY_fO-FA- z7jI4HZbP>|Pxrng`!_zp__}3492L`;KY5YhZyds8`f47qola4&o1i8{U;Kr}!YxUY zPS=lI60SthXf1Wwq-F z4g{~M3lRMOiM-^0i^DEXpP2&g+-v!;W6e#v^5~Gkjm&?IhSqvixipt~EWeG>& zoV?!8`tVf|1sytxaP^B6ei8q2Y#TWf7Zx$2JuBYBf`XLa<8g4I;ou>f^V5sGX^Wtk zhfgoEAyj09^jMKa99d{X@45|mDRCPRGX~7+91W!~GOz^l_?aAPxRnhg>v>hr)SOHJ zBtc~_c7Bs&ILo{aX>8pB-FK9TC!>Z1(9J4Cv2?5Eac2O$B870^fSBG7Kn@!|fB{Kx zzM#uJTcRYyN)H}HhCzPv1xN~`i?sxXO{PId`$fX@a?NS5t$hY6ewR-8PiO@WiU18HN3O<0uxL-y^`v0_YUu z17dtH0MJ>lv^V?VMquVpoABoOG_*)^ICXFO`0=oe{r7VSV2c zHu#IkYD?T-9v7fEpy)>X-`$iL-9-GbUmZv#3shtifbQBz&zD|#Rk%MQ41uGAt1z_! zD%b1^MT4pw{f1jIRkzfFKq3JxRj@@kH%CF%VD)JPj#b#8vTT61?(DfZfYSU-Xc#RB9j1Kk5@k!#}H%4b+ES%F{{(tHklpCVL{p`C9V9 zvo!y{gMp#YxZJ|-!x-XT*s6vA;?T09_x(N<=>=+cfHaYvK7`;iDC2l;z-VGwMi^_> zp0=mh(7ikFxiK9dFCq_M|E&5~eq)c|fJfkVq|ph);kBHakol2bi{V+K40- zjsWZ33TCPVI$6I=-fDfrC+8zZpBC(o> z*!Y9YKCze|qay*x8s9+#50-m`v zw3O&>NRw@SCT?!J?63RScGEY}AV-J`QAdS9Cs*iro-o{(#E;RJ*}5rczu6X> zJjl>hlb0*{n$iMON+f3WqA+d++yK(9z~ZmXxnckfOB(UfKr>xi`c;se8j)f0=W=>j z7j(3uGYs90&#KD(q6MD0*WB-(g#W~^7kCNw%&&i**~7%k|L^u?h5z9ReoDOmMk7ydcP? z*WAGuN>MYv2ruCd#s=NN^N1=@&LktEHF3#i@_eTIBNzxO=Vb3zzODZhvja=AsCf)t zC3(pR{l#_^PSB-x?JCoHmxGc}`MCT<{;g_R+38#-@1yoSWDeTJ2X?9kk^0mBif1?2 zo@-c(ex^mpf8s+4U7>UW2xQfO7@oMXs1+Abcz(WS!-8~wcGnqSmG_;8;_I;U1s}c7 z_YXJtdK`6!`1sNrj>h=9>&S;&AlyNe%#K!DV(k~DNx6=Jel<}R1n#^bW87^Wdq0EG z4SIwGEBE_Z6#O)0!ZW@g)ZbPGt7cTTM2THM49CIWOu7hr17p z*=FK?+$5*KPxog<;I%s`uBJtI#IfB6al_qF{qsa_X}TlV0DBTgcSpqP(qXSVdLpLX z(JYQ%-^uTl`z2*~TDrTVSzXEMMhUyq|D4bh$Ne1%v_lq?J^kHp+@JZ3xF}b#$xA6F z`=GTW@5hP7!8!&{S2_{FFwG94b1*MI9CfY72+Z+;4P=tPxNW%6$9jE<(+`3m}E=UEwuXXcuNHbFO%>G7Bx5k(cy8-S|R*#IeC(Yhv6koP#f z-wIYO(Uw9(jkI&@X~mze^tEfEr)s{?Z&LZGcgv#$Wm}Y?M91unoOgNmIcmz%+PEAb zXWDN?3Dbjx8@2Pr0U8;u^4M}5l^gcej9<|4b%|_uvPQ$1mIWN}`V9ldt(LU%f)PNn z21Ww6;=d;d09k|CJM?S}P_vkrlY5Z`KAmSq!BB2vcBdosU8p~|C5K$kyD_}o$t5sw zPiJWX-az!I0lG+gb|JE4{1nFD z6ULcaZSY14HZ&N|dS*1x5`_YSnRVrfXKVT52F3pZk`t!;R{Ai-)s>LHY4M{kEPhW| zK6&wbLjU>2jDn=^5@^T*vSt&_lc%#kSIBEn1K?%NLS$XDAYRxA0;}|IB9KcOAO4zb z@5BI_G6az7%TpFHPcW+-?@9xMYzNSV+?l_q5`~!Id`GS$=*9Y>{_yD!b}>aawB>X` zOBK#m20B?nMh>s79IvW(|N3d_4)bZhB-U!5|K^lw}xu{z2yc9Iu;yTkw3Qo#gYU6~ZtLc3lH5#?YTD{Jl1%^y?)L z8(0+ZA$Y3Tv9sfq3ULE)idO&}HgEZ7Czs4d7f*q)qAjZ=dWd*67t0YFxFIJWYu;=D zgxX>uV5f!)g5fAxUPB<=S^;Z5IRUr@h^N4zQ`D-XZCulEOhZiUUW~$H&6%)x|+Wa=mc z5MCp$Lc15QtFj?YDTZoak)P#_|M-Mh)$ozdw=Z0Y`y2xIMj$*{a0fyi*^tBN&e zlkMd2R;=p--U;fnDGkesD8Vi^=IEm5M-B3^QlD}WKT7urNf>J#9W5X3I%8Dew)?%j z>wfLr{1d|{@MSQ(&qJ^B;OiLtW$-wB7!1cTv~zPqt|=qf=fO=UhID^)hVGnm_3`G9 zKR(2$Z;zipCP_YC{do5-hK=t3cz0!b3i@goYBVnNXf2ND#e~Me&~syJGkY7$Xl4nC z>2MA>C}GK(1@-})7i*Is4M9glKL`F%mHlHJJa{5jtT^h&;gyczE{vZ8ZK+!d(GN%B zaeXx34z4f_&vv`#YC#bBaxgsAdzD8x;nxivGKPYK!U2&L0>5!#rlX#PnLTEKMA)p* z2tar`UoNcMuGV>CrhDv(S^9spyYjijEArrQe!$u87 z>iAlQ+R5=bfx$1KdK^pY{elt(J?XDs*387j~AVd<1G2G=ym z8b^g+m0LbZenHD&w1(hrwAURLeDRfxv<8s4V>-acxf2v>JDI}DI^2Nk+qGumnUtGF zW{0Y5qn0i;a8E-1is}n%z>^x#v~yu1T8^F{dAf}#5U~E zIyH2!)MH5#j$?~P6z!SZq6{}F%{4g%GhfMXJsa?3vSlfS(WS6qg$1d)}4ysX!4;)mLUIaQ=XMw*oK@TP+p$XP5uUH$R; zDz?~&b(vQay|1QpL}Abs#D%9@UCi)3eOF$US66>ryAz9quaoeHB>YDb{*;8T%70&9 zeYEMt;SUY`)z$lV@0uA}fNSY@QIt;~-p6H(0j^Sid_*LLOplG4I#60!2TJSfKxq|` z)`ySpJ|$^2Kp&c*w0RJ*0ZJPQg|MKjq&8PcRj!hHTqTuou|KAOB!lZD{2>Xa1-g#A z>8jb}SIs8BYBu>*vrSOj_n)pmM7hO)4=LbN47g4TbDfmrIw{6=(qh+1pI;}vOZ0Kr zwQvH6Ds`Q-=ylSfp#UDxXwmCti(WTd^t#!i*UeG(K1t|(lFIv}K|VB7{m@MHLu2gj zC)>%49zllhYa95$fwf~DcAL|hJT<%U?zLWQD)X7nae-cEp&zo)Pcf8^bZ%?<_eT!a ztBP(;-Xp+@<0Q-ckc2-b;ZGcSTEEi!NU0bX_~WPRdjPhTTdv$XW&`EDPZ4ahd!2y0 zxZcO%4@vk_5Py@Oa=yZ__W=f+O1;=XYa*U~cg2PSeyuho@B$~n{*%Umd*N9IIa6>GGW+L0ewXkjQ^TA9OyuQ2k78waU zV50#L!fu3>G{|1XhrxgdI2j?9ZsIKLyWu z(5x_t$?Q?S(HAg*a|8_~X9Po^#&2X4DRF@#jn)SfL6;W+$qE!z7X#X#Efn(eb^eo2Ib9oWJ0&2p$*;K zn$VEET!&E42I54q-khB_RPlwVw zykds}Y?jx3?+#)KgiVZ)WI&+&DjP;n_>*-nmh@JW-@b{Li-}vnOS1RJ9yRa=vV#ZdC%fJdL?1Y;(`dxq?*y_g4e0fr+s!XYt(4j2Oz?O#z8DCjX~iPux+^O|1h zyZ>-iaD>OOn{OTWA9+6?jXV8u+5Pd*X#o4T<@*Nky8Qf4132!Me-<}x)R*1+hw(r1 z*%{u+=djzk^`E0|_m-4Y-Kd8f+wYyb2<3sZ13fW;y4mRyEH{vUG66UqT)y64>(|E* z#lv85SAOofNro?EY{DoLhcO)C4stocjl^zUY^qnyhp(qZbE=+@oT(<;jCktZf4ncp z!(QjE9Chv=?z*GGO1!%PW~+qXd}mv|Q8dL@sLs)#pD zavg-Oq+T>P$U=4AEXkQ?^JPg3-m#QFPYZImM}Ey+*@VF44?#6Q0070)i?rIVQ8Cqy zY7~CIkt}BuvFyOFKu@kBq|{8hBcy*~z*JF>7WcKX8ULIXjPtn)_B4| zzr;bnPg|i1ZFEn-H`%2A%b#>{?9QZ%xfb3fLn<=(>uphMp2$LSDCUdlX~iB47Z|8) z)qu&tay;$oqdqZkIk5ko5U%M$4OjI^3%jFTmBRSRqJ!z92Henl0I_lZGhseD7<#BX z$Vnc}6WUsBt0)Y%CbVM^sKguHj-6*5qHgoiPuunH{vSb3Eji!HcW2&)yq zFa?}z)58-lLkQ-H>>IH&Sz)$s#0bD|@q!vUtXb~%-l9(cgfbxL9hZ3s_R|ow44>!q z>Q%8@F879v@mR3{q%f>e*{sNW%!!R?@>?6y_eNt8jz^wAOIEEW8xQ*Gp`;g3m})X^ zMKhSK#Lw1~ij^MWgw6~ge;}fle0x>yesTx8!{VnKIzQ=~RS%!&C`WG|E8z|hbcc4g zcIl^E+VoRCo&x$Qpka}pTu1J`1v`ObwQ=hvhnMwK5EHz}eeCz<)%rodlF!`K4UY)fCFZ;gGt~vGyXGg=zNEzFFHkC-^LUg@_Pmrn?Ikn*h4U*4 z%wYM5^;(`t_i6TAasl?j$5RU04&}>JMQ_^nTodjU?H@Q@Bh_q#R9l9Mwig0^rHWYW z-hc^tD08cdiv)BO*)Z^5auQ?!zfs-GZpvT$l9Y?2npoR2G-&Bz9jv0h(O?HFiqEk7 z;vyaIh3nHsqHT6~Da__8Erg9&0s>AMWe^H$Puqal4u1%X)&BqxW0*FPIMFp94)?Q? zfikl-$o4Ze1glSYm8cL?RS%2mTnbPvcnUbqkDD#ZltE7~#QA`uQa|wspjbaoF5}}{ zAuoX0QvhN>ABNi3hj=(4^j0m_bH%Vu2Hf;8#3=0>Xb#58j1iHHxHO?84Gz*mNA4*D zLr?tyFIx^PbyMXt3!y!NnZ7l8y%bYey5AnxY!k+Z&XaYqe0hR> zr^WUPSQ{pMNXYdyPpue){x75aY(V{hDnuWZ2S`E?MqvWeVLI8&|Ml^cc*NY`N$+Gc zkBevlEGra%X0PE0iCn+;I^}3Q{L;G{mpA=!Ir`T7GLE2MI=#CH(Cv3V-*o{RcK#+= zK?EYnMhNx?y-{~Gyt#@(*9iR>jR(Unvc2z&{`AprzCHH;EI%dT4{10T={gPPh_2Ew z6P>F`+^iNLtl}gzqXt3`MiA{k;uts%aR<=^whN7Vv45iX3(So`x(jRW_#|1Mx+$bg z%+*;F>^WOG6ne%MD@NdJG5=?it)T@|t3i>L(_i(dqAZXME$=yTG7s{W*_rD$S?x;} zBSNpJo*npcB%fK_7GIHpc5nX1eL(4nUIDO7ksa7l)D;q&9;*3D8i-`T)$SzLBK>+q z0l2u2T)R(>N3mlXKB>^_!WJqDWFVw|wZbbwmn~idAT=MN^EisEr4bpbD>{l_!OSF% zgcd{Zl1>Nq>w$iDJlod&@Du)UkmM$zWpV;X;Y5zJ&f}-DLsGR-@Bg~R#ymS@ruR}NtkV$1r|H!cifYJl<%elwF`jj-rI1_BFU5M+_qa?@&K+udu=11b6i@ zg}75j0$HEe4cM}Jbu-ju{+^|vRWP0s1La}FA_gDVQ|{ylnv4%moNH;1wZliecH2=@ zIfh>k(l#0{%T2o~ywUSHL>*z0vD5_T$RQz&3X~4fm_CO|M!dnqGoz7>nL`%WoN?aR zIvXdj#4>w{ha<3BR+k0Cfne7esP{63*m)w04FQ^wVY``sf-5@bgb{0JrUGdg)|9ZL zQizr!5(ie&*xp*AiGiw1INpYk9#`JbhYl3WOk914Ttk8ycwhd36Q^6)r!QpY#HEgX zN0HKC%;TX!M8vmng{fc)K-LN(FtbT@ytaNZ0hh>XFcyGqI{lXe)iRNLDm!LyE^Q)Yr1A8`O;^_ffA8{FSNl9s{u^0qhZ-i(_N_kGv- zfz!Rgkz&H|d-vAD?ngZv9Q_T5$x=)uy0fEO9NE#@=2&!w_l^rK?;bkca!uMzzC zA;S6~W554vgx~wlT@Q$&bAMZMLB3zvfTMqSxa*d;o#EJgUb|A44`0Vr$CC6IzTA^C z1j^0pB&^h}rxJo=G#`4Ite+7i&K_fAcUZYf(w}4fzv6hD9*X1a;8voF%zsnxOyTY3 zaB%&55c}A!K}i1wwkF9p=F~0qlf$N5?n@zppVVF zA?3S=Gd!qx9K{dAeCOK6?Evf7Vl_LwFC8h)^D`EP>CAx6C&x(ZuzXQ!APLO=WCJ*kfHfP>n@J_y!G7>UN5$*qdP@!#QiS+ijQLnz)A4p z%=c#WOBKb<%zjUv0ay6-K)37=%>5)FPROlf-WnR5I^mv#u1bmBm{;B_4O=#zV_kC5 zqu^7e!S$8@y2g^mgTkf9Ly;;$&e7x-vRe!eC7{)RvZPC2F(nyUqzwUix9G#v2~X9$ z-kz4Oq!Aun${ zkEw&%6wA+Yv8#$heV&(B{Bw8eDv==$ZbLVUOpD61b(d#= z31?Eld6o=CbxBcf>dO6FX}O}IXJFW)V}uMKHPvQ!^nlM{ef9R0zrjg>A=w1c0*2CR zLWv7e?UHn=0GO{&d z(snFia7wSx_SwWyw!p9|9QN3Kl(u-yT~8Y@a5SY4)MU(-{?^TGWTw$_n4;JoJJwM% z>x@Yox9@m0!$9#X{KE0HbUNh&u5dE5c&0723|PwCLE|Y(qS_JfhOH~DI-`i&Gvu|b z=Oq^R!@@2jD^@a4M%Olx+sK)<*qtX)?&k?qQ;0X%ulSs3TZqOA3$26+a$J)k2t_C z_r3(CELfByc7MfsQDu7YA-$^J@UQY=FdCCN=$p<%QJqQ8iT&Cxmh9I69|vOB`S+R} z7(6*<-F1RnKM_Twe`FK9a;F#f$8pr>jZf>qwlkTl*CwviP&PAe{9*vctp(EiJ{*;| z-LX5j`?GoH=Al=9>GgY~Zyv_i^%{D(>6H$zhkv{_7(PDWmfypA{$GDE=&m#FjUR8j8vVpYjYOytHWJnd0-oH~RbpMIEpQ#T zfD6ajTsN}0PO|Zfd#=&0bB%Uw8ZFA*21I|rEYG-M!>pK1n+RG}XUA6vndChHox+42 zAVROn&xZ&{SeScurHAimxJJ^f=yOJfqo(m@=G6>C3&dN9xac#bi_tV-gz$*S0R2Z;1JIpDp$FLk|`?Y8p?J@8vk+3}HSSoTDc z0Koy+Fdw}w#MI8ji2zt}c_`pM6=C{P1~33v%12z>?R{rhj{kY+mft$V+rK+Qa%$rE zwgjn{Gv$5velYx}fgU*4tur3ArrG&I?Bci)vERAxjvhKU-4rqEjBnZsVJe~xFx%}( zF6Z{^1FyH$+)x3XR(fVaiFqZmJ-#gk>rC;nm@bHIInU_tVz!yn?~3HJ{*cJ}kE_W`v8nOHw-m*G zaaiKRpV;X-YhRIzW13ktOY&99wqMH9NuP3|@v~A!;m9IEVH2pDoIW93F)C>e-+MlU zg-3LgmV5GPhPOBPxhnSckw34CgVzu~ltegJ(JuTII`)g6D6G$JEn=vs0v|ZNgUY!N zoG=}m;9AP3x<{&eCf`f!y%eK79ac<4CE9CZdoJ33?s%?(meTqx<$dpPSX;~bC;d4e znfN`3pNhZSp>o*m(r>R%6Oz7e2Yvi@K9d>qpL`)*{Cs)m{$06$*Y4l@;wP`bg**qu zrL`!7VddoOr6BbvRN&%94;>1P$YeC+Dfh*lcc9n&8J$U8z5=Vzxa z6U_@8Teaa_U%`cRe>{}W$Nr!F!QXwEqOR7<-C={{^tP}Yk?0dy5Iq*N;iuh^USl#0 zn|QrZLms?z?}MC@){Fpz0#5|Pt9K6&H_aFk;b|IBbbZ9K1Z@pDRk`I#zOW7(i@$Ut z;*~pkZpJy`IuD<8amBtFG$f`_HHfk4Lwwrha414qCID_RIj~chRJe$>rzOB#9k4{R z*e`3fgS$Hruj8p;s|50EX6&jblLF89CT#$5aJdN(T{9d&w1un1j6(HkO8%uFHDzH* zX*Va-$a9G#NJPiEO?vB@TJUYmq4|@T_LuBjq#@@S(|9{I&wsvj|lQE2-1H(41OD8Jb6=HMjeyeq$tZwnbD(RG}%6ut&} z3CzcICD-b3;2R894%3=(eOmKl7QSU8c1I;; zjvv9Xk+ezoM}M(Kq*6d^XR(_UyD2`S#X;meXeL|=sCYmy6>+$1!*1b) zPa>$9toMucdIAGePm}rX1qzH3k40NA(`5vpB4b)y_kyc44XlB+-5uucpe(x$g1TU75+xZs6At0a|&l+^OSgNjPNu$T{l2c8o6gWM_8~yy9DG!rcK1t zrXz;&8+k~q5WmDQ80$6rc+?NC<^*Svc4VvH2Hs|NUb6KjyC%vXa1nnNcC~PPWu0Yg ziF9O^J%)!*3^ki44%Z%m?KwwB>rkUz!2ig?oG2dzG3jX^E&groPU-^Xe!0cNNqm%= zpsZhQ%bM%377Qh;3LCG!8`TV{a6i$Ik((~wt$DrY?c8^RzpODJE79X|5ew*}ffrpJ zLBz5SOr%c z(<-NFVPc`cUXS2fGDsz$zDgadh1o)rls9-82s}m(u7j$r4j3UoKg1yW9^g1R&=Si8 zE*DzI66V1{Y=7x!VVO?SK(dS~>0~`St)cW0n3Mn{zJaAR^hLjAnU5H6Y$s(uNG8IK z#9^y%FKiC`G=P0p;<3CM;GrhSZ zchdeaM2idbs!5*>VSX7+p z{ukho0_1uPS_91&l3IYjOsqUXngC(gqGvO%!P%|=BU2ww)3`o}13Q=zI8fU(0&#%K zvpL#{*K{11=#95Pms#i*E~iqc%#jpaZ*ocCd;o14h&M@*2I88BUjM6At10BNlMjV3 zpTnP`56r6-^h=?D>FT8t89=c%%c6477cySg3#OB6vi&<}oICQe|7Mnosr*G53r#4e ze49bV_xTODO64DTY zi9{QuXA34RtcId2nu66XjvT+9VDSyF&)sSCT-B9qa|XZNZ7-3C7N5aAkqW|MvPA40 zycvZV%7mVQ`Se|(+OkkoGvcyti)S#+Xmx9}`cgC_eNE$8R5Rl2_n1YrEr@JDdueb=@7(5VEv`@csC}&XZhG4c5epXBltt-D`^t^<(7tZxtV#9 z5NQv)ptmdUmVMZaCB=#o&R``1S@P!WzKrh5`^pWP}Z3obvycH|r2`&Qa`{cvVfYZBr zlnCV5$T7#{l>;^g`8!xn5Wu-Q=y7+ynXws39uSdGpFyPET}@9x1H0>bZE)Y|^~?Lm z(YPEv-rRJ%w~_!^T!t@@FlzWYJl{mgp^qhj*tRo>`aFr{dO>ok@{ZlX%6moPYGj9T zM#nacRC?nMVmw^Q4(cMLC|9Q50V0z{k(*dO^EWW{Q?-wi4t7_Y38y$s_DJvOFQkd< z)iRl#F-03*76p2eDlhtjgrYUYNInj02sz<+KrCNKwG@0dUG_vkJ`Pw2GfaTMA}^`% zE?;2FTJzyzk+j1LJIsxNtUDrK^L=ZP&8R#y;|Kg;&YKJ%SOklJM=b5Ef9^Vg!H$Mhv14o;!^@B@(w5OL$TAi5p_rKq=H;ZtChhz? zG@Kh4p&_hq~2F zdkFwGIb#?3=t3%9&2k+VU8gb`%x;ur2CoZ_RpU;!<3z&Yxe9@L`A|B2>(i8cvX~u^ z7$fy)zS}Pwf>>KKejb>okRs$sXpcx?yq|aY-T>7+|2IVX7vDpd$^DMOf^yU?kW*FY=Ow*|Iv zWdQ;t4QHCvufI(?+e_x6z-Dj2oVx)e!A#x_?4^+_^0Ssf7ATs%9dPZK-P;kU*1Cr1-YMZ{xJngmhZxnN8>d zkttDTK1Zd=;FEP6(uD}tgt!HJ>3ybTFhP<$_b%${in{`v%+i})p}Xs+3O{SIVsqMCzL~tf*JopFC(6INr-WHyHSDNb zKm(fXcF)zqN^?k#(;IvzZ*YS@dtC#)AN3SS>CdT(e3i^E97#mvLGqAEVC?WhKgyj{ zefblO2D=gh@Oq3cL{$t$HQOhbJiZj7Ur0g%iQcV%K_`=skalgz_|_(D#e62FWB9(d zjYUSU_09}BTpqRCAKOrPZoN3TK>!oslc16*$U1t@h>XHnj)Inzqp&@@xFDYwy`0LH zHw$L^dX-Q{fS~u4P$eKJ-_q#seOPP6rNTy0?yqL%^RTK)3UQamC*{anXD%Nt(odHMTmefrIcuBEDDmrVf%je7zElpjpyjI?6&xN2+lZT)KVfd9f}0 z#WI(egIn@*nN&fF$P!3$tyg;8i6^($9L}sqraBHWtf5!XjuszCagvc*K!QuR4MAt` z#RZqYq8DUVxgv|RHMvlUwEW_*LZl)vtn%?g4*LE&hKd^o@2qp>RVQTx;`EE@AE&nX z$(9!zP&{pGKt(jyfQ!YV2AswT?k&i2Mgz+WbOh#ty1(SU;Vp;5vb#rv*TU>p(H!4OxsS!k&DZ$;cd?m4` zX}};@^r=M}?l#q+5+6ZhN>*tCzk3c_XRe8i0W=RW;_$Od9D@dX=)o9ZG|Z!3qYH2B>XI(U@Tv3*%se*fq_s5A})<`fJ^U+VIDl-xVf;Mqu9vHn~P!Bk~C;1TY7en z@lhWSCz7t7jsPuy(tnHBf-4{asumR`4f?x|*}8H)XGj8|I8WCTdLX3AVVlijUSZTT zf*3TO<_@6q{k0S<-{eX_?7paDpxNO#L*IBmIlJk9NkB|uRB<+H0MugVjmo%OA8g&A zbs+e$+Z6Rn1%oEL7w_BJjfkhkdJms%>|GOi>mb11!oF8vlfy-txr&1Sa|bWHs@QGU ztWJk#nAKFrheQ|0XF8~OL7|(0nlk4>h8qJOko*Ej6-dbvnl3(w&&K&D$K8g!deDOh zA8=zI51|lZn-*f!&Vryb9)s8t9*u3+P76_CN7$6e*FauxV_;VGem#*l>;$mMrgbjF zjVpBOF@kKvx}FoL^e1)Yv08JVE~ng#G$fW&1mTB?Q`{X83?v?ID607+p*KO+tjFXSVPsB)Ef{WyW0G+oW7nG)#~YpnIS;; zB|tWbCuWKeIGnayXk;#250J-XY;ktnpzPE2PTJ0wgF%$Po2B!>Da`kqI)upZK?tEI zd+@wMKbTajHk?0VZ)P6#$6~x^W!{?!R z2P5{cO((e~-H`C>bj$;B_6>;~HzAOT*%q&+JsO&muQ}jb0Mah*c9du84l_%)j+NOR zXe&;d1bi^rRNzUHLs&+r&JjdYC=fik#aadU?${z85tHULM*mI38Nb|VwzoSrit>Wn zU5`%^mbbL>Y}RplOL`*#%2STQ@mZi`v;?`At~AikAF^r{zB@kNX3~q<_<>>F; z_~u*rF!;MWEC>Az?8}!X@a9{m|COFrG%&aS^gH*x8$`poqI~u{zc}C_CEnTE9r$sK znupAR;3D4Z3!AS8KTy5~KB?XXh zR7@c_23+|he8cWLpYQf`_K~Mtw7ekin@i;G_~Pj+_E6OqUGKN<2WquV4-HU7`vw2bW9?z+$^|M*wOKA>sL%hyn`p=gA|>YxKU{*E)Uwo%+vTU>B2&H@qhrNCIP^9 zW-4koOU#G+!ELu3J$}9!^!weL@nBeXPHq#Ug16uwx6fO8qnyWn|JrH6+`6vWoDHkL2>ZgD1Qjkcm$$yGYj{8nyI*^wad#+nHG{No zP;SukzRnxp=rnzxpblgWe{)R3|J+VISr5N{&OkqZ9eU_@S`%h5rNS&-9}mu>`U(dc z#>V(N|MthDn>@7q@Zo(6=08pNgX_s0u)NQM`%Unud(+8KlO-#v3^@hcOmU~MCfzUB zXSE>aw8T&5UiN56i2zIAyq@8f;9OqquZu0FO8MdX9o?6d#Jx--bJTcCy{3l=Zh3Vq z8tu6h1cHuOHNKXIHA(^k96tFVI(u^Cu6!oWrw(Pn2_D6Lb2*pi`IN;I9Gq?9@O&mA zEjp!R&U|R9yI%iK7L^R2_3{hOO@5FPYyHL z&K4=LM{q0nknF=}I{dh{Uo5s-#D`(;J9)nu-3+_kelSd)z|}Z<3we1rxcRd+mSTCt zuXl%fKbe`Kelxfm414$8@$jGWwu|>2d1QZ3k^#Fsa&-SN?v_{odUs#`b90lY`8@vD zyMMQ%e|&eS^5eU!OK6uuO93uM9z6U4O^ZfLp|9V$(ROp8Rv`FQ0=lJclTehf*w1m+jd#+|R{y;?E+@m1H;1!ca6=pLhM?VeWOA!S`0E4Yg5y&fwsgplSV}SiqT)ky$CGSNB;2O#HK!@LmazZ{u%Syg z>6M-?KVK864^36i6YE-h+V3B-cVw`_XyeE>P^XEByigQ^3 z<69K4IbFG- zr}5q(S}pvHOz$)>*?cGS)msRXi=A41D9@hg8Xgl#FS>LM6nU6>je^`w0`t>;E!Ls; z%*t{meuDEhCE_v?O4LOZfG=IS=#nPEEr+(W;z-0-&gnGr^uoVF&EsP-B>|H-b;5nB ziyyChqQ$~4B+04-^6~P}^jON*d6gT-ymY|ik$>vI4o%F92)QTo?V*O^1?(2v!|p8x z;!&L!WHW4)fw7Y$j=FO*K#ZFhSxU49z}d%pxf_4uV1GbA`ptfn?#MK}LT=p&VRX~!d%*V) zy6@gg9=+lC(H%;E#KC_&89dhTYr88^^+H7-Exw57Nn;r2^y5U1%NtV4qh{!Wa}!tcnXmDEv)I zT2J-!;-xq%(b*84J<%C#Ag@_GrEsgMkvPN>YmRCmlmLfK+6EBt5DF-YiiOW}l+C%3 z%{j^DoMv;5vpI7%i&y9h9(VN8S`NdfElIy?y&|vUJ2>UU!rE)Lf)|*{ z>JClOpsvE7Tx)qfL!u#0tXl6`OAz}Tw*=ede39QLH*QW-H!j>CoW0ijrwLX3?R2Ie zKH0%c0;~NJ-wbZa!=8%UI5R%vrLpgN_q}oV zR#vtY`{nWOu7N_>C+8N^L39{cHG;JwSPO#HBDnK;$90{#h=IjgSI=pi{skB4qsrq5Y$rz0+acFPmmyB9HTV2^Dzn)q(TwY zB-Ea%WW&b@+}vA5oLCCNsyk?7S)Q#@VQ3+4blEg$Z495+`V9qNIi=yASrrHTSIH%W z_CNKTyd`qG9a%6okX1y$76Yv6BTiuKPMIsKV^e~Lo)&f2zni_e<6InLoi{U_8iTBP z4lGMQCTl%4tW|x1kvO9%F4C!ju6LxxDKT7GbVvnVKt0Kc(xER@1dkwOm`Ms~PJxDy z1e&uYU$)4}RGj-jjbG6sj%rdDILGp7Jvag+!Nr*k!4^+@m1@w}Y>J=s1Z|Hh0%;V-DjZY~T+E)r-8o-Twwg(Y% zLlg3w8YmdM&FqQBt_Db)%}-TLI`opuH2dH|T<9ji?yX$k2hg{N6hcRW5%2PF%E3DK zUVj*DSxLwH6*=^xxQ}Dky~D14-wu1<<-);*{=6UQC+#Ahsxuzk_ii-g&PV#m-hd@= z*X@i#!Ve*fd&jEqa zG~qUr>1kOFv!K`Q5svM2%O@@&7SRr`R8@2OX=H`-9Tzq3}FI&g|4eBmx4R)O>~ zND5!QF&39PHJCEaUe5uzN=`|wUFAn;5%nv^H<-!;!baUCcBcYAkL#_UN z7*&;=RJ2fi|&tSd#%OyL$^#_9HMWtd4KbD>>4bLpJ#BZtIO6ioDfeGZ1mh zuzs^pxFUAlManaJB5p$`yp18z?Uq;f2o0aVt}!CMAi>jiaS7jsvntp@+?qsAFZ42H zV|G-JG^!;Sm+x0JNXIHjT}edPEXN%NFK>#Ueh$dYJ02&&ChZg;IyJ~THgL>eAmJ9sKBW!*q0Z~A^pMfaTe}B zpg6Mv{5#*WfXSv+kYRM7uKgQ|@FnV@2=nobF3U*tCznnN3oKDMJ|s_sq{diNP2y2& z*vpRWT$GyAJC^1^4BF}2X7|_H{jjItH;05`Ib}1S>4F%=&SJe3gELSS zEYQ@Kc+o&eaiaNaar6M+1m$vxH%(ljKmoc|5rdG?$<_ojd6Ec17@XZ+%Ypvmljbpk zE%6AFFxa57d8&@LR33W4!f_o#fMlVk!-4G@`6SS|K~XulC6cRrFL)8QASYdl_PFQ` zKx0y}fJFA+C}Ci#jXN{O$^m&o^W;MdtdcO!)yu_d$CR$=tkg)TDLQMAB%-&?awYGY zXh$G{j03zZ7SH&2qcw{)j%HrtXhtpp=H&|N1?ycgb+fa4d7`J*E<~tT{Cz8!-U^QLD!*?9i8H3I%g7#vp79)rY{3Koy^VK6H2_E}M!%`Zhx$zV9!gL=@jLw` z9^B)?A*8_^pAw2J%+*2eR_IHB0(q*6b09l=G6kMJ8Q;FhxrP$rM<=Isz2L_ph-Qfr z97kxSa9OA(7^qbli~>U8K~$V6s{o(n*Eazk?2rXPY5_D7nW;4 zk9BlASsj=HY~vVK9Bp z&N@6o5~Nv%d?Yu>aCT%`R>V2+7_%~i20Lz*Ak5iMz(%f-Kr?a;Bl$2;FC#IqAVEn8 z!wToiOS)Wz;b+YHWy>xPh}nLFO2kgeO+(lxavjxxlOWxroDQ{~=5tA#O6AZ-E|no6 z)#%FS{}o%vGX{V)5YB~5hDVTFffKh8X&Z3T5)Gg`)rm8#hgI?%YP+D7!O`KG+6g1$%h%r1WMkJzuSJ4*a+|9M)q77@fq^PLnnT^5F>$ur&|CXcJh%$c+ zZste!CBz(23ie(YW3W+fGMMPhqM#;O+M4pX&p@>MJa3=CjnpBFDcPw=mH=yDdrUbW z={>rwiZEWe$ZQnGo=xa_1nRu3^Je1gtJ$-K2H^q_R$VKTlRxMs@J!qLnuQ@GmQKi6 zft(XquG~Ux&z7Axw(t6G@h`Nc8 zcZtW+sD7qz$Z^#h-F*t39_Zy#DqO?z85=htrY-3Odj0;Ye1AV~nrV3f9yi z0`eNJCX?hDA)Z0-vJcUec@P2Lih7JtTE}2Q@#s+dFSU`uw#&=~pw7tjglYO1W6h`| zM$Mjs(-oG18=>4wP#pHa7A?*YiA?iN-)v;fJr-p&4M!wnHtrp2aw05pg3JI@wTep` zopS4$XsNrzNj1D#xV#elZzgHyx>44)GEeVvk(DZ> zo^aIg=AjoZ_i%41=Lz$+E<+$HKQTHthY6mC@)~00k_@JWnZ@9;WYU}J#bnOzu*kJs zv3OMl?Lad1wh_fLgva1@6h+}wNmplbc%v5_hA0p9)<~nou+Wxe0>lcN65>g%UqoT5 zDd<|?_xgijq)*L|n?Zj(9NZa**O*cO>pk%tJuK|1Kr-c5uT*oInp@1K5R0W?vAZHt zPl5vc)~y3Zy$}{zPe=c)_owu&-qXA!HUJ|K+j=)*8}BQll|n?3^s5g-LuI_24n7HA zO*#v&Q4V|ji?itfO`b!q6N8FwmjOvyOjBrpg2sahM>XN%k}b#+{|WY?n7Q4vC0-9v z8F@Q2mBwr|k*1i&Tly6gJvM~zboX0th#5g~ChOIXzu5BYo^32(a*5kwRtV#vgWAmt z{~AiA!W^LiMp}o(j2>ajt8G2s3q4)R#>i4u<`U11My zecR}hs8kDxwGEYq}S@Ngjv;_g&!>HAmN}}rMv(e1eJf*&+p$v!`K8mlv%vo2T@?Pm?r>nk-&`c#$>8ch&Tzk%^rU~#hBNGkG1~Wl% zoM14mL=gxA1?f3&i-lQ&$P#m6oh8JboQ)Be-yvzH{Y3p-obeZ%D8wwP4G;`L&qedb zEnfa28w#6L-Ein{h!Gp-2ekv?&lz(YKS8RUfy0I$AjDR54hmkZEwfg!dV-DIJ4AYpdM}w9c6g*TbN5;ilU()bO~YsXBRH$j-@&yrZdO znhD!0aIDpO9x%4T;7OwZo8?(97CSd29Rso05>qF`nfXW^uVM%2T)VQFF)SRPg@E0Q zNMc^kjwv2xM0~EuPrytW+$>$dA9w8ffcJ4YL6AmODL7!1u%C6&higlmWuV6iZx*jd zy@h~K9fkHyQp|T{wDu8zR892Ti*RIo?nYmUOf(zKsGD z(Ss%nZ%DO3gfn2Z=_oN%V(bZ-NPMg}>LPv*_T4%MC;C z68fJTR7FxIJ`RT}SfHC@F$?0wf&mg%DZs?6O)THR2rzOm1sYg*3m8OI0p`zy4ZML!=~CF|!Qjt7yWI!3*3m%XIqogN!iDm39$vywI4Y*mRt%0R zc=$$i%)D&p=1MgLt-6ST`scSTcw;PD>=Ki~y0uw_#4d!mYV&>50NV`6beFI+vasm& z_jV`da(TycX9&HFts+8v2aDbm@^TOQumwjl!6OKT!pca;TGHpL#ZIrNQ;8lCU;iUo za2!Gh{?fS5F&MJT*MPAx4AvjWBSp&qhY!*GO5LaM97x@lh*(Z0G;8yd3m`v%+c9KG zp`r_O$`Q}4VLSnUA=velhmE84MyX=8u0(gtB2h@}3hBanyN!Z{@rec}ehVeCxpB6xbLk+!b2x({;m|kb0N$V#h1k3b~-Ul!z zNWKFai8B;ouh`e3iWlf5k=-GIH`^Mrcry4g+wBhX@a8qlQVK1-j1do6Y2LoPlrX*S zJ?K0y-U>`bd?}Q9eSpnn6fHO8I-VTrRa;ecmPf56%o14uq@HkPmxbDeN|9!4#h@H9 z#s{7qDO5y9yd0XR5Qx!=VeLnWZ1Ongp{y%uiA?_cDzriL9Zy68ZEQ>k7|CcsNH^)s zvsroVyX0^aUEI(x~BTCTLgUwjyN=A{C0q0QKP)#O^-fVC|=+hoEx#iu^q(}QBlG!)3`H+ z6>bw8Jaqdb6TZ0{jJg)k8{CZVMo9uT%OdzHQ>FUz?q~!(Q9) z2=s2_j6{XK!ijH1zIqRy7V#VNZqyVuwUo76oOjQfANzAG{jmBb}Wn@w+UnY8c}$z4@}9y&phTe zX~a54LgaV2J-#n{{ZV)5CU|!=PC#U*A%?*GW(?|n@7<&k2mPCFCT2DV0!rb)i7}Jr z&1gMUM>RKD9lhvcBbvsOyo9S+*rr)p7?LXyL-81*;m0pr&j>g9e3>M-p$c zhiUGhjl9v6El3)F+Z1VT{81S64g|Y1R0#e!tv0+w@q441Ut)-5n>ddnaf<5_7HlX1 zU`4aV;DfGrGnV8gd4%aml3p6^;$Drkd)P6NX!->0AOM2iywLZogzgNUs%h0?~5ksO7$CK&|uk<8=!NDVht@J|;z zF$%$VL5-&YajMpAKw_Mrm>gE6eav8!q5UFLzStMm8*B8)O;4~&kfUNOkFIun4qNB2 zUd27t_zGoj!2D}}1EY4d+FTZ#0(I}e39^Y!^*s!#6+ur4{Q#lU5&Bk~k2QfArv{URBm z$)*E>`_boeJSgu*pEJliM&74Lm`uJ<34_n(4E&|yTY`KF-#WvGa@70U@7#?-_qsiG zy;}u8CLM)WsRJ@;y~3_*Sx$%RGU7mrn20ebuWPcA}H8 zTm9-?1LzGO>6&|{ZSNFrDJ__6Cnp$DM#LRy`V^2A@F$0wt>U}WA1abDW0L4E%N3O8 zIYVkS>4mPJ$_f3M+7fQ|kr%=J;j~>S)9+6bavvG%I0L9#nRtJ3&9|An{-8hqWQhD( zJ_Z|Sia_8_$ZhJ}NyLSgta8yxk{}AcBo?hLMVWhLNF@EeXXxByo87;OjngzKH4YOy z(Wa()I$K) zH~9IJ1OJK0O19Vr^B*To!(WTrDI_yUCbl{VFarv{SNzNKT~Oysr-LORBa2{vDNLh3 z;!Kb+*#RIY<1sfAIcE2?;t}MsKlix%@m|64p}XZWf{|gIG9Gl+pS%~vqzIq*%jDn= zKwD2herl;MM)(s~r@@#tfXs9mZ{?P?^2W22JI$DW=9e+)shQIvZdg;b2Bd<1HTNM* z?55#s+sQ}ct5*%}5;_=aW&_hOB5Vt*<*Zdo=U=rZwyA3?#!Hd~EP6?NNeRE5#H0fz z(%RiNhIgCDc9d#%djfeKoSOPJyMs1kDo)^5&x2c_w8`wY4X`)z9}P1eNu~c(jZy=N z9urKqZ+f3KsqGD%^aQR;ti8r)2nM@b5d>p0GzMFSOW#U}mGFkjy}*smeJG8&C}T+G zc%&sT;AEufI7r+i#OeWgWIHO+tBxs*jzAWLavK-U2C!LdrZhQVyOR`#MBIFs8X`!_ z&8p2%va!0u4FkLjOb&-h6OEx7Pz@K+IiOcw4+wHYaX3arVuk%`b=sZkz*;aCHxAIA z3pZg>#prTJ+Q5Q@EV)clXndyx-E*>wa$0(5D=b)wQIIhe({!-y55VkZJ1KJHiaR7= z-Ek+^L>YhGN#)Y}Cjm>-OMEZ$v%c3zVA)9I-w){p9I`S+; zGZ;4`-5T)zT6JX(Zl_W+%_YO;)0JRJ=Yc}{jU=8;YTnWfdjjWAat3~$EQ9%S@)3@l zVhH=wj$uZHK|%H6C!1FkuuHxH6HS31IV#xzpG)VSx-Q0|QN7y~^)^T}H z6$y))hY*4~P7E6~B3een8{yk!o^E((vy2|XjtKZ%;AI|pY$PR-Jh(tP@p=y9QZQiH zlx-AIg`U9B=0c{(Yq7Go520)%QKo68Do$*g2$V-_=Aqhxun!VCBaYQ+%e@ECF^zL0{kAXN{!LeeDG;M{Z_CfUaf%~5-lK8n{vn5Cr^6CI zNANi64hha88g*%84onKNy`(U+dU|I_t{H1Q3L?)mg0J*A5OSUnV-V2uNd& z%*bu)g_@XE{Q&cmx$prKSbtHpx)5BKWaG6RyQ#Ot!E( zUQgRudmm(yHednO&5mHj7A!~F?Mm!bN0JCCl-7|mnSwd{Z?#-jAv$N@R&*J-nNqhf zJ@G7vn5xXg$zWuq$n{KMloD8O&Ote7uZ)^Pq23sSz$oPshh&KprsmV37{yg>qmbBk zZk{`ba`N`n#L$w?bFXDg<#H&Xvqqfkp_-mx^5VcAs~ji4h26Kk+C?M6IbBdLnwI4Z zF2dAr^|EffH)UwX^pVl~O-P!?mYAXq&b`^5p3#R(Q6%h&ZVI8)59tkm^7{#B`jhnw ze2I89nCIhE)HQ(VElJYd|>0C^pFaSE! z2K7Gi1>5;N8r(gq#+?9%-Mh}X_dN#EEpT}=9N&-=mOmp@_j^}$^aS$duJ;fD`rRMn zL7x=uB5?WC_8u&sQ}%aFY03kzF)r;N75=GRu~^A`br4>Q49A*YL}1X;dm5J zsncexALZ8AEkQ>F8hL0+>}R+{Lr_g1lQmL(v7~S4V>j5|`*j2rne)?r?tRtKcjN(v zb!TG`oOSt}mLYlfiC0%7#%4v~f?m~xkfftd#l-;(-plfuH~HSgW#B_oShuht zl}!6~p$A|RU`xGhp=hgW0hPgzcG2pyN)6M$e~XzszX~ z`7BKr{yt_qrV-JtKioEM%4tU*e#Rq6ojV4flhk30!-3SegFDJb2I4-d)obN%(#Cf~ zv&niEaO`=C4W87EM5+IS%P!cgp44_QXpQx{!-PE(Eihf)>hj915PloM6wFlGzf3b>`%24z^T1%a+(PA{Bdxv# z4c^^$Q`L2Ytagj_{Irh8D@Ro)Z$wu&7bXKYz5^ltK5ys->P&jCEBY~QE)M-j6-Ql- zM{uJf?O`Bv>&GkyFAj^PwEnzEP@B~uEuT608K`PF7?AN+zGxs>dpWr7!9AI|z0Qz^ zmm1`@(CE>@17O+ffA8G&ZaZUfM#s?6LuV*HBpE;wMK4e^4iJ&1WJTtld5PMn<`zE@ zkh@5KQk0TxamwHA<%mu$kw{ojQ!0x+-F5kIy0-}-bIFF3Tug5(jEhSyIXe$AVAySd z9{UZ@!?63MJHGiAC*R1Ai}1WyBycWh1cFTzRU%So6sY5nc>@MexHTlCeWe7nrf;$E zc0=Aa=_5$TIYOODj_61@gkSThNh2iWWn2a6m`omxROBuyp-O;p#5AF_jpLA4*U*O#zp+vW z%_%glh0%~wn2wo73Ts^3#>O`jYYCw}Ss}WShAyx zR2h#2Flsrib})2Fue%fX1i@UBjTKxRP@C0H8~<>)V700fG}DP6-%RFb{NY)}&+)WbUMBC7?<{i%Tv<0$9e6iinBZ)R#07AvQ_Om`zPVEs`X8UlK$IF3r_ z{dED40<|fxa9;#CdKX#}+VA#ckJpFYAW9(0-s90NEuEx2hfxTKHycb%N{Y7XL9%{v z%ba{yJ7DC5pg{~S`KGq#byAF76~R;#lHk&Csw5&J`&|U{=6rEKu-&l`)$ORoYDwo? z+Cn#zw-_S&UnU-xHkUB)sv%z<%_|x z94fh-Ny4oSp<-N+%@J@DTZBFnY4jMI>yu_@JhRLxwZ23s?x6h|10`vbM$g3-cbMpu z0L+pc?PiUkg*Cm!m=ED1rh@=UT>(k~h6fNAsyx}{xJEv7X#s@SJ_}% zR?tcn@4HRX?CYo&k|GeB2Rt#coA@U=zr+Z+y7jBuyy;R{DC<+bSCbSmCM=Duai2~{ zZ?YnZtd}kFs3wW%J(FCB8r}xQc(s-Yv@2RZ2i`05<TTK8SgqJ z+wA{ubh#>e7|WeIeCt5q+%>9bna+pp;5Hh&Z=x-phF;; zdG3Z!#=!?{u4Ea6C=mPt4gCVE)X-XY7{oj5HO z(fYWiV~6Vl@5WUP-Q{qtJCm`*bcvu9t=w>1g_JDWFD_*GJEX?U-EV9~LHZe&HkWc6 z?M2GpC~-UWCEDY;ebif`woZzO*kNM*8^rB{;{S~X6>QCqr_8UrBuCdu^*e(nOW8)( zUeDjdUv2{|OTRHHn`CW7zcUtdge_zjy7@QIY2{^#hpR{du<3pNCcQ(yxRAc1hQggv znoKwjH!$&KR0G{OPiH8?Q6qyq>XWu6&gfBQ39Qa#4(|~3Ac>zx(7}e4BW}x^yUu7- zj{kY+mbbmpe+Iq&m|uy-xV!H6?p@h`yl;!s@7#A=A^|gJQyjhkQWUx+5q%zE1MM?= z&(%lA5TWsmMRQf$Z=y73PrIG6fgZ>Dj@e^E+~Z>MBl2r$;;Ig-Us}_I({gIvPTLdR zSEvUqee3@#Dx%Sy-|{zhsyJrkR7c=o@ZV#SqX(OZfU6-{Y!0(R?3ka(?Jpe_mnV1V zHx4SYX>1nm$eBIpg*<}NMLUU~N9iF62Ec#8J#j+t-z5TCw<=IbjfP^jQ85>15>~?3 zy3#oA?SPlg$K7nVE_&BD<->3=9^4G>%F#VpzUtg{hvOXL+hF7-!(iO|@(*XuCW(+D z+_91L6*6XZ>jnpCJ2Dpt@jxB?w0j0`JvplwQs1yfHuxgK!jkhhp4v~@#RjXjP^Nwq zaS<6|}j#vtOQ zx)aR>^!xYM?U*Q{Eg^kp&{rQL&}Olj?cX#+lgf&i>!-qDfl9&sYqIk?YpY$c;Kq)18z3J9EFxZ0skAW&rKe>p`r&i1FY zhiD%_9~xY!?!|b?oeDvcurNaG|GiRcYZ0=IJZN(YGU$FbP!cb(b42#kl53;ol(k>! zHGMF(rr+W~72jYgTbVp<#+T-6&Ib13Jy z$8#cCXix;SV|%S5)pp7fl)of`2iLiIJJ?VzFbN5cWC_*br+v(p<`9#J)Z7!X0VYn9 zHVIwLcGSsg_A*8IagieIA=uzZtC-Njc*{jAK#SMK>~w6zxMbqNkTsEhH74hYA}$Dt zamPi6dl@bCKrAxh9wlT>Q5m?m8>=fIco-e4>4RLRwe7|fa<-R_IN00SlO@{E;-)ejx+=};OJcookTHyxtz7RGC zYi2EM6mP65mynJ=S8`mywGx^p07*ulV^4cWvO_Gdoxj_`f!Uh$r zX_nr`7uu>t-6|v(KQGUcq%YF5M2T8Y1D`N(4Sf8t{Sryo(F_GkJY{a1yY-Yrq{kO1 zF7{LF9Y9Kx?Il~t3#H4V+G}kVBe9bz6tRm{6E%_uF-KuWt_8%;pAwwB<*-j={Ozac z;KdJULOclN=k53wjMeRn5U^yMXzC|1lLs)(vSf>K@HY(lb|-4E_$DO61WtyOVIozi zI2#_-`(5pI3bF*3a58SP=^hqYw3t>+qBLP`cS6f4=_aoh+r^=p3BTTiiw`Z&-?tH1 zp=*}F7{B5rJ432WyXDf`D43ydQY6Qn80n5D)vm1QXk(;)O$xGt@7B6WD*-Y22W5G3 z1pJPr4eR~iHp*@%NCWAgT!aITGG@%#tJ+ zf6lGaipas)jGhD&o-^B4k&{FK86(`8=2CUB42mDCXAt4~z+_@CE=+G^p;ji47RO5n z7HN;jMt$0B-mcR2eXGS*N0bx{K3K=LO)O6hY@ELD(ouSeHtkK~~@vii*83o^7?in1Ep5-ilC%3(Dv z>NQ;t@=G)R7V!waRXD;-!iVeYV(%6Xrr2Zk1m0EPxH_t#1+q<-fM6cNZA!F#EGJ+d z4rHol!nQf+;fZ7EuX4b5g)R=SP_`xckO$2dGl8&#Z%;Ew_BJ-6%B>L^OJhpVWk^kR ze1dC{xFc!`!*hm+l-85u7Vk&6S3;OOMw7;|N?ca)w=3oW?=1Xdd_hn(6U278w&mr1 zFaUPrCxP=+wI7Pj>6M1~oXaZR`g9^IIRv1J!oaT^D6!ws2m(Kta&<=C?M{O`^_*i0 zv904m8Y*wdvz2{#yluSO>4aR-%p;z9HdgYhEPQ;v%X3yMPg+nZ52?skT3*^F)FwPL?9 zI;6>Z3ZDGC_$C{7hT{gb+c(AjmZkibp}ZN~KMcF0QE$*kDFVikm4h$kc-ZNW$OxdL zu+i=YQtZK(FL}5jAANfq-wyunmk-@x@8Mf_*trYH@#C=XsI$1Q-M)jmntU4!$K~I{ z-nd)7bGR{Hlks-bL;;6_1GPa+w+U4S~HBO8adJsFhy!bf>di_rJ*L{V(EkCfApVepQI8PquAs?&OaXz;}?dfm`D z4)(P>Zd)n@d)pg5+;#pbd$%#XI~=+d0WQI5lDpEx_@OJ;&9_d!-@S_wUx(dpKacu+ z_t?#2v=rnc{BacH9tMARhnbRhZf~ht84S1Am%;G9GtTGJj3W*Sat+k^+8>O@SQ18$ zcP2%)fjPSCb{~?6-5*tI3n{iT{ zUjI9}XU^rBMbQfMwR3;pDQ_N!-xGv3WY|SgL_dbR9p>@Aubmd-9;o0A46mQ}-TT4t zpJ+?;xVuLK!g`&j<~+E`hl9Txxif}Km>@?t!+~31J1+GYf&ITxdxj=e&kt0SdQx2O zt=qe9zOR~yQR|qG+VE!3ANTr?NyPWJK)8bB+p-z!YfCIj?K@bNaqr&kKAEN&-E{hQ zy?#3P8c;iuJ`a0ezm5CR*!cPjJl9)FsFdll*n*UO8>`N!^F3W#GH{IV&gYxb)w;E~ z7YWedx3{0up#b>9!zc?U`eyI=C?4e*Q_`%3AShu~t$a2`c|jDZR9oyhympPCBCC&J zBCoBhnDJimLp)r>O%EiVz!`l_Pl02~`nM_bY5q=XbcEbO2d+Vk6GA&WI>zK9@3w7- z(gf2j@PQ?^7ObgTU-*?>jfFFq@z%b+(Hu2f?Zu~0$^dCtr@f4 zEst{97Qwf>eGGuiJc6){y$O;>^8uqG^f(EHCduT*A0AC|IcoDtyqN}!Sc0xLC%T|_ zX>8>X%_1F72Mn2ha=GuH7Ke$MQ#zlrNYU>~Pv(+|+#pvh4!D4ZT%d6#_CAtuap$q> ztuF$~)l+L&BE_Ag(${K5pH7dAlQ#)LOU0l&}tnoQwD^hs<%AJtwM zWVMAwSz2+fl0t2!bGlGzPy{?#h=BPaF{vfFZ&rtp`0?m(U)iJ)UvTA7u=*w_dMZwD z0Zg#scw`al80CPgmBp(Y-f>Al^S{Mmr?=}HGJ9H|x%I>sT0If(Yx4NKf}oRZ1gEyE z#1k;V*asfpcwosv#$+c(ES8I_< zLVb1iNH8(ZC2paqi_b=zvI|? zpu^?*-YxOePqu9GCIJI64KI)>EC-pe+JVwkv_*YQR4FO|__jQR{i?)4wsIK4Jkj@R zfGmt;i(wazi!?66&8fPHicRgv>aW(qp3Z0Gb|{DX35IkDy*P-o-Zftu0Qh-bD~B!H$#_p!UIDV4%Q)37NIjd8?#UDAULQ;JNiF!~hUX1Nk$?;vi7BMcA0m{_~qB%4+xyFYm>U4+M5TF4KM zrY$NqLg^EW!M+4AMd=u(5THfD7uiFS2rax`4(Yi)i)>Oet5vt8rPyp@r7?>MxVNeq zxU?8fhyMVMYa7?puQCX6?~^;($a8j z*OVZZ*QT&z<)^NrLlp59$((UWm|(hafms3NS;}H=Q3{5x)brunrZ{Fu*`Cbi6ff?YO>w?Psv*5gb7H7BH*M&N% zA?6V zQ$Mmv2(=9%SV3?H?S(Y1e)BKY8SfZekWCwh_FTNegg4TQ$^(e$M{PxD4!~!XA7fuq&-C}1&)cWyA$4+D*EG{;H`e{QI|K1ypdjs-!Q;xpfm%ZEav47kB((89`GdNhd z_}&}!KHqhlB`F|%5y_%_V-d_Wg7hjihkUvPgmw097s6;oG%Pj1%h4Qz=YWM3{`$oK zwmaqPIwAu}qNRgGnwFH!`IyqgvGWAmxZ()RE*WXxaCk*)h=Jm5pp5j^jucf*GTLp2 zrI@H?)jU{T#cIGKd+nNgO`q`SB`eHNHW?fni%+@Kq(q1D+n=20C)Vn z=6ccWYY+FtIQ!n;0UVT&zsS(AxDG9oAYf9RfA(!AgqSCw=~coW9znb z_{w5rleaiL)hAaK&Hg9jx)7qu03lnuILeaH^#o#Wf^!n$>F}6qrv0wrd!?&yB*SbYoy>Q9{a=YmlQjad-cKNxHaOJyT{SD6br?{FWq4|9`F`= zA?MC`+`0Kye(v0mwplCLZTAuxUyeUefpZNJ&^b)^ws)a;BhuCHqhg{w(_g7q^qcv`s6;w+yxzox`MqP2r)Y zk9h*Be>S`BaOj$6^w7P@qG;p|zKAAHmO@-$`f-}c-;()~{(_ElN4h_LnVeS%jag1P z{Lnq>GK&$h>2O?sQA+9X)qHRP)89%DzuT39sJx3!WLlSzbbr+ln37yQH!34ZR(oZsI*Zu<%?v z|2<#4HrgRaIM*+G1~edu^RpQ$Rp#Jma#Je!?MkXcX+dm|9~65=W;@(S6VgawbT+Y3 zf8j)tAD)ckF0Zp`5Yv|?fb3cF9v>*ogz@p{Jr0o&o=!TuOn*hGpM^sN3U4~-gWnSg zwfr_4o5etl;gnW5!T+kkh=#8R6CgkdI~*lQtuSlPucdn<8XN_aG(;|!tO0sFWVMwf zJwMy|_#;!kjY!v_Cdn@r14p4}epaVxo#RR-Yuc~Kaw~{IXN~}7;*o&MG0G zE5XuL>U4;AR`rT(xKY-1FF$|!`f2#7^U3ki4$w;Qqn)7R&|g1&ZYTKhD*{GeD8r9W zT#5^2_yqxH;cH=<#u^D~fE!|X*#vRll^<*t>9{ z6xi@m*y&4^X)=$x)r%#Kq%Gpx3U{{fWU0*GlZlm$UvSP%Dy>x$16{`kw6XcNQv~L$ zy=>Uxe_8ZgsnHxw3@iC1KuJd0t2pzWP%D9YlnXuI=KHseB7@*N#|Y7sP%9<}H=GxE zY}d|y*F8*LN?V;xjHaW7ysNKMy6JIQGHt@t@I_=RnvN~IZA}(vr~5ojv0ofoFlpiW zD@#OZF{zW_OTLn(e_M8kUgjmE{?3<`UQFY;p2R?G~O5=}G^hFDI zqb31UW1f23L$(a80OPYsF}Wx-2{=!z$J5>HsfIMaEgpjf5@ zRBp}#fG^G^yb;ShA*|+%7!aEvW?0T%m_#Q-iL$X9h~A+XkldR9qHxO=FzD%pZ?3c~ z(J7Cs%%(W$+t@?WmRNcfhuIVx9>pHnv~(h=JIU0qKdM0 z&)Jr}mZqlRv#em@ z6Jn$U=L)!X6P)s=4w+40H>7wN4sObuetCb>8I8-k-e}zIC&1oU$Jcf_D!hvpKK7DS z3;<$4oxgzK%X;EJ-5P#eQAa+JD+qkj;t-MX0nrW0x&H>C8)k;Aj)QyN3k(E+1Co(X z&Uv@lShCsfu$Z4Vdke#(x}->o^7~~0Wm-)|dJkQ>t@j?ltwC!ZCqgL)^N!r&T7m|A zv#~I)p|naV!6Xi~N&vk)RkJ4_BSJ}O7PAz#WXB=i0A>BmLzTu(;SF4o!i&CevOqZV zg~kRnZ4V2z^Qeb}f))7OmST-%MF|v>)yl0Kte}ncI1sp5VM1gqG73p4rHJlT01}lb3OB)6DCcf_ zgi>&E`*2?lhPSZ9(C?byZTEZG`6A{Uy8W?1F`)e1b%%Aj?*5)cyK^gCq4_Zz; zFL#}g_dO&8x|BvVBVcvwh`{^bG_J z!@c`+jB!oK@(Vu& zG%)5Cq!B#J+@P2V^ks6`@|Pp$kJ-UZ2Yj)2FUFGhGycSzn`bhi7y{vw<){=sTL5nD zv=mxH@BUhp%Aq4zItUNgO5QE#w;NQZz5LTJiEJEUU>wvjCZS^zG77p%2>lXehK+sW zTb35#!7?pVLs~Sr$Q=ouQ|~reOlcL&%dN-TyHC zVL|HykE+Wgd8|TL+^2TXns)Ntv@V{>kgH5UIxfqn#5dD2jV#8Yd2X00%3E-r;`Q5x z)`i+HZG{RXJs{+yYm;9cq{3T1y&1Swg*{EyNqqCFp_;7eOct+%c&wU$;IKZbz_bF3 zlMc=lEYt*oLHi6mNx^`4r{GsPq)*EYicKs^g;vm7OmX|xH&dwzW@uP>Ydv8ma052^ z#go+J1w0J5qm=yay=0To8j#}4qj*0yG%ReR8K+oO>ZfY2KzQiHlV-mf?Ow|1ZnyRT zScHurL{f#`X9^1-f)i{iL?j->ts>^HeNby7hgA};*ZE}kPbq3Bx%(=O+ekeyy4%<(g z#i5R|j!}AxA<|vm`-R1YN|j{`B9|7QQX&j{g~hReL`~G@v>a68Beju2mL(Mc9P?TZ=nN18GUzRBZ-M18f+y2lf7OkQwa+sa?4^HIuX-dx( z{XtIw7{|1kx%EdGLps?BOT&jcSn8@h`vjxqSWk!-)RdHw@l2M$-M=IJ2r5{@8HTp5 zmW_g1p09!P7%E{+S5#B#>f;kX?$(OnEbGs!Z}>DqTz`rscphpBVTl-LIf&@QY`8Rq zL`<3p$dMo^=J=C#6C_sP1;eI_c%3H*&2|%vY#E6MWA=gN0f-TTo&zU2HvqI%WeI3m zm917>cZs(RhS3u63plL`*b0T|+M0lAP~oz;LOeiB<-mec*s`RkSzv)e5DSr-kW;r7 zF}rlI>=MNUD?J7EQ0#=P`4QrA2PzXcv+0MWM#&Lxf1T~4a#X40Wm~5>PmQ}q+Z~g zMOrCRZ#(*9zRN%N_H9)MB`jCO18zSPK^1P`5}4tk651nOe$dVgH`Os#z~-r>ACwWD za6G~aWs^`QSCFnYBG!ySmJMJ*O-=?EIz}8a@aWJ+kAc||J63$P3Z0T*!B}N6%wk2L zM&n2tbhdDvO}!lCO9~K9)#K%U)9f^g+Tk3U0X8jQCWbFVI6CFZ^fD*vh>Xwca-Oh9 z_^^$8QHg-edT+px8tM>bc2w+!^bz3qVLy}BWcd5zNZg+ zV};T|HJh!67)K!Mhi^ofo5D=7Ch@k2 z4Fv5MDU5cC42)UA96~kv>LwPKn9b7g6i?wag*`0r?j~6}=gTcRqxg?X<=Y`cVs}K1+6@=1CTuQLcPtpKl>mkitM@GqR1>iD8&S#<7>_f2OUW%H za&PKQWl7T1`6-MG5Jh8B$$K*e5{Rgl>_uMA8dUVgmDd9zw%}Dn`B(0_=(fOWKTWCMYS6!%(!D5MvBcV?ws@w%DQ(4Wj8AJrwR&zwrHDQhb znu0c^$$YY>jr(_qTZ!89)6--QCnflOlCqvG^M#0Ib#2AGfWFYRmhZ_&y@1q?Cq6C= zhvo<=`Dj5LN-L5EJKjg&83AkQn6OWsqz#U~nz=67x|!XGlSWks+tNNwgde^E6}NZ; zo{8a)2F*y})DU2%!(w1GA_I!O)V6@l{F`MPCFF!xB-N+~w$EPD%?8I#oEDKF5*k=HL)g6Bu4+eMTU9bNq zJLkK4M-K?b<+sUtS$^(~FOYn3oMtP@?HJngzfP%hI_|cMRSS0f&=&2n*Mhn4 zwPC*WJ`cMsxX=BY3$^%lH6G|jysfPD+vXy{^&gzWk4rgxcEgZgQ(SKCKQE@@YxC!i z55Gq@{4Fv^)op9RYbCnByS=`Y+I7hEBHf2Tcd-(l?&de?M!!jScbV>wkH1$wPxp)R zdAeVe&(r;)d^Fx9-`^s;JO(`3=pxx4p))Ra?jOH72r%@1rdn`>me4diPshauuran`HODMc4i1c=_des$=RR5iL2Ss(%4J99=+u z?u=Yfe>n_)vv+@U@c$N>>kwFH`z_+zU-#bs+l2a!k@{Ox+0K(|S0P9IyAf_L6JG!B zmt<$(>|Ymk8t$6gm;dxOT@n$;r4e4Z!Qzk zl)bxaozZrn|L!>d-O>B&*=Q%l?+)?b9pS$@6@D>o?Fj#^*=R@jZxa4uL9oN}*PPaG zvt<7-)7B2l-z5CKY5V2JZyc(={9*wdd(2mWT7 z-!BttZ+&SSnMTHsgj+7r9J zkkR9)wb5OYe`e$S_1M~k+8BRkD}3MiL1H+gD|F;X(B#T;;h&PqQ**kWV*i^=auKaa zE0_yWR)@*{=^~CFwJf&t{f-_DML3wW5RBZnx8tX8^t!%*CxPzqQU*c*gFly$`pT_A za}i1UQ;p0?Er5`6eM`do`T5FT?i6ALqRqVdE%X4))ha!$^ZYK^OVL5XWe zx(NN#x7&GQT3Y&0CA<+F{w_hBNZ!*{fTjB+7O2RU4(GX0L zEUNz{P7Fe1DNY|hTtvUWzKFj1coF^S5|-vKqk~3trqU_WR{8?2CF!Knd9<%|9_=fg zN4Hg)JYbtgLJc^-BM-}N9fR1YEX=W)JFEbl!JHsz{=RGzu+d9l%e0&Tt9}A7XD6GY z^JlKQ*f;oox2|ULk_uP(@NXG`*^4H!!);Ouga;A8yt2*91Zp&7mv}d;T#{$fyNa)m zU<%aDy<>$Of!v-pQ(P96FqbCRN>7+ZZyY0J0;f5u*nNaKP}JC8B$HV$8g2}R%AQnl zVPUM@$pCi5BTX4sQB)`dhkH>nnNZ*nlq+$RfQ$2rzi-CDk7in{W6~Uo9fzpKmGA9h zR%HOv!)FS>ggFA_Lmo;<7;j`Y7Yh(CxMajQCct2cK^TBBh@UNKE97uG{6$4mo@bU3 zY4Siii^H?Q2q7~k8%bvsXBy+;QrbscNec;BHha>&X^UF6(qt)K;tbLl^5iUnVrNl% z2QezkV&zCuKBkQ(<)+%`Vz#HYToH=PJ1enVNeazvuu0J1G%_TfVaOo!bxgMLJhssx z=_ZrGhs`ZUHdg%veaaNE@R7*ITBQnC4Jc{9MZh<)!Umn+7?Bh*jfU5f@qpt^h?L|n z%pO8BA+28#;pFsMtt&FkqCDxm0kZ&B$PNInXYWAt_Ae!k^|Bk-pj+ZG_N@dZ>K4T) zV$h^+mR$;B%H~z@W3ViRF;Jead6=li27uV%io?`mWN(RgZ%O!&0$lj#u8v?Osmjvc zc-*ZQ2jZS%Dq2f_L85OjU=pbjIRlmm@`zqiZ^lgUFO%nm+cKjHMKEX``YOkUay*!y zA0rkvPrUrz)XH@LL0&j=@Z;|2*p3{AbU4q82()@xoW^UjV3}~P;m2X zcl>^W^kFVxz$r1J(S0QiNgFj!VUmcuq7grX)`#@+eyoJgJ~SI5=27-FK55aNQW(cr z@Uy@eC(RcSd(u31onOIP-+t{lJPY$LQyQQW{9F#P-9e*2LeOKm1|*vV!5b;?yO%iJ zj16cbZg@!3grPICh(iM+SUB{2 zx0#SO8p|jw0M)HgFcy_XR%w>u6*3+;(W_FiOhEgqfQe_wfN26fRrB0R zY$(VAb^Qw(ae@r5gck{6hWeLOk{mDKX<-{sDPW#j^I2DF_$*(o1|HhYD$+TS=ZreS z%T^MZ@H0_!aKHO-Vq&5#i)%JUHdca5%8-p>5eAH-{lSf>W2AteL+e4bnC$m-`t+!{ zu8x(1r;W6p(bj4(+*$DKKxUrQLyS4qI^kjszq(XvTsMgy` z?|gGd)qwGVq?xC@9&O5`9k#n>3sb|n#g}Bc_F;;l5L?r>SJ)tRTLd%$@4g(j(L`b2 zmL!_l@k4znZ`Ay14%>jH?qpK&8_Qn+kvlkvbdXd_vdd1L(?oD>3V6h-p|;I$`(i?} zFj>i4KF4b7%!x)=vpU-U5wL=*4BAg<0wj6Xu5IS0bu^cBz)|c2SvE3>!F%!{*eX95 zGv)N{GxH{^%Q6azaoAAOgWuG$6N?`cDH2J?(-5hP?I|udhH-PCY!(}R4phMeW&*Jj z!Av{w+LLr-#oS^PH}HyN0i2yHNIlu7hP1>BaVfghyK#8fl*E*m2AqTOnD*enf6|cg z1KOk;Q^S`Fnazxmw^kgFC z^J6mLBt^e!c~L9dt_x{|=829wHoAb4LBB~rK+T?5C+JH!anvbO*hV_GAf&{}*m;?(pRp_&LQR8CvD1susN#qny8M+!vGeQD>b2@_SXWSBY%DRIPvK%XP9&8O z=djIEw!xz-ykdV4vx0_Q^^!iwUxmd{SVQ!hk-1t)pTe5bR?gS}n(|dJE6-j?AdYfK zGl}jv_cPCVJ=}E5(YP~y9I*of6Ykvn_1GJBZ!PR$*d^};5v<$qe7;LS!{K1ah1hu~ zIdXz3U!KT5HZvde=<|6y)$&Gy4S_XfWfp1<4!*)~o+yf9_^wSUFzrkZ>7(RulrzvG z8%59AoSi&SevTo$a+&aMS(*yF-?|AZT7w}un7gTcN&TVQ-E zj*fzOO&de$c&`TP*1HMq0zPbRe0^4&18k)o*Tt{!%NMd0Q+)Zm96XH6$L@D>kRhS| z;O|b)haN}W;kWMHLw6YP<=>rQKLl?&H{ZG;_@#4q_qlWPXF2+3^kt-Q4}G}njLAu+ zBHVBu_d0h}B$*NpA;Va`bOp%WpmW>ne>IR>nl&NV`8*ho-DHsDV7wY${gy8?26{b< zIXm-mT>c))0OZt+zW8#Ikq{`!Jy~c=Qf;8bV8pxtgNb49K&lMdii+Mm6|2p!%+10C|lJ2PBoB zc+A!ieJ)5TmDD?44BA1wi5w4!20hR^Pq+iw{7)GskC?XhgA#`Dr5j!Nw5LT%h#Siv zQ^PDad{N9!j%nYpUkYJyDJxI!S`4P8Ljr6S6Ut(`3Z{4-a0aVRLbtBy(1Y|nNNz8o zVwS*Qb|7@@i~VNK#{+at=9|7III-fyt2<#yij{?O*N1M_BxUvSHbs%44^cj_)s6PY z1#mGvRqJEL1I$kVvY-!ebL1+0c7ABA%?^UX*tW6&jd|s#H+PghSG8E+rn*YUkWIv4 z_bYY_=5>5%_<20+n(!C5M}*LQ=i#nP3F#0ZW26YzR7Sp9qI=#GjE2(WpfNSsQW7q* zV~}opoql=S{nB~78z<1uy{`%6t~VavbrWE}GwyxwYWfG_EHyBhv9mfH7v6}gCoI_q zw1Hg!hi^#%>$iN%K|w;oI8bG$)v@MUv-{7z>uctDxCL@F*$J2FmLFCCl!6kwFJsVoHu!E1(^n9{!QQp zxTtolq6Mr!;~b<>4|DaatJUD3uLuWU4pLwrD+-1I#J*A^fDKUj8WaHHyhhS^@&WfO zYN{dpzr|r^f^@r6yT)3xc9sou?N4lsYVzt9;?2f214(AdCu3z=k{xI3kfzR#At)#h zCra<>1>*-vyJoKU6%Qze)BUo1L6_f-XLzlw-SRWz8&MNLb$qCPs+R7kS8W|zqDNj1 z&;t)i^64eiLBgxa@yV@vDVTYQ2+D@F1BnhWA6(@?I$9fuG{-=k!`PvlmXa;H1t_*o z^&c%@a_I)RJMDq7i|U=!HZ6y(M3i`ve>@2M%Gekl9)ma)xrEr%Q*x@w% zrX35;+Y$Es=JJJg249kcOkobtc#%)?oWY8q;j7v@j%ub&&4%ftnqiPi<2a_`r-I27 ziO6J0{ZOU0vysluX1T^){Zw227c zEvwdEoI0-DNW~O}zaBqP!A{ezE{lRL26FFi*9QgZc1?wUdhx4Av`%cz%E1**-F7Rv z8xt+4>1hogcEolO!wHY((m8EWP?8K%Ul*_~eoawMlLi77q%CpsGu49Q)u=UNT&&Wj zwcECPS8r*N91WW0mqd-mNU2P#{4%k$@;RbrE97&u%@MrBhx*I1kwszIYsJXSY~ZQE z+EN8BpRDXFvV*mvVbeZ`%!1H@lNF+YHTz0inV6*7g$ueC62)Im z$Wygd(T)U(>0L5NIBXLF*i@^hBi}D6h!yoc-)o=|w`kyDrwSv8Ph40qi)=OW&~i3a z#1Y3K!xb1tK|IBWouDY2L|EYXCaEzx?Q&W-K@p_M=Xmbg*B84sjg&E0+zg7?X{!6};**PQ-wD>nKkYSBh_GPo^LhF=W*5P`$# zrffh2kZG_uMjS$SG*Z=0YC@S0gMx+46%)yK7g?uH5EwQFPREf8wJ9q%M=+?}8N{QR z`+#`KrY|oZ=ImQRh?Ag*y(9qM*$-DdW#bJX>Mt-!5yV(sZc;YE7(UHZ40t144xO}k zXtgC19S<7tW+aA#{}Q9~mPQ@fc|dRkZYh$5PmYDUnu(hsR$8%b9TKCC(AA2W!RX|8 z2ttZ1LgHlUTWB{Y$N5KuO^A?gX>*BV>rwXbQ#I||@L5EZOQ0ncfEH8+9B*LnuU-E^ zu`dO$)1yy7P1{lH9CZx3{?Gtjeax1^f!j*qP;I3^tPFJw`V?=1X7d3BvdT$dlSa7TXq zF2=-SxM-tjf>jo#VHK67iG{VDbUz!3dNeD|@}bfqXve9xDsd{y>HZ?$mk@XcD~G@_ zB%5Mu3{1rwf{&LC_<_Wqi^Iht$M{gba5=7Nh72~e zKod!oFZr=%eLPLu<`tsDNmdI%ltSiYgJWBgPCMDJQsblIuai@{mh|lDv^BAqs3j$P z6mCr^CTgS<9l0}!B>0y2IL^1m7Hp=!W!1}cv|t+f#Zre%mMKAd3at&-pva{WBq#Y4 zEWS1Vr6NQGjTFMUIuqL>^D*VT(-Kv&jkt$cPL+w@plD6wQtY;Pt;G&V9zJRXfSpF_ zDK`u)S-mnaELU(8o?u0Uqf&Ed4;*lnsB4p4-_JJt0F*O}Nh<|V(F3c(uxQqK=w@BfQ z7#5cdptxKB#f|DF!8&bdh1CmkiyaSm#>L4pEN;R8%cl_c0>hFzG0;lXns-qm=S&Ig zJ&bL6D_~W)6{f_!)ZEGZT~=~hV8`}Nq$ogeM@Jy-Z@+rs)WA!iO@YrD4X~bDVp?n+ zTm>(Qn{0B?H`UJHGES?Nibhx_vS7VVODjs^DOhAE1cu7#JR_%(%y8<+f^CAiTVo)a zl3jos0CK`NnZLiDE*f+Vpwg~$v}><`kVR$^y84*Ov;kDwOr`{E&9o7N6Z+I3{M4Gn zr%a1R$7;ZvkZK25qy6$wPrc4kw^T77N78CEVjk+Lb2+y*Za$8r^{GjkZ(pI_yEZ)@ z*6iuq1t1Td%|+Xjze(cAGF#!)N%4DKzC0K7P>6KoL?-Dyf{P3908sg7sgQaV1viov zPyEAfQ`W1aJ{y^_z}JH$S3!wWp8)fTo=xPl$>6LiP~O|Q4~qNlSr9SL=2pqj05FqZ zo_!mwLu-{Pki`=s7SY$0`?o5Og@#wgcdkQO2~fPMW-S5h0@zWCwqz6` zPK%her(JzaytyKqkUl@Y$zfTuw22mHkcaA=Nm-RRU7O^}6xwC&{Xs$QOkYpCL-jxM z^0Y4ZyV{uYJG(8P-9$y;{bU=A_MM^C7%T#c^}&YRV$Pl}jhcajK$zcpRW4D&jVS|M z?C`cfvO34bL4_;(-pkwcCg2RSH0C zqzs?*yapep(#vhgUB6uvaGPipKv1dj@UzfDkjQ|6^Tq!76biVX947pPoa~#dg*Vf- z&?TA1ODG~y^J!QH+m3JF#IBU<%|MsJ0$oburX07)`cN+Cc9@a(#56%{cQS(n*b7pce9n7M5p!SK<>g# zma^p3ixsZu{m#TAaq+q@Hg1!xcoi#l`=kGUneh?Qjq2HiR1aC7TfU(w=$d!6-H=R( z2)P`j%}lR5RY_a{8&b80OK75X36SH@#Q}yopfnr-lH^T=-1hV|KUjzs%4UaKcWod; zd;V!c#Tf=YuyPUo+3^^atZmXQ+|-COh5YYlK@TXX1g_cK4^$6L2IP?4hOuge=*$Fa zSPY#7G~O9%kk>RH+PT@N0Y3_-P<>D^aokdR1+kH2dYYl@a(GxF)`(3wD&5LIkAc$n znOY3Ixin%JUh-&m-U8+&R&g?2=mqzT25apm!bBJ-+c3PGx@lw!M8U&P>>Sd_x@em! zvneanHik^Yt_9ul62*gH+4M9XvM_LZNK-F{z5ds-cl)Doz-n2ZncLxjj9(3ET5g+Q3#}t;%JSLGK#D`Xm*@Npbz2Vco2&!jmd|&8_P*dnX4f%& zqnkm$?-;-CZG^}}M~|b2ZvQrc@_S}l7*QAu3fVP>-M`9*;ozn_8qvd03ex*k{l4Xg zMt?~X_!>O)2jkJ>!voT)pC*o3<*J|U#Bnupb0#tzo;GtDC=ISVJbJ#gNf$%Om_%!Qh&?n)*lk{}nHEs`Hz&}e8=*N(5+Rs>os%O~g> z(tF$4Ztq6oc`+jnfj@9Cr14Bo@fWY|$byLSrRh*a=8R;hNE*atysoLU!G!WB)^p$R z{DKV2Tj&gyRKA&h=5^hL`B}FtmL4xJJqStrx-?xK2)HHuR5l6YrMwUGj&UTL5=U%5 zcohCRRY|~pAstWWq*{g~T&^5Wd!4Y2=8$Pj;{7mXX)AL)lpF-yDG3fdXr$q|^SVAy z=Q5&nO%!6bsaX5m0zdUrXNg~|eN;aXqCzou{iJ1*{UKApU}eYk;#?W@(y>0oAHc|( z$bzVzyuEB@l{gtGzTe;U+!}L3%SHLuWB0N9(CH1!&UoCp`PPQLaR=UUH^$y|M&t6f z+lr*Qb!Y6+;Bk1<&EY!3uTh--puF$i zTgYu^+;JtiFTZqpcUlTY-4BLc;L{WoPVv&@JB@NW;I~fy_AV;m?c>8;?*o3QHfos;`*KD01hQ03={Tk|CFO| zFq2`>H=Vv)_89@%4Dzv`N4wg}9+N<|!4k0cUPS)b?|gUNkyfAb{W5s$M}^gDbbs_l z<55a3HSK-v$5qtE8uk7!%3|34+8gvQw9UA8-yJ-TvqPxYzZu*=+;zuEzuXLlEY2DJ zb!Ra!CgDvt7{uW7XpkloCfR*&bl(~4Y)Y}TVRy%^IG0m**ox)Z9oN_rj2=2SEv4!Y z(y8+KapWeOHg#w08aAF@w~u#S^b!r~IMdti_ufr6-{Vn&)dj<<0%=C;^XYn6x9V@0+-hn}zPvVgK&@*?oKcxNd^z# zz*87)D~t$fkRY%T-!%r&4aW_rYYc6Z6eWW^20r$);IEHvOp;r}6rp{VjitzzL`{GH z3g40fkMzM{__^yw|0q{U*LSA%9OLHL{292pXn1)RA;4skyF_Fa%3vQJ`oF+Zxw~yh zu2w7hq1W%XBHjAc?{;sqc(;NiZQ)nde@ts&FyaM?CB?Q!qmGu8!ObNcMraGcu>0k4 z{8@OE})XWMQvbUezJ}`mxyWa9X7!_c$%1I8v;D~HthBPY=bw8n=2{X zj#|y(WulbgI}CBn9Fd5{_zouaGn=>I*t2pfeC+n@{*M(~-`J zA;_{nAKX;#>~dV7u;npW8InF}o>XDL5aaP~C-J&NUs(J>*2o7K4SAjID7lb$-& z`i|@;?dEp8)xnr9b3R}@Z^l2|W>7vp-1-w+Kn%P0gYTXr1Ng58nof`R4d_F+8y^c} zj6L}=hPW#^`+1JAf%x(z!Z`knhx6n(aU*KOp>Sht!~4nGdd`Y}tT;rXD1)ava1$g# zbMPgbW^rC}oaPA&-+9&1&7=8>r|NvAoZ-0lh0b(zfVg=Wvp|kNui54d26FrDbsqYTQnpHb~?u+^`D`#$O(Qhs*sSN57pj<6) zz_AsTf~7d~sTruQVO>F^u#a_^ou!poAEWknv=>Ooo7qhD1?U6TCVUIPk?phZk$r?+ zC0KDwH`CdN9IdMm(G&5=U{f>2oVGPwDZpZ1XqSatR7Z;fVaQDz{Vr7n*cLJb(t)6> zcqYNdL@}k{?&8(tX=`emjvz6=U#+(E64=zn&$`3Hb;)eXP{#zYJy$s_xM{EAl5+gd zgF7$w|H*rxs9{UN{$ff0o5&D;eE2+kxPjzvG*;Od zLA>lSZ~zNs}_Xhay-GgCVpC%-1*_GrxFR_KvUI*u_6JQMhmhuEO1h*98#RsWcX3d zo7|Gk4%Hr8pLg>F?$)7_NNz`D@+q0#eTgC`q=C>f&Dw4T7AnqRIm^j%LvNX};w@l= zlZ(769Z#`Iwkx-?9(X9arF9Oo{M-b5kI(n9i`UuuRFjg=SyWc4EhYc*6RSHh9!pZo z3g7(v%59^9@?VU|4W$_7c^@uFsP0PC2I8<9@Z|Cu1g;z-I4Nl3gOxZ|QZN}}{HmOO=A#Ba&(s|E|&l%4Mwwc z1s;>Nn-Q!Fc1LSBIz#w0slAw^nM58VjeeX|>oy!mWYg2+03;<7Rk3{f(TZl^(VFI2 z0P;^WJBuQLa&d8pIbPS_3EX?y*7$*OC*l)1C5a$7Y6WgyiDC$AH&7l9E^6YGIH{PN zW^!I5H+1k2Ljl)^rAvl%z1(N*BlG(~Q|O;;DVeo-qeMN}ryL*+nz#rFSgBosl;S+` z+0Wraw^1O`&?3-o`rp6|4?h2={C@w#{qsS4RYTzsiDp9(x0>Ct-4c8^$=ZeN!+HLn zu)l+?D2cDgImFsdV~_BFg zjdRTD;|_i?O|q;9=!3KMuD0b9iJ>nbhB7p{o$zW#Hc^tk5=e|j%2 ziL6T{kB;S_b%C^furQcO%xa`|{?=iV(*ojAVKu=?>Zi6SnFpF{K;A}FOWX7WBv2`e zsQU?7e5(tNqXJJ<#OM9fXZ$n3;>AXSvb(FFd)FA#!wxcGh$X1O|9bdb_Pc-kZ=Q0u zRzJjoEljV-Q(6zVz|ptI@hyq{5@HXxz^`-wCh-(Du25_Z7y80yUZ^Xcx!3eM9!@oB z-H8)iCMC;uis1(J>v1jJ6q=XAp^??=(3GrhP1fWDkP6joT}bqPl0?w02WRdBn&)8^ z0kU*M`1x!Bkl#cQ2w=`>q(+?6q7f+uX)UN2te9q#lqzSD8k1kd?I*KEE~>%$^#fXY zhE^DUq=sY3qE6A8Tm~(kk$v~X1KqL#ki_CWn`#*|)uF&LAo^!mmU(og5bs z!&KK$4-xkQIzyUy3t*%fsza+ym*+QVd~h z7{wlkK8*3nY+s43!`%`u`{`UFpW+Y5N2e>!bu|;C_2jf^>m8ty1?V`uS-RB@7Zf26 zg6)=26_sU|pTAafaa)Gd6vd(oUdJuDWELAfS+X}0mw@;wf$KyMw9i&4933v}42WG( zX5h)}LN`O*ud8A6Nv}$^o|5WYiVP$dma8r(MzTvkwzQONJ*D=q-@t}{;Uyq&P zpXHCMckkX6>-~%z;ED*9Rh7$nL+0BxwAxnz^)f&DIPC30-n7Lqe%&T886p~#$88$g z?N4j0ZB$b_A+O0`VmWpE=NzSipFD4xtvb$jREqF$7ad3LBo@=%?#QRx%?ue-$c`Mk zpdTlAu)W9kivJRXv2cHANf-bM{-hM6X6|V--+X(gAJ_ilUccV^4-fj_KNxgllKKN5 zAK$-w*ByOU;79-A)A;ze5MKQ-g#Yp%w?4&x-G?uM_V2HJkw5v55arYDz<=I{udaUn z+kXuGSBU-Z5c}Wv;mgMkd0)L7hR<8`$q772v$$VQ=iv`-o`-w+_$I%9-T(0~0m!dX z{1pKI@`;VUd|~8BfbT!NdnX^)`tb*UbRRyw`{Q3+D(3b^q}Bx6pUK^Q`>b`DZ*Ng&m|yN}}8Ze}^cahn*4KH*-?mzk8$4k3&x7 z-y=@!fstSD{*-hczjlWAgU9~3)9d>=kCSjKZxG3$LBX8P8K z5x2`&v6=k}g}`p^y|)2LKHNxuFj@o{s5sO_=}>YBh%pB-(Bw9@y&PG0dvP~T(n@#y zt$!KgcZgc?^jKhW#49!-!R~b238^|TOQ3ES3n?-)A(-i8&Q5u@b9Y9k?PPnNSDOv& zAv^X2Qsf;!SH?4IAeWO(wSHp&3@4kgYqxVn2RA%}K(Ym%K}d_TGiq{XPFHI1s8>s- zAucb_WH*?fJOZ|P0KmoM~G;cgJ8)xgFG zU!{)Qclx7V|F-*s^u68w)AwOK!wA^!Uo`Ljbb!0g=k8tk_}IG@dIt16_uUAsi4UOCqX-2vq}a;og(}31ltgh8VjXOV8*shnFb7 zB9+I@&V-`%k@kRfHI)$W?mmd^&=rSR>=hP4hJ>}3ju>GJF>A8A!_zm{W_6}xb_ntV zY+ZKLXL+UfY6$c4&t?Y6anWW|3k;q_X?L%~-oZ)kHXFB-SUd#j4+^f~I@JPt{lfi{M}-B%ajzX$FRN6&<5;3Eo+Ne$4` zq;K6JxwNIAsz8*ZfBH8xUVDR^@f}{0e180bnaI(H*(7}Pgtod>Hgbv`jY;Jd8B@Y(1$q>{VE4Z*J~7qfx|&2nah& z3b{@|4`2ETozu27X_D+yr<$WlyLl|>8Xg0jzQF6@J54cfn8PO-N1sj1Xpd6G3IdCHBH{U zfs)Z8n!oIdg_byR%EFUR*E|i&VyHnq1^V?90|$WUmj zU8AcXO#mKYF)U09-R>C6A=S(aO{;*AmHK9nvqyWR12}3Aap^3)7ZS%Q-q2KLvoU)g zE)lR}CC7SrvXT|pvrTj|{(KjXjUM6O_oavy@R#A>|GNDKIIv}|q`dkDnFd`Xh*3|p zIUY6HS%ukPaQG{1ahe#eeQ^1UwL1n{80)IZ`c6yC=?eMe|R;v>^5GIuS z$A+pJZ7bHD{At1nNm5d_aDo1%S8O~y0y-W-Y@Lnl1L0_1>VOutEkDA2-O|$tpW&l5 zMp2f>(Jk6pn;#h}P>2Z4jpU(;s#~%#-?hffKX7^@P&_l7i-j{B1GlT+m`8e*~74%x5 zyhB8Mj_l{{<4_6c)19EoA@KC|xBnV??BDnjuj}8qI0*dBfiLu;oFihUoU9XjQ@I>0 zeDWlG+8y`n(@Jl24Vsv)9qD{88qno31Ewa7#wE|Ml5JV)$yhc}78*GI=XTipPEYmR zie-X&7Q63epr7ylG(Zy7z%~S#EX{$FL~hAA0T?|ah46#g?h4V4pewyfLzGXEZHR-X zO*ls3IL;eZ#1WIeg)px;6}^%9q|F=K10=&l6b7C?wlv*+QI{1@pJK~Dm76?rFmzlw z-&#*=G8GH0V?HO!EO}jPT$Z0m!NJMeNGCa5h9Yw`Ia}X#`rT2{>$}lR1{(fPOq|@~ zApc$X(y}ui-1ly5`!MgX`%A6Dr6*`*u&;8zJ1wxy@P)c%g(WRT6=^sy8_aI;H>m=% zg?Ph;^6x@cpV4hQeDTTx{6D66_@HNF4a|Bs;jtES8=JX;!<73 zrMiksbrqK?E>v8mxJYq{;sV9xNg656J_^0_P9bP;XeWE)a=}=+B@3K7vn<4=mFoI& zGH1sW8uqqgJ<1Zny0=KD#O${StvIBzEZJ84QWap#D0qRb*6!7Cnr>BrR!+iSK}svT zmCie6VJ&~En22u;Q%6#$gWXTv7}Rw6V$VyA8mc#dICEmXYCd>)Si07O8$zp=PTx9P=KK&mVuK4$UxF`T)4+PrVt@=X`f^5RmX9i-PcJ2UPkqOAsN zi(8#`B=XcdUD*{p%fNRV!*1uHU_CR^fn$Rr-QiHaK6k$ihFuBV_ip8@^98r9rsT>Z z1=;?5;V%qiNu6!>NxzG*!OK(|7%yaPV2so?!KkE`HYnT&kbRY%XmW){k}Ka7%nAyY z$G5^e?Gg{xN$rJta{Cd27?)4GHH|X}`P5*)g;*jU+3tYGGpqIo88wb675h0^FF=c* zwv{^&VOtMvObB=Ie=C#+i*Z3@Yf2g9k_>Bxnx+ znujQ`j*XdO$9#+wTO9P8nGFHMK*YHwL5!I#zfq|oe`GS24X(Ssk zcA8=k?>z!KL#5w82}|H1m?yF%8ylc&9+H2s-!u=Nx=nnWLj-#xZyv@acowkne^db8#&lof)?{_@*%?$!~I2JHG(3gS?$(=$*v{vZ%a-NKaFjB~O z#F90qeHY_S%BM+B?&f4SzyPpNr7#m-uWNd)WBaYt=@v@G5_>OG@Nho7$3xnL=}C26 z&KnMc;9AI$FX>2Ry$g{^G>FLB-3$3>p4PY;Qe?TF>GXd-dv#~J~xXi~FOC!7FCADL1|Wo7FCrT`0is4|(OMUu29+c$4)&L$FaYXQfF zkVg&PMnb?Czb^rZf!CzfwtSH`BawF5*4FS}=27f`%#-u z>TLEGP|e8tNT1&pnRd{79D1<8%2lUnqwyjT+*sj)fo4wRHOmiw>o_aSiM;QuEZ({u zPbsW}Ei+GzkFDnDjeKq8(5;@aw+(kmyd7Ix!Cc{&L@%5eFf3by@ zfLqorMmA@-MAA-85f>H@ZH014`X+F>m*8M@XA=DEi9~(L+Reb0 zYBRD~ZHd&ZHX|-nn+c-Mmtv74#<<3exK!gnVQakS^&ur&R?r3cx!pBTr121~`ls#7 zf&6eT+{vjB%4q!+f@D|=u@lFZI5iV|QO9I^J5I`Fn3ZPiAT{Ev2 z$K5str}?v&iUf%1>T41}VS2@6G0U3J2jpR~U%SP?GqE5PV51DQJBMx)Qjx?Yr0^9L za@OID5NvDmj>l?R)PXErUCyr=rc0S)T*(*+hKxVTFx&*e(uOdY+7Q&K5g>k>j6qzt z0F&iM2O+M$Wi1FqQV}vE!`#fMbI+!PzYYesA$0Std-Er0qh5lG5q*$qGWijXR@1@r>Zh zf?KbCv*wM_A-(ZADHP z7xT*Pueg8^EvS0Gn2~L(V!d;V$8^F;DH00*qucIxwPC@5;bXr~%HNFX^l!R%{C%q* z`jiKO!523w`Vt6riNI|5#AYQRl;^yk+k(+_AmdI4UiGGH+|o}^a|)ZsY*W7qfm^Gg z=1Jx$^ilR}B+y@N`KT;|Dl;TomfuinY;r}z5dA^(<-sY0e#`r(#Ah@#Pi z{5|DMnZ=XeTsD&}RAArg<6^@MFNu`)ia5B2s37-FFIf<1T6RaatdvlsN?PS^Zo& z&Vh|-m!IO``z43b6_DeT@v{&@TK~RgDJhb4F}AzVdL+B0ZQ-Sqfn9_iDEBY0J~F2m zbXy=IA9<_dfRm%^mg+TJn2>3SIs^|3*kXHOReSGcZ%0;_R@^KT7)+e01t^AS0k)&@ocSA$ z-5vWgKM*6k7J({g-H4Fr~42KwuFar z6Gw-jh`x>_CD_)~1xH#e_>ON$%_Sj{)XX`SwmJgjlU~1F>a}CU<|hwv2ZhB`;KJGG zGL{-Bw7Oz#7i;#U|aBOY(6&AxnjPe}&fr%>69ZOS8q%1;V1-9p(%8nmcYt+)k;l4kXBC{d4#;a22A- z0ta|ViCc(=zPzD<)7h!`ccA{zU56GT*WuTtnV;~M{gYW<{zmrlNv#nzJ8B&H3Ib$x zB3HDm9YJ@HUev6uTzjT(A>TR)ywy4R@_VapaLOytpoLX9H=W7gjhh=dG@�^J96n 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

ptSG#j!e1?pnQ+fc*}N}PP))v9^$)8 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 Gz!w0_wCtq- literal 0 HcmV?d00001 diff --git a/clashoo/Makefile b/clashoo/Makefile index 02c797291..fa45e2c98 100644 --- a/clashoo/Makefile +++ b/clashoo/Makefile @@ -6,13 +6,13 @@ PKG_UPSTREAM_TAG:=v$(PKG_UPSTREAM_VERSION) PKG_SHORT_SHA:=3f27ef3 PKG_VERSION:=2026.11.04.$(PKG_UPSTREAM_VERSION) -PKG_RELEASE:=26 +PKG_RELEASE:=27 PKG_SOURCE:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-clashoo/releases/download/mihomo-src -PKG_SOURCE_VERSION:=7cfb805e17bdb39e47de36296a41660d2027e954 +PKG_SOURCE_VERSION:=205f65fc18f4dd0579b421a2271e9d46ba8cb6f3 PKG_HASH:=skip PKG_BUILD_VERSION:=$(PKG_UPSTREAM_TAG) diff --git a/gately/Makefile b/gately/Makefile index 46e3872cb..dd2322fb1 100644 --- a/gately/Makefile +++ b/gately/Makefile @@ -5,8 +5,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=gately -PKG_VERSION:=0.6.5.1 -PKG_RELEASE:=28 +PKG_VERSION:=0.6.5.2 +PKG_RELEASE:=29 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/wangwanjie/gately/tar.gz/v$(PKG_VERSION)? diff --git a/honk/Makefile b/honk/Makefile index b033c0a11..475bb7a64 100644 --- a/honk/Makefile +++ b/honk/Makefile @@ -5,11 +5,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=honk -PKG_VERSION:=2026.11.07~73b1077 -PKG_RELEASE:=32 +PKG_VERSION:=2026.11.08~62b1390 +PKG_RELEASE:=33 HONK_SRC_URL:=https://github.com/daeuniverse/honk.git -HONK_SRC_VERSION:=73b1077bf9cdb639899f0447994cf8980abc0752 +HONK_SRC_VERSION:=62b1390401d9b5eb00dfaddad3e11db4a2539fdf PKG_LICENSE:=AGPL-3.0-only PKG_LICENSE_FILES:=LICENSE diff --git a/istoreenhance/Makefile b/istoreenhance/Makefile index 1d9af408b..20504bc0d 100644 --- a/istoreenhance/Makefile +++ b/istoreenhance/Makefile @@ -11,8 +11,8 @@ PKG_ARCH_ISTOREENHANCE:=$(ARCH) PKG_NAME:=istoreenhance # use PKG_SOURCE_DATE instead of PKG_VERSION for compitable -PKG_SOURCE_DATE:=0.8.8 -PKG_RELEASE:=15 +PKG_SOURCE_DATE:=0.9.0 +PKG_RELEASE:=16 ARCH_HEXCODE:= ifeq ($(ARCH),x86_64) ARCH_HEXCODE=8664 diff --git a/ks-cli/Makefile b/ks-cli/Makefile index ac53eca16..813edbd9c 100644 --- a/ks-cli/Makefile +++ b/ks-cli/Makefile @@ -5,8 +5,8 @@ include $(TOPDIR)/rules.mk PKG_ARCH_KS_CLI:=$(ARCH) PKG_NAME:=ks-cli -PKG_VERSION:=0.8.9 -PKG_RELEASE:=6 +PKG_VERSION:=0.9.0 +PKG_RELEASE:=7 PKG_SOURCE:=ks-cli-binary-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/kspeeder/docker_kspeeder/releases/download/v$(PKG_VERSION)/ diff --git a/luci-app-istoreenhance/Makefile b/luci-app-istoreenhance/Makefile index f50d0755a..183011f98 100644 --- a/luci-app-istoreenhance/Makefile +++ b/luci-app-istoreenhance/Makefile @@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for KSpeeder LUCI_DEPENDS:=+istoreenhance +luci-lib-linkeaseauth +linkease-app-entry LUCI_PKGARCH:=all -PKG_VERSION:=0.8.8-r1 -PKG_RELEASE:=9 +PKG_VERSION:=0.9.0-r1 +PKG_RELEASE:=10 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-app-kaiplus/Makefile b/luci-app-kaiplus/Makefile index 03cb26d27..da53c1f5d 100644 --- a/luci-app-kaiplus/Makefile +++ b/luci-app-kaiplus/Makefile @@ -7,8 +7,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=KaiPlus -PKG_VERSION:=1.0.9-r9 -PKG_RELEASE:=15 +PKG_VERSION:=1.0.11-r1 +PKG_RELEASE:=16 LUCI_DEPENDS:=+kaiplus +luci-compat +luci-lib-taskd +luci-lib-linkeaseauth +linkease-app-entry LUCI_MINIFY_CSS:=0 LUCI_MINIFY_JS:=0 diff --git a/luci-app-open-box/Makefile b/luci-app-open-box/Makefile index ce49bd8e2..8e74e61db 100644 --- a/luci-app-open-box/Makefile +++ b/luci-app-open-box/Makefile @@ -1,8 +1,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-open-box -PKG_VERSION:=0.1.414 -PKG_RELEASE:=69 +PKG_VERSION:=0.1.420 +PKG_RELEASE:=70 PKG_MAINTAINER:=liandu2024 PKG_LICENSE:=GPL-3.0-or-later diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index 89e466c6d..d56e71223 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=26.11.3 -PKG_RELEASE:=370 +PKG_RELEASE:=371 PKG_PO_VERSION:=$(PKG_VERSION) PKG_CONFIG_DEPENDS:= \ diff --git a/luci-app-passwall/luasrc/view/passwall/app_update/app_version.htm b/luci-app-passwall/luasrc/view/passwall/app_update/app_version.htm index 1ff279a4b..eea98008d 100644 --- a/luci-app-passwall/luasrc/view/passwall/app_update/app_version.htm +++ b/luci-app-passwall/luasrc/view/passwall/app_update/app_version.htm @@ -336,6 +336,17 @@ local com = self.com font-weight: normal; opacity: .7; } + /* Keep action controls out of theme help-text folding. */ + #app_version .app-update-actions { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: .5rem; + } + #app_version .app-update-actions > span { + min-width: 0; + overflow-wrap: anywhere; + }

@@ -343,13 +354,13 @@ local com = self.com <%=api.get_version()%>
- +
- +
@@ -362,13 +373,13 @@ local com = self.com <%=translate("Null")%>
- +
- +
<%end%> diff --git a/luci-app-passwall2/Makefile b/luci-app-passwall2/Makefile index 2393e2c0c..994085f5d 100644 --- a/luci-app-passwall2/Makefile +++ b/luci-app-passwall2/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall2 PKG_VERSION:=26.11.3 -PKG_RELEASE:=172 +PKG_RELEASE:=173 PKG_PO_VERSION:=$(PKG_VERSION) PKG_CONFIG_DEPENDS:= \ diff --git a/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm b/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm index 65d86fcaa..56805b833 100644 --- a/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm +++ b/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm @@ -344,6 +344,17 @@ local com = self.com font-weight: normal; opacity: .7; } + /* Keep action controls out of theme help-text folding. */ + #app_version .app-update-actions { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: .5rem; + } + #app_version .app-update-actions > span { + min-width: 0; + overflow-wrap: anywhere; + }
@@ -351,7 +362,7 @@ local com = self.com <%=api.get_version()%>
-
+
<%=translate("Null")%>
-
+
', help: '<%:The online upgrade downloads and installs the matching Mihomo IPK or APK package for this system from fw876/helloworld releases.%>' - }, - naiveproxy: { - label: '<%:NaiveProxy%>', - help: '<%:The online upgrade downloads and installs the matching NaiveProxy package for this system from fw876/helloworld releases.%>' } }; @@ -53,7 +49,6 @@ 'Extract failed': '<%:Extract failed%>', 'xray binary not found in archive': '<%:xray binary not found in archive%>', 'mihomo binary not found in archive': '<%:mihomo binary not found in archive%>', - 'naive binary not found in archive': '<%:naive binary not found in archive%>', 'Install failed': '<%:Install failed%>', 'Installed binary failed to run': '<%:Installed binary failed to run%>', 'Unsupported package manager': '<%:Unsupported package manager%>', @@ -468,7 +463,6 @@ -
diff --git a/luci-app-ssr-plus/po/templates/ssr-plus.pot b/luci-app-ssr-plus/po/templates/ssr-plus.pot index ce5cdf347..6b889b7a8 100644 --- a/luci-app-ssr-plus/po/templates/ssr-plus.pot +++ b/luci-app-ssr-plus/po/templates/ssr-plus.pot @@ -2677,12 +2677,6 @@ msgid "" "package for this system from fw876/helloworld releases." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/component.htm:18 -msgid "" -"The online upgrade downloads and installs the matching NaiveProxy package " -"for this system from fw876/helloworld releases." -msgstr "" - #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/clash_main_panel.htm:816 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/clash_main_panel.htm:871 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/clash_panel.htm:89 @@ -3265,10 +3259,6 @@ msgstr "" msgid "mihomo binary not found in archive" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/component.htm:56 -msgid "naive binary not found in archive" -msgstr "" - #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:911 msgid "native UDP characteristics" msgstr "" diff --git a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po index eaca309e9..cdf9b5ff4 100644 --- a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po +++ b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po @@ -2701,13 +2701,6 @@ msgid "" msgstr "" "在线升级会从 fw876/helloworld 发布页下载并安装适配当前系统的 Mihomo IPK 或 APK 软件包。" -#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/component.htm:18 -msgid "" -"The online upgrade downloads and installs the matching NaiveProxy package " -"for this system from fw876/helloworld releases." -msgstr "" -"在线升级会从 fw876/helloworld 发布页下载并安装适配当前系统的 NaiveProxy 软件包。" - #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/clash_main_panel.htm:816 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/clash_main_panel.htm:871 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/clash_panel.htm:89 @@ -3292,10 +3285,6 @@ msgstr "mKCP 伪装(混淆)类型" msgid "mihomo binary not found in archive" msgstr "压缩包中未找到 mihomo 二进制文件" -#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/component.htm:56 -msgid "naive binary not found in archive" -msgstr "压缩包中未找到 naive 二进制文件" - #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:911 msgid "native UDP characteristics" msgstr "原生 UDP 特性" diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/update_components.sh b/luci-app-ssr-plus/root/usr/share/shadowsocksr/update_components.sh index 257f8f2b1..1948c69b6 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/update_components.sh +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/update_components.sh @@ -103,17 +103,6 @@ version_gt() { [ "$first" = "$left" ] } -naiveproxy_versions_equal() { - local left right - - left="$(trim_version "${1:-}")" - right="$(trim_version "${2:-}")" - [ -n "$left" ] || return 1 - [ -n "$right" ] || return 1 - [ "$left" = "$right" ] && return 0 - [ "${left%%-*}" = "${right%%-*}" ] -} - get_openwrt_arch() { local arch @@ -163,22 +152,6 @@ find_mihomo_binary() { return 1 } -find_naiveproxy_binary() { - if command -v naive >/dev/null 2>&1; then - command -v naive - return 0 - fi - - for path in /usr/bin/naive /usr/libexec/naive /etc/ssrplus/bin/naive; do - if [ -x "$path" ]; then - printf '%s' "$path" - return 0 - fi - done - - return 1 -} - get_xray_current_version() { if [ ! -x "$XRAY_BINARY" ]; then return 1 @@ -211,29 +184,6 @@ get_mihomo_current_version() { return 0 } -get_naiveproxy_current_version() { - local pm version binary - - pm="$(detect_package_manager 2>/dev/null || true)" - case "$pm" in - apk) - version="$(apk list -I naiveproxy 2>/dev/null | sed -n 's/^naiveproxy-\([^[:space:]]*\).*$/\1/p' | sed -n '1p')" - ;; - opkg) - version="$(opkg status naiveproxy 2>/dev/null | sed -n 's/^Version:[[:space:]]*//p' | sed -n '1p')" - ;; - esac - - if [ -n "${version:-}" ]; then - printf '%s' "$version" - return 0 - fi - - binary="$(find_naiveproxy_binary)" || return 1 - "$binary" --version 2>&1 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(-[0-9]+)?' | sed -n '1p' - return 0 -} - require_cmd() { command -v "$1" >/dev/null 2>&1 } @@ -1130,71 +1080,6 @@ get_mihomo_latest_info() { return 0 } -select_naiveproxy_asset() { - local asset_list="$1" - local pm="$2" - local arch="$3" - local candidate - - case "$pm" in - apk) - candidate="$(printf '%s\n' "$asset_list" | grep -E '^naiveproxy-[^[:space:]]+\.apk$' | grep -F "_${arch}.apk" | sed -n '1p')" - ;; - opkg) - candidate="$(printf '%s\n' "$asset_list" | grep -E '^naiveproxy_[^[:space:]]+\.ipk$' | grep -F "_${arch}.ipk" | sed -n '1p')" - ;; - *) - return 1 - ;; - esac - - [ -n "$candidate" ] || return 1 - printf '%s' "$candidate" -} - -naiveproxy_asset_version() { - local asset="$1" - local arch="$2" - local version - - case "$asset" in - naiveproxy_*_"$arch".ipk) - version="${asset#naiveproxy_}" - version="${version%_${arch}.ipk}" - ;; - naiveproxy-*_"$arch".apk) - version="${asset#naiveproxy-}" - version="${version%_${arch}.apk}" - ;; - *) - return 1 - ;; - esac - - [ -n "$version" ] || return 1 - printf '%s' "$version" -} - -get_naiveproxy_latest_info() { - local pm arch tag version asset asset_list release_html url - - pm="$(detect_package_manager)" || return 2 - arch="$(get_openwrt_arch)" - tag="$(get_helloworld_latest_tag)" || return 3 - release_html="$(fetch_text "https://github.com/fw876/helloworld/releases/expanded_assets/$tag")" || return 3 - asset_list="$(printf '%s\n' "$release_html" | sed -n 's#.*href="/fw876/helloworld/releases/download/[^/]*/\([^"]*\)".*#\1#p')" - asset="$(select_naiveproxy_asset "$asset_list" "$pm" "$arch")" || return 4 - version="$(naiveproxy_asset_version "$asset" "$arch")" || return 4 - url="$(mirror_wrap_url "https://github.com/fw876/helloworld/releases/download/$tag/$asset")" - - log_kv package_manager "$pm" - log_kv arch "$arch" - log_kv asset "$asset" - log_kv latest_version "$version" - log_kv download_url "$url" - return 0 -} - get_mainprogram_current_version() { local pm="$1" local version @@ -1522,54 +1407,6 @@ mihomo_info() { log_kv error '' } -naiveproxy_info() { - local pm current installed latest_output latest_rc latest_version arch asset can_upgrade - - installed=0 - current="" - pm="$(detect_package_manager 2>/dev/null || true)" - arch="$(get_openwrt_arch)" - if current="$(get_naiveproxy_current_version)" && [ -n "$current" ]; then - installed=1 - fi - - latest_output="$(get_naiveproxy_latest_info 2>/dev/null)" - latest_rc=$? - - log_kv component naiveproxy - log_kv installed "$installed" - log_kv current_version "$current" - log_kv package_manager "$pm" - log_kv arch "$arch" - log_kv asset '' - - if [ $latest_rc -ne 0 ]; then - log_kv can_upgrade 0 - case "$latest_rc" in - 2) log_kv error 'unsupported_package_manager' ;; - 3) log_kv error 'fetch_failed' ;; - 4) log_kv error 'asset_not_found' ;; - *) log_kv error 'unknown_error' ;; - esac - return 0 - fi - - latest_version="$(printf '%s\n' "$latest_output" | sed -n 's/^latest_version=//p' | sed -n '1p')" - pm="$(printf '%s\n' "$latest_output" | sed -n 's/^package_manager=//p' | sed -n '1p')" - arch="$(printf '%s\n' "$latest_output" | sed -n 's/^arch=//p' | sed -n '1p')" - asset="$(printf '%s\n' "$latest_output" | sed -n 's/^asset=//p' | sed -n '1p')" - can_upgrade=0 - if [ -z "$current" ]; then - can_upgrade=1 - elif ! naiveproxy_versions_equal "$latest_version" "$current" && version_gt "$latest_version" "$current"; then - can_upgrade=1 - fi - - printf '%s\n' "$latest_output" | sed '/^download_url=/d' - log_kv can_upgrade "$can_upgrade" - log_kv error '' -} - xray_local_info() { local pm current installed arch @@ -1614,28 +1451,6 @@ mihomo_local_info() { log_kv error '' } -naiveproxy_local_info() { - local pm current installed arch - - installed=0 - current="" - pm="$(detect_package_manager 2>/dev/null || true)" - arch="$(get_openwrt_arch)" - if current="$(get_naiveproxy_current_version)" && [ -n "$current" ]; then - installed=1 - fi - - log_kv component naiveproxy - log_kv installed "$installed" - log_kv current_version "$current" - log_kv latest_version '' - log_kv package_manager "$pm" - log_kv arch "$arch" - log_kv asset '' - log_kv can_upgrade 0 - log_kv error '' -} - xray_upgrade() { local latest_output latest_rc latest_version download_url package_manager asset tmp_dir package_file current_before current_after @@ -1784,80 +1599,6 @@ mihomo_upgrade() { return 0 } -naiveproxy_upgrade() { - local latest_output latest_rc latest_version download_url package_manager asset tmp_dir package_file current_before current_after - - latest_output="$(get_naiveproxy_latest_info 2>/dev/null)" - latest_rc=$? - if [ $latest_rc -ne 0 ]; then - log_kv success 0 - case "$latest_rc" in - 2) log_kv message 'Unsupported package manager' ;; - 3) log_kv message 'Failed to fetch release metadata' ;; - 4) log_kv message 'Matching release asset not found' ;; - *) log_kv message 'Unknown error' ;; - esac - return 0 - fi - - latest_version="$(printf '%s\n' "$latest_output" | sed -n 's/^latest_version=//p' | sed -n '1p')" - download_url="$(printf '%s\n' "$latest_output" | sed -n 's/^download_url=//p' | sed -n '1p')" - package_manager="$(printf '%s\n' "$latest_output" | sed -n 's/^package_manager=//p' | sed -n '1p')" - asset="$(printf '%s\n' "$latest_output" | sed -n 's/^asset=//p' | sed -n '1p')" - current_before="$(get_naiveproxy_current_version 2>/dev/null || true)" - if [ -n "$current_before" ] && ! version_gt "$latest_version" "$current_before"; then - log_kv success 1 - log_kv previous_version "$current_before" - log_kv current_version "$current_before" - log_kv latest_version "$latest_version" - log_kv message 'Already up to date' - return 0 - fi - - tmp_dir="$(mktemp -d /tmp/ssrplus-naiveproxy.XXXXXX)" - if [ -z "$tmp_dir" ] || [ ! -d "$tmp_dir" ]; then - log_kv success 0 - log_kv message 'Failed to create temp directory' - return 0 - fi - - package_file="$tmp_dir/$asset" - trap "rm -rf '$tmp_dir'" EXIT INT TERM - - if ! download_file "$download_url" "$package_file"; then - log_kv success 0 - log_kv message 'Download failed' - return 0 - fi - - if [ ! -s "$package_file" ] || ! mainprogram_install_package "$package_manager" "$package_file"; then - log_kv success 0 - log_kv message 'Install failed' - return 0 - fi - - current_after="$(get_naiveproxy_current_version 2>/dev/null || true)" - if [ -z "$current_after" ]; then - log_kv success 0 - log_kv message 'Installed package check failed' - return 0 - fi - - if [ -x /etc/init.d/shadowsocksr ]; then - /etc/init.d/shadowsocksr restart >/dev/null 2>&1 || true - fi - - log_kv success 1 - log_kv previous_version "$current_before" - log_kv current_version "$current_after" - log_kv latest_version "$latest_version" - log_kv package_manager "$package_manager" - log_kv arch "$(get_openwrt_arch)" - log_kv asset "$asset" - log_kv message 'Upgrade completed' - return 0 -} - # ==================== 主程序入口 ==================== case "${1:-}" in # 主程序相关 @@ -1890,16 +1631,6 @@ case "${1:-}" in mihomo_upgrade) mihomo_upgrade ;; - # Naiveproxy 相关 - naiveproxy_info) - naiveproxy_info - ;; - naiveproxy_local_info) - naiveproxy_local_info - ;; - naiveproxy_upgrade) - naiveproxy_upgrade - ;; # Country MMDB 相关 country_mmdb_info) country_mmdb_info @@ -1942,7 +1673,7 @@ case "${1:-}" in ;; *) log_kv success 0 - log_kv message 'Usage: update_components.sh mainprogram_info|mainprogram_local_info|mainprogram_upgrade|xray_info|xray_local_info|xray_upgrade|mihomo_info|mihomo_local_info|mihomo_upgrade|naiveproxy_info|naiveproxy_local_info|naiveproxy_upgrade|country_mmdb_info|country_mmdb_local_info|country_mmdb_upgrade|geosite_info|geosite_local_info|geosite_upgrade|v2ray_geoip_info|v2ray_geoip_local_info|v2ray_geoip_upgrade|v2ray_geosite_info|v2ray_geosite_local_info|v2ray_geosite_upgrade' + log_kv message 'Usage: update_components.sh mainprogram_info|mainprogram_local_info|mainprogram_upgrade|xray_info|xray_local_info|xray_upgrade|mihomo_info|mihomo_local_info|mihomo_upgrade|country_mmdb_info|country_mmdb_local_info|country_mmdb_upgrade|geosite_info|geosite_local_info|geosite_upgrade|v2ray_geoip_info|v2ray_geoip_local_info|v2ray_geoip_upgrade|v2ray_geosite_info|v2ray_geosite_local_info|v2ray_geosite_upgrade' return 1 2>/dev/null || exit 1 ;; esac diff --git a/luci-app-tailscale-ng/.gitignore b/luci-app-tailscale-ng/.gitignore index 906716dfe..919576b5c 100644 --- a/luci-app-tailscale-ng/.gitignore +++ b/luci-app-tailscale-ng/.gitignore @@ -1,3 +1,4 @@ .deploy/target.env .deploy/.ssh/ .private +/artifacts/ diff --git a/luci-app-tailscale-ng/Makefile b/luci-app-tailscale-ng/Makefile index e81316dc6..0670ea5f0 100644 --- a/luci-app-tailscale-ng/Makefile +++ b/luci-app-tailscale-ng/Makefile @@ -9,8 +9,11 @@ LUCI_TITLE:=LuCI for Tailscale (NG) LUCI_DEPENDS:=+tailscale LUCI_PKGARCH:=all -PKG_VERSION:=0.1.1 -PKG_RELEASE:=3 +PKG_VERSION:=0.1.2 + +# match the i18n pkg version to the main pkg version +PKG_RELEASE:=4 +PKG_PO_VERSION:=$(PKG_VERSION)-r$(PKG_RELEASE) include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-app-tailscale-ng/README.md b/luci-app-tailscale-ng/README.md index 4c02aa570..45f1a9753 100644 --- a/luci-app-tailscale-ng/README.md +++ b/luci-app-tailscale-ng/README.md @@ -101,9 +101,14 @@ Download the latest `.apk` package from [Releases](https://github.com/vad-b/luci apk add --allow-untrusted --upgrade /tmp/luci-app-tailscale-ng_*.apk ``` +Simplified Chinese translation is also available as a separate `luci-i18n-tailscale-ng-zh-cn` package in both `.apk` and `.ipk` formats in [Releases](https://github.com/vad-b/luci-app-tailscale-ng/releases). + +For local development builds and testing, see [Local package builds](docs/local-build.md). + ## Credits - [asvow/luci-app-tailscale](https://github.com/asvow/luci-app-tailscale) - the project that inspired this work +- [GFander](https://github.com/GFander) - Simplified Chinese translation ## License diff --git a/luci-app-tailscale-ng/docs/local-build.md b/luci-app-tailscale-ng/docs/local-build.md new file mode 100644 index 000000000..cbe15db66 --- /dev/null +++ b/luci-app-tailscale-ng/docs/local-build.md @@ -0,0 +1,65 @@ +# Local package builds + +Build locally with the same script used by GitHub Actions. No push or release +is needed. + +## Prepare + +Use Ubuntu 24.04 x86_64, including under WSL2, as a regular user. Run the +commands below in the Linux shell. Install dependencies once: + +```sh +sudo apt-get update +sudo apt-get install -y git build-essential flex bison gawk gcc-multilib g++-multilib gettext libncurses-dev libssl-dev python3-setuptools rsync unzip zlib1g-dev file wget curl zstd +``` + +## Build + +Commit the changes to test locally: the script builds the current commit and +requires a clean working tree, including untracked files. From the repository +root, build APK packages for OpenWrt 25.12: + +```sh +JOBS=2 bash scripts/build-packages.sh apk +``` + +For IPK packages targeting OpenWrt 24.10, use: + +```sh +JOBS=2 bash scripts/build-packages.sh ipk +``` + +Outputs go to `artifacts/apk/` or `artifacts/ipk/`: the application package, +Chinese translation, `SHA256SUMS` and `build-info.txt` with the source commit +and SDK details. SDK versions and checksums are fixed in the build script. + +The build host must be x86_64; the two output packages are architecture +independent. Obtain native dependencies such as Tailscale from the router's +own feeds. + +## Check and test + +For an APK build, verify the outputs and source commit: + +```sh +cd artifacts/apk +sha256sum --check SHA256SUMS +cat build-info.txt +cd ../.. +``` + +Back up the router's Tailscale configuration and authorization state before +testing. Transfer both packages and install them using the +[manual installation instructions](../README.md#manual-installation). +Local APK packages are unsigned and require `--allow-untrusted`. + +Check installed versions, preserved settings and login, service operation, +and the translated LuCI page. If Software hides the translation package, +select **Display LuCI translation packages → all**. + +## Cache + +The first build is slower; later builds reuse `~/.cache/luci-app-tailscale-ng`. +Keep this cache on a Linux filesystem at a path without spaces. Delete that +directory for a fresh SDK, or `artifacts/` to discard generated packages. +Optional overrides are `BUILD_CACHE_DIR`, `OUTPUT_DIR` and `JOBS`. diff --git a/luci-app-tailscale-ng/po/templates/luci-app-tailscale-ng.pot b/luci-app-tailscale-ng/po/templates/luci-app-tailscale-ng.pot new file mode 100644 index 000000000..cc716994d --- /dev/null +++ b/luci-app-tailscale-ng/po/templates/luci-app-tailscale-ng.pot @@ -0,0 +1,314 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:199 +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:618 +msgid "-- None --" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:587 +msgid "Accept DNS" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:588 +msgid "Accept DNS configuration from the control server." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:601 +msgid "Accept Subnet Routes" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:602 +msgid "Accept subnet routes that other nodes advertise." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:648 +msgid "Additional Flags" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:596 +msgid "Advertise Exit Node" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:606 +msgid "Advertised Routes" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:164 +msgid "Are you sure you want to log out and clean the local state?" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:522 +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:528 +msgid "Authentication" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:534 +msgid "Base URL of login (control) server." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:283 +msgid "Checking login..." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:368 +msgid "Checking status..." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:355 +msgid "Click here to log in" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:131 +msgid "Command exited with code" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:585 +msgid "DNS" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:552 +msgid "" +"Disconnect from login server, expire current login, and flush local state " +"cache." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:173 +msgid "Error:" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:151 +msgid "Error: unable to load status data." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:616 +msgid "Exit Node" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:646 +msgid "Extra" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:650 +msgid "Extra flags in format --flag=value. See %s for available options." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:575 +msgid "Firewall Mode" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:560 +msgid "General" +msgstr "" + +#: root/usr/share/rpcd/acl.d/luci-app-tailscale-ng.json:3 +msgid "Grant access to Tailscale NG configuration" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:562 +msgid "Listen Port" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:387 +msgid "Loading..." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:279 +msgid "Logged in" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:281 +msgid "Logged out" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:630 +msgid "Logging" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:167 +msgid "Logging out and cleaning state..." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:634 +msgid "Logging program activities." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:640 +msgid "Logging program errors and exceptions." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:533 +msgid "Login Server" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:530 +msgid "Login Status" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:549 +msgid "Logout" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:546 +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:550 +msgid "Logout and Clean" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:363 +msgid "Manage in Admin Console" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:514 +msgid "N/A" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:391 +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:707 +msgid "No output available. Service may not be running." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:270 +msgid "Not running" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:597 +msgid "Offer to be an exit node for outbound internet traffic." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:571 +msgid "Path to state file. WARNING: Changing this requires reauthentication." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:538 +msgid "Pre-authentication Key" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:313 +msgid "Restart" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:315 +msgid "Restarting Tailscale service..." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:594 +msgid "Routing" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:273 +msgid "Running" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:617 +msgid "Select an online machine to use as an exit node." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:577 +msgid "Select the firewall backend to use." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:366 +msgid "Service not running" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:539 +msgid "Set the machine authorization key." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:523 +msgid "Settings" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:326 +msgid "Start" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:504 +msgid "Start Tailscale service on boot." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:328 +msgid "Starting Tailscale service..." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:569 +msgid "State File" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:524 +msgid "Status" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:638 +msgid "StdErr Logging" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:632 +msgid "StdOut Logging" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:319 +msgid "Stop" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:321 +msgid "Stopping Tailscale service..." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:607 +msgid "" +"Subnets to advertise to other Tailscale nodes, e.g. 192.168.1.0/24." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:681 +msgid "Tailscale DNS Status" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:503 +msgid "Tailscale Enabled" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:663 +msgid "Tailscale IP" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:669 +msgid "Tailscale Interface" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:492 +#: root/usr/share/luci/menu.d/luci-app-tailscale-ng.json:3 +msgid "Tailscale NG" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:675 +msgid "Tailscale Netcheck" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:508 +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:657 +msgid "Tailscale Status" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:512 +msgid "Tailscale Version" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:651 +msgid "Tailscale documentation" +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:493 +msgid "Tailscale is a cross-platform and easy to use virtual LAN." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:564 +msgid "UDP port to listen on for WireGuard and peer-to-peer traffic." +msgstr "" + +#: htdocs/luci-static/resources/view/tailscale-ng/index.js:540 +msgid "" +"Use a non-reusable auth key and disable key expiry for trusted machines via " +"the provider admin console." +msgstr "" diff --git a/luci-app-tailscale-ng/po/zh_Hans/luci-app-tailscale-ng.po b/luci-app-tailscale-ng/po/zh_Hans/luci-app-tailscale-ng.po index 15796d947..55139d3e6 100644 --- a/luci-app-tailscale-ng/po/zh_Hans/luci-app-tailscale-ng.po +++ b/luci-app-tailscale-ng/po/zh_Hans/luci-app-tailscale-ng.po @@ -3,16 +3,16 @@ # LuCI for Tailscale (NG) - Simplified Chinese (简体中文) translation # # Extracted with: build/i18n-scan.pl from the openwrt/luci repository -# Language: zh_CN / zh-cn +# Language: zh_Hans (Simplified Chinese) msgid "" msgstr "" -"Project-Id-Version: luci-app-tailscale-ng 0.1.1\n" +"Project-Id-Version: luci-app-tailscale-ng 0.1.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-08-15 00:00+0000\n" "PO-Revision-Date: 2026-08-15 00:00+0000\n" "Last-Translator: \n" -"Language-Team: Chinese (Simplified) \n" -"Language: zh_CN\n" +"Language-Team: Chinese (Simplified)\n" +"Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/luci-app-tailscale-ng/scripts/build-packages.sh b/luci-app-tailscale-ng/scripts/build-packages.sh new file mode 100755 index 000000000..303e18abf --- /dev/null +++ b/luci-app-tailscale-ng/scripts/build-packages.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: GPL-3.0-only +set -euo pipefail + +# Use Linux tools only, including when invoked from WSL with Windows PATH entries. +export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +export LC_ALL=C + +format="${1:-apk}" +case "$format" in + apk) + sdk_version=25.12.6 + sdk_file=openwrt-sdk-25.12.6-x86-64_gcc-14.3.0_musl.Linux-x86_64.tar.zst + sdk_url="https://downloads.openwrt.org/releases/$sdk_version/targets/x86/64/$sdk_file" + sdk_sha256=1864152619092e781fa36a401960c8e9ae42d6a364c44ee5f0b197ca5f3c0fcc + ;; + ipk) + sdk_version=24.10.4 + sdk_file=openwrt-sdk-24.10.4-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst + sdk_url="https://archive.openwrt.org/releases/$sdk_version/targets/x86/64/$sdk_file" + sdk_sha256=229e871f734a2cee5ce3ad6a3e98d3836b0899bfdeaea4d9c2c5cc7b1fce1407 + ;; + *) printf 'Usage: %s [apk|ipk]\n' "$0" >&2; exit 1 ;; +esac + +source_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cache_dir="${BUILD_CACHE_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}/luci-app-tailscale-ng}" +output_dir="${OUTPUT_DIR:-$source_dir/artifacts/$format}" +jobs="${JOBS:-$(nproc)}" + +if [[ "$(id -u)" == 0 ]]; then + printf 'Run the SDK build as a regular Linux user.\n' >&2 + exit 1 +fi +if [[ -n "$(git -C "$source_dir" status --porcelain)" ]]; then + printf 'Commit the source changes first; the build uses an exact Git snapshot.\n' >&2 + exit 1 +fi +source_commit="$(git -C "$source_dir" rev-parse HEAD)" + +mkdir -p "$cache_dir/downloads" "$output_dir" +cache_dir="$(realpath "$cache_dir")" +output_dir="$(realpath "$output_dir")" +sdk_dir="$cache_dir/sdk-$sdk_version" +archive="$cache_dir/downloads/$sdk_file" +if [[ "$sdk_dir" == *[[:space:]]* ]]; then + printf 'The SDK cache path must not contain whitespace.\n' >&2 + exit 1 +fi + +if [[ ! -f "$archive" ]]; then + curl --fail --location --retry 3 "$sdk_url" --output "$archive.part" + mv "$archive.part" "$archive" +fi +printf '%s %s\n' "$sdk_sha256" "$archive" | sha256sum --check + +if [[ ! -f "$sdk_dir/.sdk-ready" ]]; then + mkdir -p "$sdk_dir" + tar --zstd -xf "$archive" -C "$sdk_dir" --strip-components=1 + touch "$sdk_dir/.sdk-ready" +fi + +# Export only committed source: no deployment credentials or private notes. +package_dir="$sdk_dir/package/luci-app-tailscale-ng" +rm -rf -- "$package_dir" +mkdir -p "$package_dir" +git -C "$source_dir" archive "$source_commit" | tar -xf - -C "$package_dir" +package_version="$(sed -n 's/^PKG_VERSION:=//p' "$package_dir/Makefile")" +package_release="$(sed -n 's/^PKG_RELEASE:=//p' "$package_dir/Makefile")" + +cd "$sdk_dir" +# Keep the release SDK's pinned feed revisions instead of tracking moving branches. +if [[ ! -f .feeds-ready ]]; then + ./scripts/feeds update -a + touch .feeds-ready +fi +./scripts/feeds uninstall -a +./scripts/feeds install tailscale luci-base + +cat > .config <&2 + exit 1 + fi + cp "${files[0]}" "$output_dir/" +done + +{ + printf 'source_commit=%s\n' "$source_commit" + printf 'sdk_version=%s\nsdk_sha256=%s\nformat=%s\n' "$sdk_version" "$sdk_sha256" "$format" + cat feeds.conf.default +} > "$output_dir/build-info.txt" +(cd "$output_dir" && sha256sum -- *."$format" > SHA256SUMS) +printf '\nPackages saved to %s\n' "$output_dir" diff --git a/luci-app-trafficctl/Makefile b/luci-app-trafficctl/Makefile index ff13579d0..029f8b700 100644 --- a/luci-app-trafficctl/Makefile +++ b/luci-app-trafficctl/Makefile @@ -1,8 +1,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-trafficctl -PKG_VERSION:=1.26.4 -PKG_RELEASE:=22 +PKG_VERSION:=1.28.0 +PKG_RELEASE:=23 PKG_LICENSE:=Apache-2.0 PKG_MAINTAINER:=Denis Iusupov diff --git a/luci-app-trafficctl/root/usr/local/bin/trafficctl-device.sh b/luci-app-trafficctl/root/usr/local/bin/trafficctl-device.sh index 87cf6a43c..510b75f88 100755 --- a/luci-app-trafficctl/root/usr/local/bin/trafficctl-device.sh +++ b/luci-app-trafficctl/root/usr/local/bin/trafficctl-device.sh @@ -172,8 +172,9 @@ else # The download rule is listed first; the upload one is the "_ul" name. RL_DUMP=$(iptables -t mangle -L FORWARD -nv 2>/dev/null | grep "rl_ratelimit" \ | awk -v ip="$IP" '{ for (i = 1; i <= NF; i++) if ($i == ip || $i == ip "/32") { print; next } }') - RATE_LIM=$(echo "$RL_DUMP" | grep -oE '[0-9]+kbit' | head -1 | sed 's/kbit//') - RATE_LIM_UP=$(echo "$RL_DUMP" | grep -E 'rl_ratelimit.*_ul' | grep -oE '[0-9]+kbit' | head -1 | sed 's/kbit//') + RATE_LIM=$(echo "$RL_DUMP" | awk "$TCTL_NFT_RATE_AWK"'{ r = tctl_ipt_first_rate(); if (r >= 0) { print r; exit } }') + RATE_LIM_UP=$(echo "$RL_DUMP" | grep -E 'rl_ratelimit.*_ul' \ + | awk "$TCTL_NFT_RATE_AWK"'{ r = tctl_ipt_first_rate(); if (r >= 0) { print r; exit } }') fi [ -z "$RATE_LIM" ] && RATE_LIM=0 [ -z "$RATE_LIM_UP" ] && RATE_LIM_UP=0 diff --git a/luci-app-trafficctl/root/usr/local/bin/trafficctl-fw.sh b/luci-app-trafficctl/root/usr/local/bin/trafficctl-fw.sh index c75484ee0..73e318c17 100755 --- a/luci-app-trafficctl/root/usr/local/bin/trafficctl-fw.sh +++ b/luci-app-trafficctl/root/usr/local/bin/trafficctl-fw.sh @@ -279,12 +279,14 @@ tctl_ratelimit_add() { TCTL_RL_UPLOAD6_OK=0 # shellcheck disable=SC2034 TCTL_RL_DOWNLOAD6_OK=0 + # shellcheck disable=SC2046 # deliberate split into the option words iptables -t mangle -A FORWARD -d "$ip" -m hashlimit \ - --hashlimit-above "${rate_kbit}kbit/sec" --hashlimit-burst "${rate_kbit}kbit" \ + $(tctl_ipt_limit_args "$rate_kbit") \ --hashlimit-mode dstip --hashlimit-name "rl_${comment}" \ -j DROP -m comment --comment "$comment" 2>/dev/null + # shellcheck disable=SC2046 # deliberate split into the option words iptables -t mangle -A FORWARD -s "$ip" -m hashlimit \ - --hashlimit-above "${rate_kbit_up}kbit/sec" --hashlimit-burst "${rate_kbit_up}kbit" \ + $(tctl_ipt_limit_args "$rate_kbit_up") \ --hashlimit-mode srcip --hashlimit-name "rl_${comment}_ul" \ -j DROP -m comment --comment "${comment}_ul" 2>/dev/null fi @@ -382,8 +384,50 @@ function tctl_rate_kbit(n, u, b) { # Rounded here, so a reader printing %d agrees with one printing %.0f. return int(b * 8 / 1000 + 0.5) } +# An iptables hashlimit rate as listed, e.g. "624992b/s" or "1213mb/s". +# iptables prints bytes in 1024 steps too. A packet rate ("5000/sec") is not a +# ceiling in kbit/s and reads 0. +function tctl_ipt_rate_kbit(t, n, u) { + if (!match(t, /^[0-9]+/)) return 0 + n = substr(t, 1, RLENGTH); u = substr(t, RLENGTH + 1) + if (u ~ /^b\//) return tctl_rate_kbit(n, "bytes") + if (u ~ /^kb\//) return tctl_rate_kbit(n, "kbytes") + if (u ~ /^mb\//) return tctl_rate_kbit(n, "mbytes") + if (u ~ /^gb\//) return tctl_rate_kbit(n, "gbytes") + return 0 +} +# The ceiling of the hashlimit rule on the current line: "above X" in an +# "iptables -L" listing, "--hashlimit-above X" in "iptables -S". -1 if none. +function tctl_ipt_first_rate( i) { + for (i = 1; i < NF; i++) + if ($i == "above" || $i == "--hashlimit-above") return tctl_ipt_rate_kbit($(i+1)) + return -1 +} ' +# hashlimit arguments for a kbit/s ceiling, in BYTES. +# +# "${kbit}kbit/sec" is not a byte rate to hashlimit: it reads the number as +# PACKETS per second (iptables -S lists it back as "5000/sec"), and the +# "${kbit}kbit" burst written next to it is rejected outright ("bad value for +# option --hashlimit-burst", iptables 1.8.7 and 1.8.10). The 2>/dev/null after +# the rule hid that, so on fw3 no limit was ever installed. +# +# Bytes per second, SI like the nft side (tctl_rate_bytes). The burst is two +# seconds of the rate: hashlimit refuses a byte burst below about one second +# of it ("burst cannot be smaller than 125172064b" at 1 Gbit/s), and it is a +# 32-bit field, hence the cap, which puts the highest ceiling fw3 can +# express near 30 Gbit/s (10 Gbit/s is accepted, 40 is not). Verified on iptables-legacy 1.8.7 with iperf3 +# through a forwarding netns: 5, 50 and 1000 Mbit/s held at 4.9-4.97, 49-50.6 +# and 990-1003 Mbit/s. +tctl_ipt_limit_args() { + local b burst + b=$(tctl_rate_bytes "$1") + burst=$(( b * 2 )) + [ "$burst" -gt 4000000000 ] && burst=4000000000 + echo "--hashlimit-above ${b}b/s --hashlimit-burst ${burst}b" +} + tctl_ratelimit_list() { if [ "$TCTL_FW" = "nft" ]; then nft list table netdev tm_ratelimit 2>/dev/null diff --git a/luci-app-trafficctl/root/usr/local/bin/trafficctl-metrics.sh b/luci-app-trafficctl/root/usr/local/bin/trafficctl-metrics.sh index 79188d864..8132a75d5 100755 --- a/luci-app-trafficctl/root/usr/local/bin/trafficctl-metrics.sh +++ b/luci-app-trafficctl/root/usr/local/bin/trafficctl-metrics.sh @@ -115,6 +115,8 @@ BEGIN { print "# TYPE trafficctl_device_blocked gauge" print "# HELP trafficctl_device_limit_kbit Applied throttle in kbit/s (0 = none)." print "# TYPE trafficctl_device_limit_kbit gauge" + print "# HELP trafficctl_device_limit_up_kbit Applied upload throttle in kbit/s (0 = none); equals the download one unless split." + print "# TYPE trafficctl_device_limit_up_kbit gauge" print "# HELP trafficctl_device_wifi_blocked Whether the device is denied on WiFi." print "# TYPE trafficctl_device_wifi_blocked gauge" print "# HELP trafficctl_device_conntrack_bytes Bytes currently accounted in conntrack (falls as flows expire)." @@ -132,6 +134,10 @@ BEGIN { printf "trafficctl_device_wifi_blocked{ip=\"%s\"} %d\n", ip, (index($0, "\"wifi_blocked\":true") ? 1 : 0) printf "trafficctl_device_limit_kbit{ip=\"%s\",mode=\"limiter\"} %d\n", ip, num($0, "rate_limit_kbit") printf "trafficctl_device_limit_kbit{ip=\"%s\",mode=\"shaper\"} %d\n", ip, num($0, "shape_kbit") + # Its own metric rather than a direction label on the one above: a new + # label would start new series for every existing dashboard and alert. + printf "trafficctl_device_limit_up_kbit{ip=\"%s\",mode=\"limiter\"} %d\n", ip, num($0, "rate_limit_kbit_up") + printf "trafficctl_device_limit_up_kbit{ip=\"%s\",mode=\"shaper\"} %d\n", ip, num($0, "shape_kbit_up") # Conntrack view: current in-flight totals and the protocol split. printf "trafficctl_device_conntrack_bytes{ip=\"%s\",proto=\"all\"} %.0f\n", ip, num($0, "total") printf "trafficctl_device_conntrack_bytes{ip=\"%s\",proto=\"tcp\"} %.0f\n", ip, num($0, "tcp") diff --git a/luci-app-trafficctl/root/usr/local/bin/trafficctl-portfw.sh b/luci-app-trafficctl/root/usr/local/bin/trafficctl-portfw.sh index e3172a5ea..8a987c1fb 100755 --- a/luci-app-trafficctl/root/usr/local/bin/trafficctl-portfw.sh +++ b/luci-app-trafficctl/root/usr/local/bin/trafficctl-portfw.sh @@ -154,13 +154,15 @@ pfw_add_limit() { fi else if [ "$scope" = "input" ]; then + # shellcheck disable=SC2046 # deliberate split into the option words iptables -I INPUT -p "$proto" --dport "$(iptables_dport "$port")" -m hashlimit \ - --hashlimit-above "${kbit}kbit/sec" --hashlimit-burst "$kbit" \ + $(tctl_ipt_limit_args "$kbit") \ --hashlimit-mode dstport --hashlimit-name "$(hashlimit_name "$proto" "$port")" \ -j DROP -m comment --comment "$cmt" 2>/dev/null else + # shellcheck disable=SC2046 # deliberate split into the option words iptables -I FORWARD -d "$ip" -p "$proto" --dport "$(iptables_dport "$port")" -m hashlimit \ - --hashlimit-above "${kbit}kbit/sec" --hashlimit-burst "$kbit" \ + $(tctl_ipt_limit_args "$kbit") \ --hashlimit-mode dstip --hashlimit-name "$(hashlimit_name "$proto" "$port")" \ -j DROP -m comment --comment "$cmt" 2>/dev/null fi @@ -372,7 +374,7 @@ do_list() { st=$(printf '%s' "$CTL_DUMP" | grep "$(pfw_comment limit "$p" "$cmt_ip" "$port")" | \ awk "$TCTL_NFT_RATE_AWK"'{ for (i = 1; i < NF - 1; i++) if ($i == "over") { printf "%.0f\n", tctl_rate_kbit($(i+1), $(i+2)); exit } }') [ -z "$st" ] && st=$(printf '%s' "$CTL_DUMP" | grep "$(pfw_comment limit "$p" "$cmt_ip" "$port")" | \ - grep -oE 'hashlimit-above [0-9]+' | awk '{print $2; exit}') + awk "$TCTL_NFT_RATE_AWK"'{ r = tctl_ipt_first_rate(); if (r >= 0) { print r; exit } }') [ -n "$st" ] && limit_kbit="$st" fi done diff --git a/luci-app-trafficctl/root/usr/local/bin/trafficctl-ratelimit-stats.sh b/luci-app-trafficctl/root/usr/local/bin/trafficctl-ratelimit-stats.sh index bdab3d121..de44c6dc5 100755 --- a/luci-app-trafficctl/root/usr/local/bin/trafficctl-ratelimit-stats.sh +++ b/luci-app-trafficctl/root/usr/local/bin/trafficctl-ratelimit-stats.sh @@ -65,7 +65,7 @@ else # hashlimit is keyed on dstip whatever mode was asked for, so on this path # every bucket is per-address — "each" is the honest answer, not the # requested mode. Documented in docs/API.md: shared needs nftables. - iptables -t mangle -L FORWARD -nvx 2>/dev/null | grep "rl_ratelimit" | awk ' + iptables -t mangle -L FORWARD -nvx 2>/dev/null | grep "rl_ratelimit" | awk "$TCTL_NFT_RATE_AWK"' { packets = $1 bytes = $2 @@ -77,14 +77,9 @@ else } if (i == 9) ip = $i } - # extract rate from hashlimit-above - for (i = 1; i <= NF; i++) { - if ($i ~ /^[0-9]+kbit/) { - gsub(/kbit.*/, "", $i) - rate = $i - break - } - } + # the "above X" ceiling, in iptables units (see tctl_ipt_rate_kbit) + rate = tctl_ipt_first_rate() + if (rate < 0) rate = 0 if (ip != "" && ip != "0.0.0.0/0") { if (!(ip in seen)) { seen[ip] = 1; order[++n] = ip } rate_of[ip] = rate diff --git a/luci-app-trafficctl/root/usr/local/bin/trafficctl-summary.sh b/luci-app-trafficctl/root/usr/local/bin/trafficctl-summary.sh index d5a62fdf0..efaa25814 100755 --- a/luci-app-trafficctl/root/usr/local/bin/trafficctl-summary.sh +++ b/luci-app-trafficctl/root/usr/local/bin/trafficctl-summary.sh @@ -343,7 +343,7 @@ lookup_rate_limit() { # way; the upload one is the only "_ul" name. r=$(echo "$RL_DUMP" | grep -E "$pat" \ | awk -v ip="$ip" '{ for (i = 1; i <= NF; i++) if ($i == ip || $i == ip "/32") { print; next } }' \ - | grep -oE '[0-9]+kbit' | head -1 | sed 's/kbit//') + | awk "$TCTL_NFT_RATE_AWK"'{ r = tctl_ipt_first_rate(); if (r >= 0) { print r; exit } }') fi echo "${r:-0}" } diff --git a/luci-app-trafficctl/root/usr/local/bin/trafficctl-telegram.sh b/luci-app-trafficctl/root/usr/local/bin/trafficctl-telegram.sh index 34589c5c3..6ea08c877 100755 --- a/luci-app-trafficctl/root/usr/local/bin/trafficctl-telegram.sh +++ b/luci-app-trafficctl/root/usr/local/bin/trafficctl-telegram.sh @@ -450,13 +450,34 @@ build_device_keyboard() { rm -f "$tmpkb" } +# A ceiling as "8000 kbit/s", or "8000↓ / 2000↑ kbit/s" when upload has its +# own (#66). An upload figure of 0 or equal to download is not a split. +tg_ceiling() { + if [ "${2:-0}" -gt 0 ] 2>/dev/null && [ "$2" != "$1" ]; then + printf '%s↓ / %s↑ kbit/s' "$1" "$2" + else + printf '%s kbit/s' "$1" + fi +} + +# The same, compact, for the /status flags: "8000k" or "8000/2000k". +tg_ceiling_short() { + if [ "${2:-0}" -gt 0 ] 2>/dev/null && [ "$2" != "$1" ]; then + printf '%s/%sk' "$1" "$2" + else + printf '%sk' "$1" + fi +} + build_action_keyboard() { local ip="$1" devices="$2" - local blocked wifi_blocked rl_kbit shape_kbit + local blocked wifi_blocked rl_kbit shape_kbit rl_up shape_up blocked=$(get_device_field "$devices" "$ip" "blocked") wifi_blocked=$(get_device_field "$devices" "$ip" "wifi_blocked") rl_kbit=$(get_device_field "$devices" "$ip" "rate_limit_kbit") shape_kbit=$(get_device_field "$devices" "$ip" "shape_kbit") + rl_up=$(get_device_field "$devices" "$ip" "rate_limit_kbit_up") + shape_up=$(get_device_field "$devices" "$ip" "shape_kbit_up") conn_type=$(get_device_field "$devices" "$ip" "conn_type") local kb='{"inline_keyboard":[' @@ -487,7 +508,7 @@ build_action_keyboard() { # limiter if [ "$TG_BTN_LIMIT" = "1" ]; then if [ "${rl_kbit:-0}" -gt 0 ] 2>/dev/null; then - rows="${rows}[{\"text\":\"⚡ Limit: ${rl_kbit} kbit/s — Remove\",\"callback_data\":\"act:unlimit:${ip}\"}]," + rows="${rows}[{\"text\":\"⚡ Limit: $(tg_ceiling "$rl_kbit" "$rl_up") — Remove\",\"callback_data\":\"act:unlimit:${ip}\"}]," else rows="${rows}[{\"text\":\"⚡ 1M\",\"callback_data\":\"act:limit:${ip}:1000\"},{\"text\":\"⚡ 2M\",\"callback_data\":\"act:limit:${ip}:2000\"},{\"text\":\"⚡ 5M\",\"callback_data\":\"act:limit:${ip}:5000\"}]," rows="${rows}[{\"text\":\"⚡ 10M\",\"callback_data\":\"act:limit:${ip}:10000\"},{\"text\":\"⚡ 25M\",\"callback_data\":\"act:limit:${ip}:25000\"},{\"text\":\"⚡ 50M\",\"callback_data\":\"act:limit:${ip}:50000\"},{\"text\":\"⚡ 100M\",\"callback_data\":\"act:limit:${ip}:100000\"}]," @@ -497,7 +518,7 @@ build_action_keyboard() { # shaper if [ "$TG_BTN_SHAPE" = "1" ]; then if [ "${shape_kbit:-0}" -gt 0 ] 2>/dev/null; then - rows="${rows}[{\"text\":\"🔧 Shape: ${shape_kbit} kbit/s — Remove\",\"callback_data\":\"act:unshape:${ip}\"}]," + rows="${rows}[{\"text\":\"🔧 Shape: $(tg_ceiling "$shape_kbit" "$shape_up") — Remove\",\"callback_data\":\"act:unshape:${ip}\"}]," else rows="${rows}[{\"text\":\"🔧 1M\",\"callback_data\":\"act:shape:${ip}:1000\"},{\"text\":\"🔧 2M\",\"callback_data\":\"act:shape:${ip}:2000\"},{\"text\":\"🔧 5M\",\"callback_data\":\"act:shape:${ip}:5000\"}]," rows="${rows}[{\"text\":\"🔧 10M\",\"callback_data\":\"act:shape:${ip}:10000\"},{\"text\":\"🔧 25M\",\"callback_data\":\"act:shape:${ip}:25000\"},{\"text\":\"🔧 50M\",\"callback_data\":\"act:shape:${ip}:50000\"},{\"text\":\"🔧 100M\",\"callback_data\":\"act:shape:${ip}:100000\"}]," @@ -556,7 +577,7 @@ handle_devices_edit() { } handle_status() { - local devices ip name rl_kbit shape_kbit blocked wifi_blocked + local devices ip name rl_kbit shape_kbit rl_up shape_up blocked wifi_blocked local result="" devices=$(get_devices) [ -z "$devices" ] || [ "$devices" = "[]" ] && { tg_send "No active devices"; return; } @@ -566,13 +587,15 @@ handle_status() { wifi_blocked=$(get_device_field "$devices" "$ip" "wifi_blocked") rl_kbit=$(get_device_field "$devices" "$ip" "rate_limit_kbit") shape_kbit=$(get_device_field "$devices" "$ip" "shape_kbit") + rl_up=$(get_device_field "$devices" "$ip" "rate_limit_kbit_up") + shape_up=$(get_device_field "$devices" "$ip" "shape_kbit_up") name=$(get_device_field "$devices" "$ip" "name") local flags="" [ "$blocked" = "true" ] || [ "$blocked" = "1" ] && flags="${flags} 🚫inet" [ "$wifi_blocked" = "true" ] || [ "$wifi_blocked" = "1" ] && flags="${flags} 📵wifi" - [ "${rl_kbit:-0}" -gt 0 ] 2>/dev/null && flags="${flags} ⚡${rl_kbit}k" - [ "${shape_kbit:-0}" -gt 0 ] 2>/dev/null && flags="${flags} 🔧${shape_kbit}k" + [ "${rl_kbit:-0}" -gt 0 ] 2>/dev/null && flags="${flags} ⚡$(tg_ceiling_short "$rl_kbit" "$rl_up")" + [ "${shape_kbit:-0}" -gt 0 ] 2>/dev/null && flags="${flags} 🔧$(tg_ceiling_short "$shape_kbit" "$shape_up")" [ -n "$flags" ] && result="${result}${name:-?} (${ip}):${flags}\n" done @@ -616,17 +639,19 @@ handle_callback() { invalidate_cache devices=$(get_devices) name=$(get_device_field "$devices" "$ip" "name") - local blocked wifi_blocked rl_kbit shape_kbit + local blocked wifi_blocked rl_kbit shape_kbit rl_up shape_up blocked=$(get_device_field "$devices" "$ip" "blocked") wifi_blocked=$(get_device_field "$devices" "$ip" "wifi_blocked") rl_kbit=$(get_device_field "$devices" "$ip" "rate_limit_kbit") shape_kbit=$(get_device_field "$devices" "$ip" "shape_kbit") + rl_up=$(get_device_field "$devices" "$ip" "rate_limit_kbit_up") + shape_up=$(get_device_field "$devices" "$ip" "shape_kbit_up") local status_line="" [ "$blocked" = "true" ] || [ "$blocked" = "1" ] && status_line="${status_line}🚫 Internet blocked\n" [ "$wifi_blocked" = "true" ] || [ "$wifi_blocked" = "1" ] && status_line="${status_line}📵 WiFi blocked\n" - [ "${rl_kbit:-0}" -gt 0 ] 2>/dev/null && status_line="${status_line}⚡ Limiter: ${rl_kbit} kbit/s\n" - [ "${shape_kbit:-0}" -gt 0 ] 2>/dev/null && status_line="${status_line}🔧 Shaper: ${shape_kbit} kbit/s\n" + [ "${rl_kbit:-0}" -gt 0 ] 2>/dev/null && status_line="${status_line}⚡ Limiter: $(tg_ceiling "$rl_kbit" "$rl_up")\n" + [ "${shape_kbit:-0}" -gt 0 ] 2>/dev/null && status_line="${status_line}🔧 Shaper: $(tg_ceiling "$shape_kbit" "$shape_up")\n" [ -z "$status_line" ] && status_line="✅ No restrictions\n" local text diff --git a/luci-app-vantage/Makefile b/luci-app-vantage/Makefile index dd48c59bc..4006ef24e 100644 --- a/luci-app-vantage/Makefile +++ b/luci-app-vantage/Makefile @@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-vantage -PKG_VERSION:=1.0.16 -PKG_RELEASE:=30 +PKG_VERSION:=1.0.17 +PKG_RELEASE:=31 PKG_LICENSE:=GPL-3.0-or-later LUCI_TITLE:=Vantage dashboard diff --git a/luci-app-vantage/htdocs/luci-static/resources/vantage/app.css b/luci-app-vantage/htdocs/luci-static/resources/vantage/app.css index 6222eb043..d896170aa 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/vantage/app.css +++ b/luci-app-vantage/htdocs/luci-static/resources/vantage/app.css @@ -584,16 +584,21 @@ h2, h3{ --vt-oc: var(--vt-ok); background: color-mix(in oklab, var(--vt-oc) 16%, transparent); } -/* the ring pulses only while something needs attention */ +/* the ring always pulses, or it reads as stuck: slowly and softly while + all is fine, at the full rate when something needs attention */ .vt-app .vt-orb::after { content: ""; position: absolute; inset: 0; border-radius: 50%; border: 2px solid var(--vt-oc); opacity: .35; + animation: vt-ring-soft 5s ease-out infinite; } .vt-app .vt-orb-warn::after, .vt-app .vt-orb-err::after { animation: vt-ring 2.6s ease-out infinite; } +/* paused (overview.js setMotion): the ring stands still */ +.vt-app.vt-still .vt-orb::after { animation: none; } .vt-app .vt-orb-core { width: 14px; height: 14px; border-radius: 50%; background: var(--vt-oc); box-shadow: 0 0 0 4px color-mix(in oklab, var(--vt-oc) 22%, transparent); } .vt-app .vt-orb-warn { --vt-oc: var(--vt-warn); } .vt-app .vt-orb-err { --vt-oc: var(--vt-err); } @keyframes vt-ring { 0% { transform: scale(.7); opacity: .5; } 100% { transform: scale(1.35); opacity: 0; } } +@keyframes vt-ring-soft { 0% { transform: scale(.85); opacity: .35; } 100% { transform: scale(1.3); opacity: 0; } } .vt-app .vt-head-text { min-width: 0; flex: 1; } .vt-app .vt-headline { @@ -610,8 +615,8 @@ h2, h3{ } .vt-app .vt-live-beat { position: relative; width: 8px; height: 8px; border-radius: 50%; background: var(--vt-beat-c, var(--vt-ok)); } /* the beat is a ring that scales and fades (compositor only; an animated - box-shadow repainted every frame), only while reconnecting: a live page - keeps a still dot. It sits behind the dot (z-index -1 in the pill's + box-shadow repainted every frame): slowly while live, at the full rate + while reconnecting, not at all while paused. It sits behind the dot (z-index -1 in the pill's stacking context) so the dot keeps its colour, and it is transparent unless the animation runs: nothing shows without motion. */ .vt-app .vt-live-beat::after { @@ -621,8 +626,10 @@ h2, h3{ } .vt-app .vt-live-paused .vt-live-beat { --vt-beat-c: var(--vt-text-3); } .vt-app .vt-live-err .vt-live-beat { --vt-beat-c: var(--vt-warn); } +.vt-app .vt-live-ok .vt-live-beat::after { animation: vt-beat-soft 5s ease-out infinite; } .vt-app .vt-live-err .vt-live-beat::after { animation: vt-beat 2s ease-out infinite; } @keyframes vt-beat { 0% { transform: scale(1); opacity: 1; } 70%, 100% { transform: scale(2.75); opacity: 0; } } +@keyframes vt-beat-soft { 0% { transform: scale(1); opacity: .6; } 70%, 100% { transform: scale(2.2); opacity: 0; } } .vt-app .vt-health { display: grid; gap: 10px; margin-bottom: var(--vt-sp-4); diff --git a/luci-app-vantage/htdocs/luci-static/resources/vantage/backdrop.js b/luci-app-vantage/htdocs/luci-static/resources/vantage/backdrop.js index 0acea2092..acb6501d1 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/vantage/backdrop.js +++ b/luci-app-vantage/htdocs/luci-static/resources/vantage/backdrop.js @@ -235,7 +235,7 @@ function mount(host, band, style) { var cv = document.createElement('canvas'), ctx = cv.getContext && cv.getContext('2d'); var env = { w: 0, h: 0, box: { t: 0, b: 0 }, origin: { x: 0, y: 0 }, count: 2, speed: packetSpeed(0), share: 0.7, frame: frameMs(0), colour: '#7a9a3a', muted: '#8a9099' }; var down = null, up = null, originEl = null; - var scene = null, cur = 'none', raf = 0, timer = 0, last = 0, dpr = 1, inView = true, hidden = false, still = false, mq = null; + var scene = null, cur = 'none', raf = 0, timer = 0, last = 0, dpr = 1, inView = true, hidden = false, still = false, paused = false, mq = null; var focused = typeof document.hasFocus === 'function' ? document.hasFocus() : true; var ro = null, io = null, onMq = null, stillRated = false, mo = null, scheme = null, onScheme = null; @@ -339,7 +339,7 @@ function mount(host, band, style) { } function again() { timer = 0; if (running() && !raf) raf = requestAnimationFrame(tick); } - function running() { return !!scene && !still && !hidden && focused && inView && usable(); } + function running() { return !!scene && !still && !paused && !hidden && focused && inView && usable(); } function halt() { if (raf) cancelAnimationFrame(raf); if (timer) clearTimeout(timer); @@ -407,6 +407,8 @@ function mount(host, band, style) { run(); }, running: running, + /* the page's refresh is paused: the last frame stays */ + pause: function(on) { paused = !!on; run(); }, stop: function() { halt(); scene = null; if (ro) ro.disconnect(); diff --git a/luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js b/luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js index 4e9307d51..99c53d5fd 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js +++ b/luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js @@ -31,6 +31,7 @@ var GONE_KEEP_MS = 5 * 60 * 1000; /* disconnected stations stay listed */ var TALKERS = 3; /* top talkers shown; the tile keeps room for all */ var SWITCH_MS = 30 * 1000; /* LuCI runs swconfig for each switch's link state: at most this often */ var STORE_KEY = 'vantage.hist.v1'; +var VERSION = '1.0.17'; /* this package's, as its Makefile has it (tests/version.test.js) */ var SVGNS = 'http://www.w3.org/2000/svg'; var HOSTAPD_OBJ = /^[A-Za-z0-9_.-]{1,64}$/; @@ -458,8 +459,17 @@ function spanShort(ms) { return s >= 60 ? _('%d min', 'vantage').format(Math.floor(s / 60)) : _('%d s', 'vantage').format(s); } +/* the history belongs to one login: the next one in this tab starts empty, + under any theme. Vantage's login page also deletes it (login.js). */ +function storeOwner() { + return String(L.env.sessionid || '').slice(-8); +} + function readStore() { - try { return JSON.parse(window.sessionStorage.getItem(STORE_KEY) || 'null'); } catch (e) { return null; } + try { + var v = JSON.parse(window.sessionStorage.getItem(STORE_KEY) || 'null'); + return v && (v.sid || '') === storeOwner() ? v : null; + } catch (e) { return null; } } function writeStore(v) { @@ -901,7 +911,7 @@ return view.extend({ Object.keys(st.clientHist).slice(0, 32).forEach(function(mac) { keepClients[mac] = st.clientHist[mac].slice(-60).filter(function(p) { return p.every(function(v) { return isFinite(v); }); }); }); - writeStore({ net: st.hist.net, cpu: st.hist.cpu, mem: st.hist.mem, clients: keepClients }); + writeStore({ sid: storeOwner(), net: st.hist.net, cpu: st.hist.cpu, mem: st.hist.mem, clients: keepClients }); this.stickyGen(m); m.clients.forEach(function(c) { c.exp = insight.experience(c); c.firstSeen = p.state.firstSeen[c.mac]; c.isNew = !!p.isNew[c.mac]; }); @@ -1113,9 +1123,13 @@ return view.extend({ poll.add(L.bind(this.refresh, this), POLL_S); poll.add(L.bind(this.refreshFast, this), FAST_S); document.addEventListener('visibilitychange', function() { - if (!document.hidden && self.st.paused) self.refresh(); + if (!document.hidden && self.st.paused && poll.active()) self.refresh(); else self.paintLive(); }); + /* LuCI's refresh paused or resumed from its indicator; on resume + CPU starts over, rather than read as the average over the pause */ + document.addEventListener('poll-stop', function() { window.setTimeout(function() { self.paintLive(); }, 0); }); + document.addEventListener('poll-start', function() { self.st.stat = null; self.paintLive(); }); document.addEventListener('keydown', L.bind(this.handleKey, this)); window.setInterval(function() { self.paintLive(); }, 1000); if (window.ResizeObserver) { @@ -1668,6 +1682,9 @@ return view.extend({ paintHead: function() { var s = this.st.summary, clients = this.m.clients.length; this.el.orb.className = 'vt-orb vt-orb-' + s.level; + /* the Vantage theme's refresh dot pulses fast in the same colour + while something needs attention (vantage.css) */ + document.documentElement.setAttribute('data-vt-alert', s.level === 'warn' || s.level === 'err' ? s.level : ''); txt(this.el.headline, s.headline); txt(this.el.subline, this.identity(this.m.device).concat( this.m.wired ? [] : [ clients === 1 ? _('1 client') : _('%d clients').format(clients) ]).join(' · ')); @@ -1688,15 +1705,36 @@ return view.extend({ paintLive: function() { if (!this.el || !this.el.live) return; var st = this.st, state, label; - if (st.paused || document.hidden) { state = 'paused'; label = _('Paused while hidden'); } + /* LuCI's own refresh can be paused (its indicator in the header) */ + var stopped = typeof poll.active === 'function' && !poll.active(); + if (st.paused || document.hidden || stopped) { state = 'paused'; label = stopped && !document.hidden ? _('Paused') : _('Paused while hidden'); } else if (st.lastErr) { state = 'err'; label = _('Reconnecting…', 'vantage'); } else { state = 'ok'; label = _('Live') + ' · ' + fmt.ago(Date.now() - st.lastOk); } this.el.live.className = 'vt-livepill vt-live-' + state; + /* the Vantage theme's refresh dot pulses fast and amber while this + reconnects (vantage.css) */ + document.documentElement.setAttribute('data-vt-live', state); /* the Vantage theme's poll indicator already says the page is - live: then this pill shows only when it is not */ - this.el.live.hidden = state === 'ok' && vantageTheme(); + live, or that its refresh is paused: then this pill shows only + when neither */ + this.el.live.hidden = (state === 'ok' || stopped) && vantageTheme(); this.el.live.setAttribute('title', label); txt(this.el.liveText, label); + this.setMotion(state !== 'paused'); + }, + + /* Nothing moves while the page is paused: the status circle's ring + (app.css, .vt-still), the flow dots stay where they are and the + backdrop keeps its last frame. */ + setMotion: function(on) { + if (this.motionOn === on) return; + this.motionOn = on; + if (this.el && this.el.root) this.el.root.classList.toggle('vt-still', !on); + var map = this.wireMap || {}; + Object.keys(map).forEach(function(k) { + map[k].anims.forEach(function(a) { if (on) a.play(); else a.pause(); }); + }); + if (this.backdrop) this.backdrop.pause(!on); }, /* ----------------------------------------------------------- health */ @@ -2302,6 +2340,7 @@ return view.extend({ /* every dot takes the whole trip, started i/n of the way along */ var a = dot.animate(wires.keyframes(g.samples), { duration: dur, delay: -dur * i / n, iterations: Infinity, easing: 'linear' }); a.playbackRate = rate; + if (this.motionOn === false) a.pause(); g.dots.push(dot); g.anims.push(a); } @@ -2428,7 +2467,8 @@ return view.extend({ })); patch(el.fw, [ E('span', {}, [ d.firmware || '' ]), - d.kernel ? E('span', { 'class': 'vt-hint' }, [ _('Kernel %s').format(d.kernel) ]) : '' + d.kernel ? E('span', { 'class': 'vt-hint' }, [ _('Kernel %s').format(d.kernel) ]) : '', + E('span', { 'class': 'vt-hint' }, [ 'Vantage ' + VERSION ]) ]); }, diff --git a/luci-app-vantage/po/templates/vantage.pot b/luci-app-vantage/po/templates/vantage.pot index 933ed12e8..0ba7940e9 100644 --- a/luci-app-vantage/po/templates/vantage.pot +++ b/luci-app-vantage/po/templates/vantage.pot @@ -1,7 +1,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3574 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3614 msgid "%d MHz (%d–%d MHz)" msgstr "" @@ -29,19 +29,19 @@ msgid_plural "%d SSIDs · %d idle" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1673 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2143 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2694 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1690 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2181 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 msgid "%d clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3031 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3071 msgid "%d connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2170 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3030 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2208 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2212 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3070 msgid "%d devices" msgstr "" @@ -56,22 +56,22 @@ msgid_plural "%d measured clients are above %s" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:458 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:459 msgctxt "vantage" msgid "%d min" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:118 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:452 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:453 msgctxt "vantage" msgid "%d min ago" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3029 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3069 msgid "%d of %d" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1574 msgid "%d of %d columns" msgstr "" @@ -101,17 +101,17 @@ msgid_plural "%d radios up" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2686 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 msgid "%d radios" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:458 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:459 msgctxt "vantage" msgid "%d s" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:117 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:452 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:453 msgctxt "vantage" msgid "%d s ago" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "%d weak" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2705 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2745 msgid "%d–%d MHz of the %d–%d MHz band" msgstr "" @@ -143,7 +143,7 @@ msgstr "" msgid "%s (IPv%d)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3396 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 msgid "%s (new this session)" msgstr "" @@ -154,10 +154,10 @@ msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:166 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:103 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2712 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3128 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3567 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2752 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2766 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3168 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 msgid "%s MHz" msgstr "" @@ -176,13 +176,13 @@ msgid "%s at %s; below %s roaming and throughput suffer" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:83 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2387 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2426 msgctxt "vantage" msgid "%s available" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2732 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3575 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2772 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 msgid "%s dBm" msgstr "" @@ -194,13 +194,13 @@ msgstr "" msgid "%s device on a newer radio; uses more airtime per byte" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3601 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3641 msgid "%s error" msgid_plural "%s errors" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3363 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3403 msgid "%s experience" msgstr "" @@ -216,11 +216,11 @@ msgstr "" msgid "%s has no carrier: cable unplugged or switch port down" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1526 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1540 msgid "%s hidden" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3645 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3685 msgid "%s in · %s out" msgstr "" @@ -236,7 +236,7 @@ msgstr "" msgid "%s is in no zone and accepts every connection" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1519 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1533 msgid "%s is narrower" msgstr "" @@ -244,17 +244,17 @@ msgstr "" msgid "%s is not up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3087 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3127 msgid "" "%s is shared by %d devices (a switch or another access point behind it); its " "%s link is not theirs" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3086 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3126 msgid "%s is shared by %d devices behind the switch" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1522 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1536 msgid "%s is wider" msgstr "" @@ -270,23 +270,23 @@ msgstr "" msgid "%s may open the router's admin" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1641 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1655 msgid "%s moved" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1516 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1530 msgid "%s moved down" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1507 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1521 msgid "%s moved left" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1510 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1524 msgid "%s moved right" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1513 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1527 msgid "%s moved up" msgstr "" @@ -299,9 +299,9 @@ msgid "%s negotiated only %d Mbit/s; a cable pair or port may be faulty" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:84 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2388 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2417 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3671 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2427 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2456 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3711 msgid "%s of %s" msgstr "" @@ -322,21 +322,21 @@ msgstr "" msgid "%s of frames to the device fail; interference likely" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3669 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3709 msgid "%s over %d core" msgid_plural "%s over %d cores" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2481 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2521 msgid "%s radio" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3401 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3441 msgid "%s sent · %s retried · %s failed" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1566 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1580 msgid "%s shown" msgstr "" @@ -352,11 +352,11 @@ msgstr "" msgid "%s used" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2425 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2464 msgid "%s used of %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3084 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3124 msgid "%s · %d devices" msgstr "" @@ -364,7 +364,7 @@ msgstr "" msgid "%s · %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3393 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 msgid "%s · channel %d · %d MHz" msgstr "" @@ -380,27 +380,27 @@ msgstr "" msgid "%s: no carrier" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3575 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 msgid "(configured %d dBm, limited by regulatory rules)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2142 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3220 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2180 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 msgid "(hidden)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1673 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2143 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2694 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1690 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2181 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 msgid "1 client" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3031 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3071 msgid "1 connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3030 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2212 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3070 msgid "1 device" msgstr "" @@ -408,7 +408,7 @@ msgstr "" msgid "1 older device (Wi-Fi 4 or earlier) slows airtime" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2686 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 msgid "1 radio" msgstr "" @@ -436,20 +436,20 @@ msgstr "" msgid "60 GHz" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2894 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2934 msgid "Active" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3405 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3437 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 msgid "Address type" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3634 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3674 msgid "Addresses" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2774 msgid "Airtime" msgstr "" @@ -458,8 +458,8 @@ msgctxt "vantage" msgid "Alias" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2885 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2891 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2925 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2931 msgid "All" msgstr "" @@ -488,7 +488,7 @@ msgstr "" msgid "Busiest radio: %s of Wi-Fi traffic" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2352 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2391 msgid "Busy share of each CPU core" msgstr "" @@ -504,8 +504,8 @@ msgstr[1] "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:71 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:72 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2345 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3669 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2384 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3709 msgctxt "vantage" msgid "CPU" msgstr "" @@ -514,78 +514,78 @@ msgstr "" msgid "Cache (reclaimable)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3510 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3550 msgid "Cancel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 msgctxt "vantage" msgid "Capabilities" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 msgid "Carrier" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3574 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3614 msgid "Centre frequency" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2725 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2765 msgid "Ch %d" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2123 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2693 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2161 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2733 msgid "Ch %d · %d MHz" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3567 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 msgid "Channel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2123 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2161 msgid "Channel —" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2758 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2798 msgctxt "vantage" msgid "Clear filter" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1203 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2731 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2776 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2777 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2771 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2816 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2817 msgid "Clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3581 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3621 msgid "Clients on this radio" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3237 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3277 msgid "Close" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3143 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3183 msgid "Connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3113 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 msgid "Connected after you opened this page" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3394 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3434 msgid "Connected for" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3391 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3422 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3462 msgid "Connection" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2379 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2418 msgid "Core %d: %s" msgstr "" @@ -593,19 +593,19 @@ msgstr "" msgid "Could not read the firewall configuration" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3493 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3533 msgid "Could not save the name (no permission or the device refused it)." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1403 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1417 msgid "Could not save this for every browser. Try again." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3642 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3682 msgid "Counters since boot" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3579 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3619 msgid "Country" msgstr "" @@ -614,13 +614,13 @@ msgid "" "Custom rule files are configured (%s); rules in them are not listed here." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1662 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1676 msgid "Customize" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1470 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1471 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1661 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1484 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1485 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1675 msgid "Customize the dashboard" msgstr "" @@ -628,16 +628,16 @@ msgstr "" msgid "DHCP" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3450 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3490 msgid "DHCP hostname" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3640 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3680 msgid "DNS" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2054 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2092 msgid "DNS %s" msgstr "" @@ -646,113 +646,113 @@ msgstr "" msgid "Dashboard" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2966 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3058 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3660 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3098 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3700 msgid "Device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3517 msgid "Device name" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3506 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3546 msgid "Device type" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3044 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3084 msgid "" "Devices on the Ethernet ports appear here once they send traffic; the bridge " "forgets quiet ones after about five minutes." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2124 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2695 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2720 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2162 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2735 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 msgid "Disabled" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3357 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3397 msgid "Disconnected %s; shown from the last sample." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1485 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1499 msgctxt "vantage" msgid "Done" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:45 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2124 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2695 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2720 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2162 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2735 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 msgctxt "vantage" msgid "Down" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2458 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2553 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2628 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2498 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2593 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2668 msgid "Download" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:377 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:378 msgid "Download (to clients)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3399 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3439 msgctxt "vantage" msgid "Downloaded" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1547 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1561 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for medium " "screens in every browser." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1548 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1562 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for narrow " "screens in every browser." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1546 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for wide screens " "in every browser." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1547 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1561 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for " "medium screens." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1548 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1562 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for " "narrow screens." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1546 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for wide " "screens." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1498 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 msgid "Drag to move" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3645 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3685 msgctxt "vantage" msgid "Dropped" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3199 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 msgid "Edit" msgstr "" @@ -760,7 +760,7 @@ msgstr "" msgid "Enhanced Open (OWE)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1725 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1763 msgid "Error" msgstr "" @@ -774,8 +774,8 @@ msgctxt "vantage" msgid "Excellent" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3137 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3177 msgid "Experience" msgstr "" @@ -793,20 +793,20 @@ msgstr "" msgid "Fair signal %s; lower rates at range" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2755 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2956 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2795 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2996 msgid "Filter by name, address, SSID…" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2956 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2996 msgid "Filter by name, address, port…" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2756 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2796 msgid "Filter clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3663 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3703 msgctxt "vantage" msgid "Firmware" msgstr "" @@ -819,7 +819,7 @@ msgstr "" msgid "Forwarding is accepted by default" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3401 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3441 msgid "Frames to device" msgstr "" @@ -828,15 +828,15 @@ msgctxt "vantage" msgid "Free" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3386 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3426 msgid "From device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3126 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3166 msgid "From device: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3621 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 msgid "From network" msgstr "" @@ -846,9 +846,9 @@ msgid "" "files are not shown." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2052 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3078 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3637 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2090 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3118 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3677 msgid "Gateway" msgstr "" @@ -861,7 +861,7 @@ msgstr "" msgid "General Settings" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3387 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 msgctxt "vantage" msgid "Generation" msgstr "" @@ -871,13 +871,13 @@ msgctxt "vantage" msgid "GiB" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3405 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3437 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 msgid "Globally unique" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3405 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3437 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 msgid "Globally unique · %s" msgstr "" @@ -895,7 +895,7 @@ msgstr "" msgid "Good signal %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 msgid "Grid packets" msgstr "" @@ -911,36 +911,36 @@ msgstr "" msgid "Half duplex" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1099 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1109 msgctxt "vantage" msgid "Health checks" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1563 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3220 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1577 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 msgctxt "vantage" msgid "Hidden" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1525 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1539 msgid "Hide %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3406 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3438 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3446 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3478 msgid "IP addresses" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3635 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3675 msgid "IPv4" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3636 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3676 msgid "IPv6" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3403 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3435 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3443 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3475 msgid "Identity" msgstr "" @@ -948,7 +948,7 @@ msgstr "" msgid "In no zone: the default policies apply." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3632 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3672 msgid "In the tunnel" msgstr "" @@ -962,21 +962,21 @@ msgctxt "vantage" msgid "Input" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2102 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2140 msgid "Interface" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3629 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3669 msgid "Interface up for" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3420 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3619 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3460 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3647 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 msgid "Interfaces" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2052 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2090 msgid "Internet" msgstr "" @@ -1002,11 +1002,11 @@ msgid "" "itself." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3664 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3704 msgid "Kernel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2470 msgid "Kernel %s" msgstr "" @@ -1015,58 +1015,58 @@ msgctxt "vantage" msgid "KiB" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2770 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2810 msgid "Kind of client" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3395 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3435 msgctxt "vantage" msgid "Last activity" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2967 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3102 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3007 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3142 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3473 msgid "Last heard" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1483 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1497 msgid "Layout reset" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3112 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3152 msgid "Left %s" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3114 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3154 msgctxt "vantage" msgid "Legacy" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2966 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3082 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3384 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3122 #: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3424 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3625 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3665 msgctxt "vantage" msgid "Link" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3125 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3165 msgid "Link rate" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1693 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2966 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3093 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3130 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1712 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3133 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3170 msgid "Live" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3668 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3708 msgid "Load" msgstr "" @@ -1082,24 +1082,24 @@ msgid_plural "Load %s · %d cores" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3670 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3710 msgctxt "vantage" msgid "Load average" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2333 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2372 msgid "Load average over 1, 5 and 15 minutes" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2369 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2408 msgid "Load avg %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3706 msgid "Local time" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1362 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1376 msgid "Log in again to save this for every browser." msgstr "" @@ -1115,8 +1115,8 @@ msgstr "" msgid "MAC" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3404 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3444 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3476 msgid "MAC address" msgstr "" @@ -1124,11 +1124,11 @@ msgstr "" msgid "MCS %d" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1518 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1532 msgid "Make %s narrower" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1521 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1535 msgid "Make %s wider" msgstr "" @@ -1145,11 +1145,11 @@ msgid "Measuring…" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:83 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2356 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2395 msgid "Memory" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3671 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3711 msgid "Memory in use" msgstr "" @@ -1158,63 +1158,63 @@ msgctxt "vantage" msgid "MiB" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1417 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 msgid "Mirrored" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1418 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1432 msgid "Mirrored, scale per direction" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3573 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3613 msgid "Mode" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3701 msgid "Model" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1515 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1529 msgid "Move %s down" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1506 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1520 msgid "Move %s left" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1509 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1523 msgid "Move %s right" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1526 msgid "Move %s up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1498 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 msgid "Move %s: drag, or use the arrow keys" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3505 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 msgid "Name" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:134 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3585 msgid "Name contains invisible or control characters" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3407 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3439 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3447 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3479 msgid "Name from" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3063 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3103 msgid "Name from: %s" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:132 #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:137 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3546 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Name is longer than %d characters" msgstr "" @@ -1222,27 +1222,27 @@ msgstr "" msgid "Name must be text" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3348 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3417 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3457 msgid "Name this device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2966 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3092 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3122 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3392 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3132 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3162 #: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3432 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3472 msgid "Network" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1203 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1839 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1840 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1877 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1878 msgid "Network path" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1450 msgid "Network path background" msgstr "" @@ -1250,13 +1250,13 @@ msgstr "" msgid "Networks: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2896 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3113 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2936 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 msgctxt "vantage" msgid "New" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1999 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2037 msgid "No SSIDs" msgstr "" @@ -1264,24 +1264,24 @@ msgstr "" msgid "No clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3046 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3086 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 msgid "No clients connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3174 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3214 msgid "No clients connected." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3037 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3077 msgid "No clients in this view" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3037 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3077 msgid "No clients match “%s”" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2053 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2091 msgctxt "vantage" msgid "No default route" msgstr "" @@ -1290,7 +1290,7 @@ msgstr "" msgid "No interface with a route" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3611 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3651 msgid "No interface with a route is up." msgstr "" @@ -1299,7 +1299,7 @@ msgid "No internet-facing zone found" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:47 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 msgid "No link" msgstr "" @@ -1307,7 +1307,7 @@ msgstr "" msgid "No network interface with a route is up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1980 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2018 msgid "No other interfaces are up" msgstr "" @@ -1317,7 +1317,7 @@ msgid "No problems detected" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2003 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2041 msgid "No radios reported" msgstr "" @@ -1334,16 +1334,16 @@ msgstr "" msgid "No stations are associated right now" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3043 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3083 msgid "No wired devices heard" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3208 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3248 msgctxt "vantage" msgid "No wireless networks configured." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2700 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2740 msgid "No wireless radios are reported by this device." msgstr "" @@ -1358,39 +1358,39 @@ msgstr "" msgid "No zones are configured." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3174 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3214 msgid "Nobody is moving data right now." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2733 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2773 msgid "Noise" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3389 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 msgid "Noise / SNR" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3577 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3578 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3617 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3618 msgid "Noise floor" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 msgid "None" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:150 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3544 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3584 msgid "Not a station MAC address" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3339 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3379 msgid "Not connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3094 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3134 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3469 msgid "Not counted per device on a shared port" msgstr "" @@ -1398,7 +1398,7 @@ msgstr "" msgid "Not in effect" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2406 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2445 msgid "Not reported" msgstr "" @@ -1406,7 +1406,7 @@ msgstr "" msgid "Not reported by the driver" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3453 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3493 msgid "Nothing better known" msgstr "" @@ -1427,7 +1427,7 @@ msgstr "" msgid "Older %s device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3114 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3154 msgid "Older Wi-Fi generation than the radio; uses more airtime" msgstr "" @@ -1435,7 +1435,7 @@ msgstr "" msgid "On this router" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 msgctxt "vantage" msgid "Online" msgstr "" @@ -1452,7 +1452,7 @@ msgctxt "vantage" msgid "Open" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3012 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3052 msgid "Open details of %s" msgstr "" @@ -1478,11 +1478,11 @@ msgid "" "new rules: what is open is unknown." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1415 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1429 msgid "Overlaid" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1416 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1430 msgid "Overlaid, log scale" msgstr "" @@ -1490,11 +1490,15 @@ msgstr "" msgid "Overview" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 msgid "PMF" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1691 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1710 +msgid "Paused" +msgstr "" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1710 msgid "Paused while hidden" msgstr "" @@ -1508,7 +1512,7 @@ msgid "" "on to your network: what every router lets in." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3702 msgctxt "vantage" msgid "Platform" msgstr "" @@ -1518,7 +1522,7 @@ msgctxt "vantage" msgid "Poor" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3423 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3463 msgid "Port" msgstr "" @@ -1526,11 +1530,11 @@ msgstr "" msgid "Port %d" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3087 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3127 msgid "Port %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2167 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2205 msgid "Port total: %s" msgstr "" @@ -1538,11 +1542,11 @@ msgstr "" msgid "Private" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3405 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 msgid "Private Wi-Fi address (randomised by the device)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3437 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 msgid "Private address (randomised by the device)" msgstr "" @@ -1550,26 +1554,26 @@ msgstr "" msgid "Private device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3699 msgid "Processes" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3628 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3668 msgid "Protocol" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2765 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2767 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2805 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2807 msgid "Quick filters" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3393 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3571 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3611 msgctxt "vantage" msgid "Radio" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2721 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2761 msgid "Radio details" msgstr "" @@ -1581,58 +1585,58 @@ msgstr "" msgid "Radio is enabled but not up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2745 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3565 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2785 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3605 msgid "Radio settings" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1203 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2673 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2675 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2713 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2715 msgid "Radios" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2054 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2092 msgid "Reachability not probed" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3079 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 msgid "Reached through the uplink port %s, not connected to this device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3619 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 msgid "Realtime graphs" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3643 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3683 msgctxt "vantage" msgid "Received" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1692 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1711 msgctxt "vantage" msgid "Reconnecting…" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2912 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2952 msgid "Remove filter: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3511 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3551 msgid "Remove name" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3348 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3417 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3457 msgctxt "vantage" msgid "Rename" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1484 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1498 msgid "Reset" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3448 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3488 msgid "Reverse DNS of its address" msgstr "" @@ -1640,7 +1644,7 @@ msgstr "" msgid "Root (overlay)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3639 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3679 msgid "Route metric" msgstr "" @@ -1652,20 +1656,20 @@ msgstr "" msgid "SSH (port 22)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3503 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3543 msgid "Save" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3396 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 msgid "Seen since" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3644 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3684 msgctxt "vantage" msgid "Sent" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1419 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1433 msgid "Separate lanes" msgstr "" @@ -1673,57 +1677,57 @@ msgstr "" msgid "Settings to check" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3424 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 msgid "Shared by %d devices" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3083 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3123 msgid "Shared port" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1565 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1579 msgid "Show %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3038 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3078 msgid "Show all clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2342 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2381 msgid "Show or hide system details" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1840 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1878 msgid "Show or hide the network path" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2676 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2716 msgid "Show or hide the radio details" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2461 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2501 msgid "Show or hide the throughput chart" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3199 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 msgid "Show or hide the wireless networks" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2141 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2179 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3257 msgid "Show the clients of %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2167 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2205 msgid "Show the devices on %s" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:119 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:120 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:128 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3372 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3159 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3412 msgid "Signal" msgstr "" @@ -1731,7 +1735,7 @@ msgstr "" msgid "Signal not reported" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3627 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3667 msgctxt "vantage" msgid "Speed" msgstr "" @@ -1742,24 +1746,24 @@ msgid_plural "Standard housekeeping: %d rules" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 msgid "Starfield" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3047 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3087 msgid "Stations appear here as soon as they associate with one of the SSIDs." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 msgid "Status" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:93 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2359 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2398 msgid "Storage" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3512 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3552 msgid "Stored on this device in /etc/config/vantage" msgstr "" @@ -1775,16 +1779,16 @@ msgstr "" msgid "Strong signal, %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2416 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2455 msgctxt "vantage" msgid "Swap" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3467 msgid "Switch ports" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:390 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:391 msgid "Switch ports of VLAN %d on %s: %s" msgstr "" @@ -1792,13 +1796,13 @@ msgstr "" msgid "Switched off" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1204 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2341 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2342 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2380 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2381 msgid "System" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3699 msgid "System settings" msgstr "" @@ -1811,7 +1815,7 @@ msgid "Telnet (port 23)" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:76 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2373 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2412 msgid "Temperature %s" msgstr "" @@ -1819,11 +1823,11 @@ msgstr "" msgid "Temporary (RAM)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2967 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3007 msgid "The bridge forgets a device after about five minutes without traffic" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3041 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3081 msgid "" "The bridges have learned so many addresses that listing them here would " "strain this device." @@ -1836,7 +1840,7 @@ msgid "" "reject in General Settings." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3549 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3589 msgid "The device could not write /etc/config/vantage." msgstr "" @@ -1860,7 +1864,7 @@ msgid "" "an uplink in no zone would be open. Set Input to reject in General Settings." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3451 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3491 msgid "The name the device announces (WPS)" msgstr "" @@ -1872,7 +1876,7 @@ msgstr "" msgid "The only measured client" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3078 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3118 msgid "The router this device sends its traffic to" msgstr "" @@ -1888,7 +1892,7 @@ msgstr "" msgid "The uplinks could not be checked" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2069 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2107 msgid "This access point" msgstr "" @@ -1896,11 +1900,11 @@ msgstr "" msgid "This address family is in no zone: the default policies apply." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2069 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2107 msgid "This device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3548 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3588 msgid "This device already stores %d names; remove some first." msgstr "" @@ -1908,7 +1912,7 @@ msgstr "" msgid "This device reports no radios" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3608 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3648 msgid "This line is down or has no default route now." msgstr "" @@ -1918,7 +1922,7 @@ msgid "" "the firewall pages." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3556 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 msgid "This radio is not reported any more." msgstr "" @@ -1926,23 +1930,23 @@ msgstr "" msgid "This setup is beyond what this overview checks" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3339 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3379 msgid "This station is not associated right now." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1203 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2453 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2455 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3378 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2493 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2495 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3418 msgctxt "vantage" msgid "Throughput" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1424 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1438 msgid "Throughput chart" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2446 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2486 msgid "Throughput per link; arrow keys read the values over time" msgstr "" @@ -1951,38 +1955,38 @@ msgctxt "vantage" msgid "TiB" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3385 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3425 msgid "To device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3099 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3134 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3187 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3139 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3174 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3227 msgid "To device %s, from device %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3126 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3166 msgid "To device: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3622 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 msgid "To network" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3040 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3080 msgid "Too many devices to list" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1204 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3151 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3152 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3191 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3192 msgctxt "vantage" msgid "Top talkers" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3398 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3568 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3438 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3468 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3608 msgid "Traffic" msgstr "" @@ -1998,16 +2002,16 @@ msgid "" "networks. Set Forward to reject in General Settings." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2065 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2103 msgid "Traffic to the internet goes through %s, a tunnel over this line" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3631 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3671 msgid "Tunnel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2732 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3575 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2772 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 msgid "Tx power" msgstr "" @@ -2018,16 +2022,16 @@ msgid "" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:272 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3338 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3378 msgctxt "vantage" msgid "Unknown device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3547 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3587 msgid "Unknown device type" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3556 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 msgid "Unknown radio" msgstr "" @@ -2042,14 +2046,14 @@ msgid "Unnamed rule" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:57 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2720 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 msgctxt "vantage" msgid "Up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2366 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2405 msgid "Up %s" msgstr "" @@ -2058,47 +2062,47 @@ msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:49 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:51 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:57 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2479 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3611 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3651 msgctxt "vantage" msgid "Uplink" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2479 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2480 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2520 msgid "Uplink %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3604 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3644 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3655 msgid "Uplink · %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2459 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2555 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2629 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2499 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2595 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2669 msgid "Upload" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:378 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:379 msgid "Upload (from clients)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3400 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3440 msgctxt "vantage" msgid "Uploaded" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3079 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 msgid "Upstream" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3665 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3705 msgid "Uptime" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3080 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3432 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3120 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3472 msgid "VLAN %d" msgstr "" @@ -2233,11 +2237,11 @@ msgstr "" msgid "WPS" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3408 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3448 msgid "WPS device name" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1725 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1763 msgid "Warning" msgstr "" @@ -2251,7 +2255,7 @@ msgid "Weak" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:157 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2895 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2935 msgid "Weak signal" msgstr "" @@ -2275,27 +2279,27 @@ msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:106 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:108 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2949 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2989 msgid "Wi-Fi" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2011 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2949 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2049 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2989 msgid "Wired" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1204 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3198 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3199 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3238 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 msgctxt "vantage" msgid "Wireless networks" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3358 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3398 msgid "Wireless settings" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3447 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3487 msgid "Your name for this device" msgstr "" @@ -2333,15 +2337,15 @@ msgstr "" msgid "any zone (default policy)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2766 msgid "auto" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3396 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 msgid "before this page opened" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3425 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3465 msgid "behind %s, VLAN %d" msgstr "" @@ -2350,16 +2354,16 @@ msgctxt "vantage" msgid "bit/s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2587 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2627 msgid "collecting · %s of data" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2587 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2627 msgid "collecting · first samples" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:251 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2567 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:252 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2607 msgid "collecting…" msgstr "" @@ -2371,18 +2375,18 @@ msgstr "" msgid "dBm" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1929 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2067 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1967 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2105 msgid "default route" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2067 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2105 msgid "default route via %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:385 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3083 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3424 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:386 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3123 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 msgid "down" msgstr "" @@ -2391,7 +2395,7 @@ msgctxt "vantage" msgid "drop" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3517 msgctxt "vantage" msgid "e.g. Living room TV" msgstr "" @@ -2430,8 +2434,8 @@ msgid "half duplex" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:62 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2087 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3225 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2125 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3265 msgid "idle" msgstr "" @@ -2473,18 +2477,18 @@ msgctxt "vantage" msgid "kbit/s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2351 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2586 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2390 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2626 msgid "last 5 min" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:104 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3128 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3168 msgid "legacy" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:385 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:386 msgid "link up" msgstr "" @@ -2492,45 +2496,45 @@ msgstr "" msgid "mDNS" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3449 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3489 msgid "mDNS announcement" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3380 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3420 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3471 msgid "measuring" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2562 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2602 msgid "measuring…" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2543 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2583 msgctxt "vantage" msgid "no data" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2060 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2098 msgid "no uplink" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3406 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3446 msgid "not known to this AP" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3438 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3478 msgid "not known to this device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3578 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3618 msgid "not reported (driver placeholder %s)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3389 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 msgid "not reported by the driver" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2583 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2623 msgctxt "vantage" msgid "now" msgstr "" @@ -2539,16 +2543,16 @@ msgstr "" msgid "now %s down, %s up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3387 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 msgid "older than the radio (%s)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2560 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2600 msgctxt "vantage" msgid "peak" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2352 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2391 msgid "per core" msgstr "" @@ -2557,11 +2561,11 @@ msgctxt "vantage" msgid "port forward" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3374 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3414 msgid "range %s … %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3621 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 msgid "received on %s" msgstr "" @@ -2574,7 +2578,7 @@ msgstr "" msgid "router port %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3622 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 msgid "sent on %s" msgstr "" @@ -2582,12 +2586,12 @@ msgstr "" msgid "short GI" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3102 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3142 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3473 msgid "static entry" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3426 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3466 msgid "switch port %s" msgstr "" @@ -2599,11 +2603,11 @@ msgstr "" msgid "the covered subnets of zone %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3430 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3470 msgid "the port in total: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3425 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3465 msgid "the port: %s" msgstr "" @@ -2619,7 +2623,7 @@ msgstr "" msgid "traffic rule" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2072 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2110 msgid "up %s" msgstr "" @@ -2636,6 +2640,6 @@ msgstr "" msgid "zones %s and %s if they share a device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2580 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2620 msgid "−%d min" msgstr "" diff --git a/luci-app-vantage/po/zh_Hans/vantage.po b/luci-app-vantage/po/zh_Hans/vantage.po index f2130e23c..9c538b3e5 100644 --- a/luci-app-vantage/po/zh_Hans/vantage.po +++ b/luci-app-vantage/po/zh_Hans/vantage.po @@ -12,7 +12,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3574 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3614 msgid "%d MHz (%d–%d MHz)" msgstr "%d MHz(%d–%d MHz)" @@ -36,19 +36,19 @@ msgid "%d SSID · %d idle" msgid_plural "%d SSIDs · %d idle" msgstr[0] "%d 个 SSID · %d 个空闲" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1673 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2143 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2694 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1690 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2181 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 msgid "%d clients" msgstr "%d 个客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3031 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3071 msgid "%d connected" msgstr "已连接 %d 个" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2170 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3030 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2208 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2212 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3070 msgid "%d devices" msgstr "%d 台设备" @@ -62,22 +62,22 @@ msgid "%d measured client is above %s" msgid_plural "%d measured clients are above %s" msgstr[0] "%d 个已测客户端高于 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:458 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:459 msgctxt "vantage" msgid "%d min" msgstr "%d 分钟" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:118 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:452 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:453 msgctxt "vantage" msgid "%d min ago" msgstr "%d 分钟前" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3029 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3069 msgid "%d of %d" msgstr "%d/%d" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1574 msgid "%d of %d columns" msgstr "%d/%d 列" @@ -104,17 +104,17 @@ msgid "%d radio up" msgid_plural "%d radios up" msgstr[0] "%d 个射频已上线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2686 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 msgid "%d radios" msgstr "%d 个射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:458 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:459 msgctxt "vantage" msgid "%d s" msgstr "%d 秒" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:117 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:452 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:453 msgctxt "vantage" msgid "%d s ago" msgstr "%d 秒前" @@ -128,7 +128,7 @@ msgstr "%d 项需要关注" msgid "%d weak" msgstr "%d 个信号弱" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2705 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2745 msgid "%d–%d MHz of the %d–%d MHz band" msgstr "%d–%d MHz 属于 %d–%d MHz 频段" @@ -146,7 +146,7 @@ msgstr "%s(%s)已启用但未上线" msgid "%s (IPv%d)" msgstr "%s(IPv%d)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3396 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 msgid "%s (new this session)" msgstr "%s(本次新增)" @@ -157,10 +157,10 @@ msgstr "%s Gbit/s" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:166 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:103 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2712 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3128 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3567 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2752 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2766 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3168 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 msgid "%s MHz" msgstr "%s MHz" @@ -179,13 +179,13 @@ msgid "%s at %s; below %s roaming and throughput suffer" msgstr "%s(%s);低于 %s 时漫游和吞吐量会受影响" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:83 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2387 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2426 msgctxt "vantage" msgid "%s available" msgstr "可用 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2732 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3575 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2772 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 msgid "%s dBm" msgstr "%s dBm" @@ -197,12 +197,12 @@ msgstr "%s 设备" msgid "%s device on a newer radio; uses more airtime per byte" msgstr "%s 设备连接在较新的射频上,每字节占用更多空口时间" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3601 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3641 msgid "%s error" msgid_plural "%s errors" msgstr[0] "%s 个错误" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3363 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3403 msgid "%s experience" msgstr "%s 体验" @@ -218,11 +218,11 @@ msgstr "overlay 空闲 %s(已用 %s)" msgid "%s has no carrier: cable unplugged or switch port down" msgstr "%s 无载波:网线未插或交换机端口关闭" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1526 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1540 msgid "%s hidden" msgstr "%s 已隐藏" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3645 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3685 msgid "%s in · %s out" msgstr "%s 入 · %s 出" @@ -238,7 +238,7 @@ msgstr "%s 被转发到 %s" msgid "%s is in no zone and accepts every connection" msgstr "%s 不属于任何区域,接受所有连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1519 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1533 msgid "%s is narrower" msgstr "%s 已变窄" @@ -246,18 +246,18 @@ msgstr "%s 已变窄" msgid "%s is not up" msgstr "%s 未上线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3087 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3127 msgid "" "%s is shared by %d devices (a switch or another access point behind it); its " "%s link is not theirs" msgstr "" "%s 由 %d 台设备共用(其后接有交换机或另一个接入点);%s 的链路不属于这些设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3086 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3126 msgid "%s is shared by %d devices behind the switch" msgstr "%s 由交换机后的 %d 台设备共用" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1522 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1536 msgid "%s is wider" msgstr "%s 已加宽" @@ -273,23 +273,23 @@ msgstr "%s 链路" msgid "%s may open the router's admin" msgstr "%s 可能暴露了路由器管理界面" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1641 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1655 msgid "%s moved" msgstr "%s 已移动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1516 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1530 msgid "%s moved down" msgstr "%s 已下移" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1507 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1521 msgid "%s moved left" msgstr "%s 已左移" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1510 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1524 msgid "%s moved right" msgstr "%s 已右移" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1513 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1527 msgid "%s moved up" msgstr "%s 已上移" @@ -302,9 +302,9 @@ msgid "%s negotiated only %d Mbit/s; a cable pair or port may be faulty" msgstr "%s 仅协商到 %d Mbit/s;网线线对或端口可能有故障" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:84 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2388 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2417 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3671 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2427 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2456 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3711 msgid "%s of %s" msgstr "%s / %s" @@ -325,20 +325,20 @@ msgstr "发往设备的帧失败率:%s" msgid "%s of frames to the device fail; interference likely" msgstr "发往设备的帧失败率:%s,可能存在干扰" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3669 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3709 msgid "%s over %d core" msgid_plural "%s over %d cores" msgstr[0] "%s / %d 核" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2481 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2521 msgid "%s radio" msgstr "%s 射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3401 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3441 msgid "%s sent · %s retried · %s failed" msgstr "发送 %s · 重传 %s · 失败 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1566 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1580 msgid "%s shown" msgstr "%s 已显示" @@ -354,11 +354,11 @@ msgstr "%s 已连接,速率 %s" msgid "%s used" msgstr "已用 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2425 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2464 msgid "%s used of %s" msgstr "已用 %s / 共 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3084 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3124 msgid "%s · %d devices" msgstr "%s · %d 台设备" @@ -366,7 +366,7 @@ msgstr "%s · %d 台设备" msgid "%s · %s" msgstr "%s · %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3393 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 msgid "%s · channel %d · %d MHz" msgstr "%s · 信道 %d · %d MHz" @@ -382,27 +382,27 @@ msgstr "%s · 链路较慢" msgid "%s: no carrier" msgstr "%s:无载波" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3575 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 msgid "(configured %d dBm, limited by regulatory rules)" msgstr "(配置 %d dBm,受管制规则限制)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2142 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3220 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2180 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 msgid "(hidden)" msgstr "(隐藏)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1673 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2143 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2694 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1690 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2181 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 msgid "1 client" msgstr "1 个客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3031 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3071 msgid "1 connected" msgstr "已连接 1 个" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3030 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2212 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3070 msgid "1 device" msgstr "1 台设备" @@ -410,7 +410,7 @@ msgstr "1 台设备" msgid "1 older device (Wi-Fi 4 or earlier) slows airtime" msgstr "1 台旧设备(Wi-Fi 4 或更早)占用更多空口时间" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2686 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 msgid "1 radio" msgstr "1 个射频" @@ -438,20 +438,20 @@ msgstr "6 GHz" msgid "60 GHz" msgstr "60 GHz" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2894 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2934 msgid "Active" msgstr "活跃" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3405 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3437 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 msgid "Address type" msgstr "地址类型" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3634 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3674 msgid "Addresses" msgstr "地址" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2774 msgid "Airtime" msgstr "空口时间" @@ -460,8 +460,8 @@ msgctxt "vantage" msgid "Alias" msgstr "别名" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2885 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2891 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2925 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2931 msgid "All" msgstr "全部" @@ -490,7 +490,7 @@ msgstr "B" msgid "Busiest radio: %s of Wi-Fi traffic" msgstr "最繁忙射频:占 Wi-Fi 流量的 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2352 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2391 msgid "Busy share of each CPU core" msgstr "每个 CPU 核心的繁忙占比" @@ -505,8 +505,8 @@ msgstr[0] "繁忙;负载 %s(%d 核);查看最繁忙进程" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:71 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:72 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2345 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3669 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2384 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3709 msgctxt "vantage" msgid "CPU" msgstr "CPU" @@ -515,78 +515,78 @@ msgstr "CPU" msgid "Cache (reclaimable)" msgstr "缓存(可回收)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3510 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3550 msgid "Cancel" msgstr "取消" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 msgctxt "vantage" msgid "Capabilities" msgstr "能力" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 msgid "Carrier" msgstr "链路状态" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3574 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3614 msgid "Centre frequency" msgstr "中心频率" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2725 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2765 msgid "Ch %d" msgstr "信道 %d" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2123 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2693 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2161 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2733 msgid "Ch %d · %d MHz" msgstr "信道 %d · %d MHz" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3567 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 msgid "Channel" msgstr "信道" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2123 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2161 msgid "Channel —" msgstr "信道 —" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2758 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2798 msgctxt "vantage" msgid "Clear filter" msgstr "清除筛选" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1203 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2731 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2776 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2777 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2771 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2816 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2817 msgid "Clients" msgstr "客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3581 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3621 msgid "Clients on this radio" msgstr "此射频上的客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3237 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3277 msgid "Close" msgstr "关闭" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3143 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3183 msgid "Connected" msgstr "已连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3113 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 msgid "Connected after you opened this page" msgstr "打开本页面后连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3394 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3434 msgid "Connected for" msgstr "已连接时长" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3391 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3422 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3462 msgid "Connection" msgstr "连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2379 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2418 msgid "Core %d: %s" msgstr "核心 %d:%s" @@ -594,19 +594,19 @@ msgstr "核心 %d:%s" msgid "Could not read the firewall configuration" msgstr "无法读取防火墙配置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3493 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3533 msgid "Could not save the name (no permission or the device refused it)." msgstr "无法保存名称(无权限或设备拒绝)。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1403 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1417 msgid "Could not save this for every browser. Try again." msgstr "无法为所有浏览器保存此设置,请重试。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3642 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3682 msgid "Counters since boot" msgstr "自启动以来的计数器" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3579 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3619 msgid "Country" msgstr "国家" @@ -615,13 +615,13 @@ msgid "" "Custom rule files are configured (%s); rules in them are not listed here." msgstr "已配置自定义规则文件(%s);其中的规则不会在此列出。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1662 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1676 msgid "Customize" msgstr "自定义" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1470 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1471 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1661 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1484 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1485 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1675 msgid "Customize the dashboard" msgstr "自定义仪表盘" @@ -629,16 +629,16 @@ msgstr "自定义仪表盘" msgid "DHCP" msgstr "DHCP" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3450 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3490 msgid "DHCP hostname" msgstr "DHCP 主机名" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3640 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3680 msgid "DNS" msgstr "DNS" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2054 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2092 msgid "DNS %s" msgstr "DNS %s" @@ -647,117 +647,117 @@ msgstr "DNS %s" msgid "Dashboard" msgstr "仪表盘" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2966 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3058 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3660 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3098 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3700 msgid "Device" msgstr "设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3517 msgid "Device name" msgstr "设备名" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3506 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3546 msgid "Device type" msgstr "设备类型" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3044 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3084 msgid "" "Devices on the Ethernet ports appear here once they send traffic; the bridge " "forgets quiet ones after about five minutes." msgstr "" "以太网端口上的设备发送流量后会显示在这里;网桥会在约五分钟无流量后忘记它们。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2124 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2695 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2720 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2162 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2735 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 msgid "Disabled" msgstr "已禁用" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3357 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3397 msgid "Disconnected %s; shown from the last sample." msgstr "断开于 %s;显示最后一次采样的数据。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1485 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1499 msgctxt "vantage" msgid "Done" msgstr "完成" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:45 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2124 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2695 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2720 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2162 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2735 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 msgctxt "vantage" msgid "Down" msgstr "已下线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2458 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2553 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2628 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2498 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2593 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2668 msgid "Download" msgstr "下载" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:377 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:378 msgid "Download (to clients)" msgstr "下载(到客户端)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3399 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3439 msgctxt "vantage" msgid "Downloaded" msgstr "已下载" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1547 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1561 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for medium " "screens in every browser." msgstr "" "拖动卡片手柄或使用其按钮移动。点击“完成”后,中屏布局将保存到所有浏览器。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1548 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1562 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for narrow " "screens in every browser." msgstr "" "拖动卡片手柄或使用其按钮移动。点击“完成”后,窄屏布局将保存到所有浏览器。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1546 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for wide screens " "in every browser." msgstr "" "拖动卡片手柄或使用其按钮移动。点击“完成”后,宽屏布局将保存到所有浏览器。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1547 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1561 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for " "medium screens." msgstr "拖动卡片手柄或使用其按钮移动。中屏布局保存在此浏览器中。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1548 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1562 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for " "narrow screens." msgstr "拖动卡片手柄或使用其按钮移动。窄屏布局保存在此浏览器中。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1546 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for wide " "screens." msgstr "拖动卡片手柄或使用其按钮移动。宽屏布局保存在此浏览器中。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1498 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 msgid "Drag to move" msgstr "拖动以移动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3645 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3685 msgctxt "vantage" msgid "Dropped" msgstr "已丢弃" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3199 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 msgid "Edit" msgstr "编辑" @@ -765,7 +765,7 @@ msgstr "编辑" msgid "Enhanced Open (OWE)" msgstr "增强开放 (OWE)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1725 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1763 msgid "Error" msgstr "错误" @@ -779,8 +779,8 @@ msgctxt "vantage" msgid "Excellent" msgstr "极好" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3137 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3177 msgid "Experience" msgstr "体验" @@ -798,20 +798,20 @@ msgstr "信号一般" msgid "Fair signal %s; lower rates at range" msgstr "信号一般 %s;远距离速率较低" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2755 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2956 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2795 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2996 msgid "Filter by name, address, SSID…" msgstr "按名称、地址、SSID…筛选" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2956 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2996 msgid "Filter by name, address, port…" msgstr "按名称、地址、端口…筛选" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2756 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2796 msgid "Filter clients" msgstr "筛选客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3663 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3703 msgctxt "vantage" msgid "Firmware" msgstr "固件" @@ -824,7 +824,7 @@ msgstr "从 %s 转发到 %s" msgid "Forwarding is accepted by default" msgstr "默认接受转发" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3401 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3441 msgid "Frames to device" msgstr "发往设备的帧" @@ -833,15 +833,15 @@ msgctxt "vantage" msgid "Free" msgstr "空闲" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3386 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3426 msgid "From device" msgstr "来自设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3126 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3166 msgid "From device: %s" msgstr "来自设备:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3621 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 msgid "From network" msgstr "来自网络" @@ -851,9 +851,9 @@ msgid "" "files are not shown." msgstr "内容来自防火墙配置。由 UPnP 或自定义规则文件开放的端口不会显示。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2052 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3078 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3637 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2090 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3118 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3677 msgid "Gateway" msgstr "网关" @@ -866,7 +866,7 @@ msgstr "Gbit/s" msgid "General Settings" msgstr "基本设置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3387 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 msgctxt "vantage" msgid "Generation" msgstr "代际" @@ -876,13 +876,13 @@ msgctxt "vantage" msgid "GiB" msgstr "GiB" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3405 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3437 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 msgid "Globally unique" msgstr "全局唯一" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3405 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3437 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 msgid "Globally unique · %s" msgstr "全局唯一 · %s" @@ -900,7 +900,7 @@ msgstr "信号良好" msgid "Good signal %s" msgstr "信号良好 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 msgid "Grid packets" msgstr "网格数据包" @@ -916,36 +916,36 @@ msgstr "HTTPS(端口 443)" msgid "Half duplex" msgstr "半双工" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1099 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1109 msgctxt "vantage" msgid "Health checks" msgstr "健康检查" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1563 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3220 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1577 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 msgctxt "vantage" msgid "Hidden" msgstr "隐藏" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1525 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1539 msgid "Hide %s" msgstr "隐藏 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3406 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3438 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3446 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3478 msgid "IP addresses" msgstr "IP 地址" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3635 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3675 msgid "IPv4" msgstr "IPv4" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3636 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3676 msgid "IPv6" msgstr "IPv6" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3403 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3435 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3443 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3475 msgid "Identity" msgstr "身份" @@ -953,7 +953,7 @@ msgstr "身份" msgid "In no zone: the default policies apply." msgstr "不属于任何区域:适用默认策略。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3632 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3672 msgid "In the tunnel" msgstr "隧道内" @@ -967,21 +967,21 @@ msgctxt "vantage" msgid "Input" msgstr "入站数据" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2102 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2140 msgid "Interface" msgstr "接口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3629 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3669 msgid "Interface up for" msgstr "接口已启用时长" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3420 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3619 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3460 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3647 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 msgid "Interfaces" msgstr "接口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2052 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2090 msgid "Internet" msgstr "互联网" @@ -1011,11 +1011,11 @@ msgstr "" "它将来自互联网上任何地址的 %s 转发到 %s。无法读取接口列表,因此本页无法判断该" "地址是否为路由器本身。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3664 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3704 msgid "Kernel" msgstr "内核" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2470 msgid "Kernel %s" msgstr "内核 %s" @@ -1024,58 +1024,58 @@ msgctxt "vantage" msgid "KiB" msgstr "KiB" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2770 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2810 msgid "Kind of client" msgstr "客户端类型" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3395 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3435 msgctxt "vantage" msgid "Last activity" msgstr "最后活动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2967 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3102 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3007 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3142 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3473 msgid "Last heard" msgstr "最后活动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1483 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1497 msgid "Layout reset" msgstr "布局已重置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3112 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3152 msgid "Left %s" msgstr "离开于 %s" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3114 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3154 msgctxt "vantage" msgid "Legacy" msgstr "旧版" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2966 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3082 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3384 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3122 #: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3424 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3625 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3665 msgctxt "vantage" msgid "Link" msgstr "链路" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3125 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3165 msgid "Link rate" msgstr "链路速率" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1693 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2966 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3093 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3130 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1712 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3133 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3170 msgid "Live" msgstr "实时" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3668 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3708 msgid "Load" msgstr "负载" @@ -1089,24 +1089,24 @@ msgid "Load %s · %d core" msgid_plural "Load %s · %d cores" msgstr[0] "负载 %s · %d 核" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3670 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3710 msgctxt "vantage" msgid "Load average" msgstr "平均负载" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2333 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2372 msgid "Load average over 1, 5 and 15 minutes" msgstr "1、5、15 分钟平均负载" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2369 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2408 msgid "Load avg %s" msgstr "平均负载 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3706 msgid "Local time" msgstr "本地时间" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1362 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1376 msgid "Log in again to save this for every browser." msgstr "重新登录后即可为所有浏览器保存此设置。" @@ -1122,8 +1122,8 @@ msgstr "链路速率低于信号预期" msgid "MAC" msgstr "MAC" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3404 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3444 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3476 msgid "MAC address" msgstr "MAC 地址" @@ -1131,11 +1131,11 @@ msgstr "MAC 地址" msgid "MCS %d" msgstr "MCS %d" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1518 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1532 msgid "Make %s narrower" msgstr "使 %s 变窄" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1521 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1535 msgid "Make %s wider" msgstr "使 %s 加宽" @@ -1152,11 +1152,11 @@ msgid "Measuring…" msgstr "测量中…" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:83 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2356 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2395 msgid "Memory" msgstr "内存" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3671 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3711 msgid "Memory in use" msgstr "已用内存" @@ -1165,63 +1165,63 @@ msgctxt "vantage" msgid "MiB" msgstr "MiB" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1417 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 msgid "Mirrored" msgstr "镜像" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1418 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1432 msgid "Mirrored, scale per direction" msgstr "镜像,每个方向单独刻度" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3573 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3613 msgid "Mode" msgstr "模式" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3701 msgid "Model" msgstr "型号" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1515 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1529 msgid "Move %s down" msgstr "下移 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1506 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1520 msgid "Move %s left" msgstr "左移 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1509 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1523 msgid "Move %s right" msgstr "右移 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1526 msgid "Move %s up" msgstr "上移 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1498 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 msgid "Move %s: drag, or use the arrow keys" msgstr "移动 %s:拖动或使用方向键" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3505 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 msgid "Name" msgstr "名称" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:134 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3585 msgid "Name contains invisible or control characters" msgstr "名称包含不可见或控制字符" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3407 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3439 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3447 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3479 msgid "Name from" msgstr "名称来源" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3063 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3103 msgid "Name from: %s" msgstr "名称来源:%s" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:132 #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:137 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3546 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Name is longer than %d characters" msgstr "名称超过 %d 个字符" @@ -1229,27 +1229,27 @@ msgstr "名称超过 %d 个字符" msgid "Name must be text" msgstr "名称必须是文本" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3348 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3417 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3457 msgid "Name this device" msgstr "命名此设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2966 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3092 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3122 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3392 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3132 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3162 #: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3432 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3472 msgid "Network" msgstr "网络" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1203 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1839 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1840 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1877 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1878 msgid "Network path" msgstr "网络路径" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1450 msgid "Network path background" msgstr "网络路径背景" @@ -1257,13 +1257,13 @@ msgstr "网络路径背景" msgid "Networks: %s" msgstr "网络:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2896 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3113 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2936 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 msgctxt "vantage" msgid "New" msgstr "新增" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1999 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2037 msgid "No SSIDs" msgstr "无 SSID" @@ -1271,24 +1271,24 @@ msgstr "无 SSID" msgid "No clients" msgstr "无客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3046 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3086 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 msgid "No clients connected" msgstr "无客户端连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3174 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3214 msgid "No clients connected." msgstr "没有客户端连接。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3037 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3077 msgid "No clients in this view" msgstr "此视图中没有客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3037 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3077 msgid "No clients match “%s”" msgstr "没有匹配“%s”的客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2053 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2091 msgctxt "vantage" msgid "No default route" msgstr "无默认路由" @@ -1297,7 +1297,7 @@ msgstr "无默认路由" msgid "No interface with a route" msgstr "没有带路由的接口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3611 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3651 msgid "No interface with a route is up." msgstr "没有带路由的接口处于启用状态。" @@ -1306,7 +1306,7 @@ msgid "No internet-facing zone found" msgstr "未找到面向互联网的区域" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:47 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 msgid "No link" msgstr "无链路" @@ -1314,7 +1314,7 @@ msgstr "无链路" msgid "No network interface with a route is up" msgstr "没有带路由的网络接口处于启用状态" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1980 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2018 msgid "No other interfaces are up" msgstr "没有其他接口处于启用状态" @@ -1324,7 +1324,7 @@ msgid "No problems detected" msgstr "未检测到问题" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2003 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2041 msgid "No radios reported" msgstr "未报告射频" @@ -1341,16 +1341,16 @@ msgstr "无信号" msgid "No stations are associated right now" msgstr "当前没有站点关联" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3043 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3083 msgid "No wired devices heard" msgstr "未发现有线设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3208 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3248 msgctxt "vantage" msgid "No wireless networks configured." msgstr "未配置无线网络。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2700 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2740 msgid "No wireless radios are reported by this device." msgstr "此设备未报告任何无线射频。" @@ -1367,39 +1367,39 @@ msgstr "" msgid "No zones are configured." msgstr "尚未配置区域。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3174 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3214 msgid "Nobody is moving data right now." msgstr "当前没有设备在传输数据。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2733 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2773 msgid "Noise" msgstr "噪声" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3389 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 msgid "Noise / SNR" msgstr "噪声 / 信噪比" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3577 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3578 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3617 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3618 msgid "Noise floor" msgstr "底噪" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 msgid "None" msgstr "无" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:150 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3544 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3584 msgid "Not a station MAC address" msgstr "不是站点 MAC 地址" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3339 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3379 msgid "Not connected" msgstr "未连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3094 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3134 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3469 msgid "Not counted per device on a shared port" msgstr "共用端口不按设备统计" @@ -1407,7 +1407,7 @@ msgstr "共用端口不按设备统计" msgid "Not in effect" msgstr "未生效" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2406 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2445 msgid "Not reported" msgstr "未报告" @@ -1415,7 +1415,7 @@ msgstr "未报告" msgid "Not reported by the driver" msgstr "驱动未报告" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3453 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3493 msgid "Nothing better known" msgstr "无更多信息" @@ -1436,7 +1436,7 @@ msgstr "OWE" msgid "Older %s device" msgstr "较旧的 %s 设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3114 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3154 msgid "Older Wi-Fi generation than the radio; uses more airtime" msgstr "比射频支持的 Wi-Fi 代际更旧;占用更多空口时间" @@ -1444,7 +1444,7 @@ msgstr "比射频支持的 Wi-Fi 代际更旧;占用更多空口时间" msgid "On this router" msgstr "在此路由器上" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 msgctxt "vantage" msgid "Online" msgstr "在线" @@ -1460,7 +1460,7 @@ msgctxt "vantage" msgid "Open" msgstr "开放" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3012 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3052 msgid "Open details of %s" msgstr "打开 %s 的详情" @@ -1488,11 +1488,11 @@ msgstr "" "基本设置中的选项 %s 的值被 firewall4 拒绝,因此不会加载新规则:无法确定开放了" "哪些内容。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1415 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1429 msgid "Overlaid" msgstr "叠加" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1416 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1430 msgid "Overlaid, log scale" msgstr "叠加,对数刻度" @@ -1500,11 +1500,15 @@ msgstr "叠加,对数刻度" msgid "Overview" msgstr "概览" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 msgid "PMF" msgstr "PMF" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1691 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1710 +msgid "Paused" +msgstr "已暂停" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1710 msgid "Paused while hidden" msgstr "页面隐藏时暂停" @@ -1520,7 +1524,7 @@ msgstr "" "Ping 和其他控制消息、组播、DHCP 续租以及转发到你网络的 IPsec:每台路由器都会" "放行的流量。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3702 msgctxt "vantage" msgid "Platform" msgstr "平台" @@ -1530,7 +1534,7 @@ msgctxt "vantage" msgid "Poor" msgstr "较差" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3423 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3463 msgid "Port" msgstr "端口" @@ -1538,11 +1542,11 @@ msgstr "端口" msgid "Port %d" msgstr "端口 %d" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3087 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3127 msgid "Port %s" msgstr "端口 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2167 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2205 msgid "Port total: %s" msgstr "端口合计:%s" @@ -1550,11 +1554,11 @@ msgstr "端口合计:%s" msgid "Private" msgstr "私有" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3405 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 msgid "Private Wi-Fi address (randomised by the device)" msgstr "私有 Wi-Fi 地址(设备随机化)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3437 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 msgid "Private address (randomised by the device)" msgstr "私有地址(设备随机化)" @@ -1562,26 +1566,26 @@ msgstr "私有地址(设备随机化)" msgid "Private device" msgstr "私有设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3699 msgid "Processes" msgstr "进程" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3628 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3668 msgid "Protocol" msgstr "协议" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2765 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2767 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2805 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2807 msgid "Quick filters" msgstr "快速筛选" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3393 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3571 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3611 msgctxt "vantage" msgid "Radio" msgstr "射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2721 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2761 msgid "Radio details" msgstr "射频详情" @@ -1593,58 +1597,58 @@ msgstr "射频已禁用" msgid "Radio is enabled but not up" msgstr "射频已启用但未上线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2745 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3565 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2785 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3605 msgid "Radio settings" msgstr "射频设置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1203 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2673 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2675 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2713 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2715 msgid "Radios" msgstr "射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2054 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2092 msgid "Reachability not probed" msgstr "未探测可达性" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3079 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 msgid "Reached through the uplink port %s, not connected to this device" msgstr "经由上行端口 %s 到达,并未连接到本设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3619 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 msgid "Realtime graphs" msgstr "实时图表" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3643 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3683 msgctxt "vantage" msgid "Received" msgstr "已接收" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1692 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1711 msgctxt "vantage" msgid "Reconnecting…" msgstr "重新连接中…" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2912 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2952 msgid "Remove filter: %s" msgstr "移除筛选:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3511 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3551 msgid "Remove name" msgstr "移除名称" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3348 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3417 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3457 msgctxt "vantage" msgid "Rename" msgstr "重命名" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1484 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1498 msgid "Reset" msgstr "重置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3448 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3488 msgid "Reverse DNS of its address" msgstr "其地址的反向 DNS" @@ -1652,7 +1656,7 @@ msgstr "其地址的反向 DNS" msgid "Root (overlay)" msgstr "Root(overlay)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3639 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3679 msgid "Route metric" msgstr "路由跃点数" @@ -1664,20 +1668,20 @@ msgstr "路由器管理界面已开放:%s" msgid "SSH (port 22)" msgstr "SSH(端口 22)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3503 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3543 msgid "Save" msgstr "保存" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3396 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 msgid "Seen since" msgstr "首次出现" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3644 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3684 msgctxt "vantage" msgid "Sent" msgstr "已发送" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1419 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1433 msgid "Separate lanes" msgstr "分开显示" @@ -1685,57 +1689,57 @@ msgstr "分开显示" msgid "Settings to check" msgstr "待检查的设置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3424 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 msgid "Shared by %d devices" msgstr "%d 台设备共用" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3083 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3123 msgid "Shared port" msgstr "共用端口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1565 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1579 msgid "Show %s" msgstr "显示 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3038 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3078 msgid "Show all clients" msgstr "显示全部客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2342 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2381 msgid "Show or hide system details" msgstr "显示/隐藏系统详情" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1840 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1878 msgid "Show or hide the network path" msgstr "显示/隐藏网络路径" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2676 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2716 msgid "Show or hide the radio details" msgstr "显示/隐藏射频详情" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2461 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2501 msgid "Show or hide the throughput chart" msgstr "显示/隐藏吞吐量图表" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3199 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 msgid "Show or hide the wireless networks" msgstr "显示/隐藏无线网络" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2141 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2179 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3257 msgid "Show the clients of %s" msgstr "显示 %s 的客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2167 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2205 msgid "Show the devices on %s" msgstr "显示 %s 上的设备" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:119 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:120 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:128 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2968 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3372 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3159 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3412 msgid "Signal" msgstr "信号强度" @@ -1743,7 +1747,7 @@ msgstr "信号强度" msgid "Signal not reported" msgstr "未报告信号" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3627 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3667 msgctxt "vantage" msgid "Speed" msgstr "速率" @@ -1753,24 +1757,24 @@ msgid "Standard housekeeping: %d rule" msgid_plural "Standard housekeeping: %d rules" msgstr[0] "标准常规规则:%d 条" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 msgid "Starfield" msgstr "星空" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3047 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3087 msgid "Stations appear here as soon as they associate with one of the SSIDs." msgstr "站点一旦关联到任一 SSID 便会显示在这里。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 msgid "Status" msgstr "状态" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:93 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2359 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2398 msgid "Storage" msgstr "存储" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3512 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3552 msgid "Stored on this device in /etc/config/vantage" msgstr "保存在本设备 /etc/config/vantage 中" @@ -1786,16 +1790,16 @@ msgstr "信号强 %s,链路 %s" msgid "Strong signal, %s" msgstr "信号强,%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2416 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2455 msgctxt "vantage" msgid "Swap" msgstr "交换分区" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3467 msgid "Switch ports" msgstr "交换机端口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:390 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:391 msgid "Switch ports of VLAN %d on %s: %s" msgstr "VLAN %d(%s)的交换机端口:%s" @@ -1803,13 +1807,13 @@ msgstr "VLAN %d(%s)的交换机端口:%s" msgid "Switched off" msgstr "已关闭" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1204 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2341 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2342 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2380 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2381 msgid "System" msgstr "系统" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3699 msgid "System settings" msgstr "系统设置" @@ -1822,7 +1826,7 @@ msgid "Telnet (port 23)" msgstr "Telnet(端口 23)" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:76 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2373 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2412 msgid "Temperature %s" msgstr "温度 %s" @@ -1830,11 +1834,11 @@ msgstr "温度 %s" msgid "Temporary (RAM)" msgstr "临时(RAM)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2967 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3007 msgid "The bridge forgets a device after about five minutes without traffic" msgstr "设备约五分钟无流量后,网桥会将其遗忘" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3041 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3081 msgid "" "The bridges have learned so many addresses that listing them here would " "strain this device." @@ -1849,7 +1853,7 @@ msgstr "" "该处适用默认入站数据策略且为接受,因此互联网上的任何主机都能访问路由器本身。" "请将其加入 wan 区域,或在基本设置中将入站数据设为拒绝。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3549 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3589 msgid "The device could not write /etc/config/vantage." msgstr "设备无法写入 /etc/config/vantage。" @@ -1875,7 +1879,7 @@ msgstr "" "无法读取接口列表,且默认入站数据策略为接受:不属于任何区域的上行接口将会开" "放。请在基本设置中将入站数据设为拒绝。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3451 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3491 msgid "The name the device announces (WPS)" msgstr "设备广播的名称(WPS)" @@ -1887,7 +1891,7 @@ msgstr "唯一已测客户端高于 %s" msgid "The only measured client" msgstr "唯一已测客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3078 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3118 msgid "The router this device sends its traffic to" msgstr "此设备发送流量所经的路由器" @@ -1903,7 +1907,7 @@ msgstr "保存的名称包含无效的配置节 ID" msgid "The uplinks could not be checked" msgstr "无法检查上行接口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2069 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2107 msgid "This access point" msgstr "此接入点" @@ -1911,11 +1915,11 @@ msgstr "此接入点" msgid "This address family is in no zone: the default policies apply." msgstr "此地址族不属于任何区域:适用默认策略。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2069 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2107 msgid "This device" msgstr "此设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3548 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3588 msgid "This device already stores %d names; remove some first." msgstr "此设备已存储 %d 个名称;请先移除部分。" @@ -1923,7 +1927,7 @@ msgstr "此设备已存储 %d 个名称;请先移除部分。" msgid "This device reports no radios" msgstr "此设备未报告任何射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3608 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3648 msgid "This line is down or has no default route now." msgstr "此线路已断开,或当前没有默认路由。" @@ -1933,7 +1937,7 @@ msgid "" "the firewall pages." msgstr "本页无法判断开放了哪些内容。请重新加载;如果仍无效,请检查防火墙页面。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3556 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 msgid "This radio is not reported any more." msgstr "驱动不再报告此射频。" @@ -1941,23 +1945,23 @@ msgstr "驱动不再报告此射频。" msgid "This setup is beyond what this overview checks" msgstr "此配置超出本概览的检查范围" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3339 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3379 msgid "This station is not associated right now." msgstr "此站点当前未关联。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1203 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2453 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2455 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3378 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2493 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2495 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3418 msgctxt "vantage" msgid "Throughput" msgstr "吞吐量" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1424 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1438 msgid "Throughput chart" msgstr "吞吐量图表" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2446 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2486 msgid "Throughput per link; arrow keys read the values over time" msgstr "每条链路的吞吐量;方向键可查看历史值" @@ -1966,38 +1970,38 @@ msgctxt "vantage" msgid "TiB" msgstr "TiB" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3385 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3425 msgid "To device" msgstr "到设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3099 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3134 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3187 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3139 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3174 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3227 msgid "To device %s, from device %s" msgstr "到设备 %s,来自设备 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3126 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3166 msgid "To device: %s" msgstr "到设备:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3622 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 msgid "To network" msgstr "发往网络" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3040 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3080 msgid "Too many devices to list" msgstr "设备过多,无法列出" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1204 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3151 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3152 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3191 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3192 msgctxt "vantage" msgid "Top talkers" msgstr "流量大户" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3398 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3568 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3438 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3468 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3608 msgid "Traffic" msgstr "流量" @@ -2015,16 +2019,16 @@ msgstr "" "未被任何转发覆盖的互联网流量仍会到达你的其他网络。请在基本设置中将转发设为拒" "绝。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2065 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2103 msgid "Traffic to the internet goes through %s, a tunnel over this line" msgstr "去往互联网的流量经过 %s,一条在此线路上运行的隧道" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3631 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3671 msgid "Tunnel" msgstr "隧道" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2732 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3575 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2772 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 msgid "Tx power" msgstr "发射功率" @@ -2036,16 +2040,16 @@ msgstr "" "已安装 UPnP:它运行时,你网络中的设备可以自行开放端口,这些端口不会在此列出。" #: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:272 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3338 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3378 msgctxt "vantage" msgid "Unknown device" msgstr "未知设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3547 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3587 msgid "Unknown device type" msgstr "未知设备类型" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3556 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 msgid "Unknown radio" msgstr "未知射频" @@ -2060,14 +2064,14 @@ msgid "Unnamed rule" msgstr "未命名的规则" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:57 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2720 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 msgctxt "vantage" msgid "Up" msgstr "已上线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2366 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2405 msgid "Up %s" msgstr "已运行 %s" @@ -2076,47 +2080,47 @@ msgstr "已运行 %s" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:49 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:51 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:57 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2479 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3611 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3651 msgctxt "vantage" msgid "Uplink" msgstr "上行链路" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2479 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2480 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2520 msgid "Uplink %s" msgstr "上行链路 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3604 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3644 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3655 msgid "Uplink · %s" msgstr "上行链路 · %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2459 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2555 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2629 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2499 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2595 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2669 msgid "Upload" msgstr "上传" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:378 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:379 msgid "Upload (from clients)" msgstr "上传(来自客户端)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3400 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3440 msgctxt "vantage" msgid "Uploaded" msgstr "已上传" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3079 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 msgid "Upstream" msgstr "上游" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3665 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3705 msgid "Uptime" msgstr "运行时间" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3080 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3432 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3120 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3472 msgid "VLAN %d" msgstr "VLAN %d" @@ -2261,11 +2265,11 @@ msgstr "WPA3 个人版" msgid "WPS" msgstr "WPS" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3408 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3448 msgid "WPS device name" msgstr "WPS 设备名称" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1725 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1763 msgid "Warning" msgstr "警告" @@ -2279,7 +2283,7 @@ msgid "Weak" msgstr "弱" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:157 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2895 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2935 msgid "Weak signal" msgstr "信号弱" @@ -2302,27 +2306,27 @@ msgstr "开放内容取决于 firewall4 如何处理 %s,本页无法跟踪。 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:106 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:108 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2949 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2989 msgid "Wi-Fi" msgstr "Wi-Fi" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2011 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2949 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2049 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2989 msgid "Wired" msgstr "有线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1204 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3198 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3199 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3238 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 msgctxt "vantage" msgid "Wireless networks" msgstr "无线网络" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3358 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3398 msgid "Wireless settings" msgstr "无线设置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3447 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3487 msgid "Your name for this device" msgstr "你为此设备设置的名称" @@ -2360,15 +2364,15 @@ msgstr "任意区域" msgid "any zone (default policy)" msgstr "任意区域(默认策略)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2766 msgid "auto" msgstr "自动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3396 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 msgid "before this page opened" msgstr "打开本页之前" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3425 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3465 msgid "behind %s, VLAN %d" msgstr "位于 %s 之后,VLAN %d" @@ -2377,16 +2381,16 @@ msgctxt "vantage" msgid "bit/s" msgstr "bit/s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2587 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2627 msgid "collecting · %s of data" msgstr "采集中 · 已采集 %s 数据" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2587 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2627 msgid "collecting · first samples" msgstr "采集中 · 首个样本" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:251 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2567 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:252 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2607 msgid "collecting…" msgstr "采集中…" @@ -2398,18 +2402,18 @@ msgstr "自定义规则文件" msgid "dBm" msgstr "dBm" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1929 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2067 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1967 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2105 msgid "default route" msgstr "默认路由" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2067 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2105 msgid "default route via %s" msgstr "默认路由经由 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:385 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3083 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3424 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:386 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3123 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 msgid "down" msgstr "已断开" @@ -2418,7 +2422,7 @@ msgctxt "vantage" msgid "drop" msgstr "丢弃" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3517 msgctxt "vantage" msgid "e.g. Living room TV" msgstr "例如:客厅电视" @@ -2457,8 +2461,8 @@ msgid "half duplex" msgstr "半双工" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:62 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2087 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3225 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2125 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3265 msgid "idle" msgstr "空闲" @@ -2500,18 +2504,18 @@ msgctxt "vantage" msgid "kbit/s" msgstr "kbit/s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2351 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2586 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2390 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2626 msgid "last 5 min" msgstr "最近 5 分钟" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:104 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3128 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3168 msgid "legacy" msgstr "旧版" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:385 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:386 msgid "link up" msgstr "已连接" @@ -2519,45 +2523,45 @@ msgstr "已连接" msgid "mDNS" msgstr "mDNS" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3449 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3489 msgid "mDNS announcement" msgstr "mDNS 广播" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3380 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3420 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3471 msgid "measuring" msgstr "测量中" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2562 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2602 msgid "measuring…" msgstr "测量中…" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2543 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2583 msgctxt "vantage" msgid "no data" msgstr "无数据" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2060 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2098 msgid "no uplink" msgstr "无上行链路" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3406 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3446 msgid "not known to this AP" msgstr "此 AP 未识别" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3438 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3478 msgid "not known to this device" msgstr "此设备未识别" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3578 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3618 msgid "not reported (driver placeholder %s)" msgstr "未报告(驱动占位值 %s)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3389 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 msgid "not reported by the driver" msgstr "驱动未报告" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2583 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2623 msgctxt "vantage" msgid "now" msgstr "现在" @@ -2566,16 +2570,16 @@ msgstr "现在" msgid "now %s down, %s up" msgstr "当前下行 %s,上行 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3387 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 msgid "older than the radio (%s)" msgstr "比射频支持的标准更旧(%s)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2560 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2600 msgctxt "vantage" msgid "peak" msgstr "峰值" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2352 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2391 msgid "per core" msgstr "每核" @@ -2584,11 +2588,11 @@ msgctxt "vantage" msgid "port forward" msgstr "端口转发" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3374 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3414 msgid "range %s … %s" msgstr "范围 %s … %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3621 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 msgid "received on %s" msgstr "在 %s 上接收" @@ -2601,7 +2605,7 @@ msgstr "拒绝" msgid "router port %s" msgstr "路由器端口 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3622 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 msgid "sent on %s" msgstr "在 %s 上发送" @@ -2609,12 +2613,12 @@ msgstr "在 %s 上发送" msgid "short GI" msgstr "短 GI" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3102 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3142 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3473 msgid "static entry" msgstr "静态条目" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3426 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3466 msgid "switch port %s" msgstr "交换机端口 %s" @@ -2626,11 +2630,11 @@ msgstr "已关闭" msgid "the covered subnets of zone %s" msgstr "区域 %s 覆盖的子网" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3430 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3470 msgid "the port in total: %s" msgstr "该端口合计:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3425 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3465 msgid "the port: %s" msgstr "端口:%s" @@ -2646,7 +2650,7 @@ msgstr "此路由器" msgid "traffic rule" msgstr "通信规则" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2072 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2110 msgid "up %s" msgstr "已运行 %s" @@ -2663,7 +2667,7 @@ msgstr "区域转发" msgid "zones %s and %s if they share a device" msgstr "区域 %s 和 %s(若两者共用设备)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2580 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2620 msgid "−%d min" msgstr "−%d 分钟" diff --git a/luci-base/po/templates/base.pot b/luci-base/po/templates/base.pot index c1349f7ba..39b3a8554 100644 --- a/luci-base/po/templates/base.pot +++ b/luci-base/po/templates/base.pot @@ -13710,3 +13710,18 @@ msgstr "" msgid "Wireless scan failed: %s" msgstr "" + +msgid "Export eMMC partition" +msgstr "" + +msgid "Download the raw contents of the selected eMMC partition." +msgstr "" + +msgid "Choose eMMC partition" +msgstr "" + +msgid "Download eMMC partition" +msgstr "" + +msgid "Export partition" +msgstr "" diff --git a/luci-base/po/zh_Hans/base.po b/luci-base/po/zh_Hans/base.po index c4978bf20..bc56dc6e2 100644 --- a/luci-base/po/zh_Hans/base.po +++ b/luci-base/po/zh_Hans/base.po @@ -14238,3 +14238,18 @@ msgstr "启用 CSA" msgid "Announce channel switches to clients. Automatic channel selection remains available when disabled." msgstr "向客户端通告信道切换。关闭后仍可自动选择信道。" + +msgid "Export eMMC partition" +msgstr "导出 eMMC 分区" + +msgid "Download the raw contents of the selected eMMC partition." +msgstr "下载所选 eMMC 分区的原始内容。" + +msgid "Choose eMMC partition" +msgstr "选择 eMMC 分区" + +msgid "Download eMMC partition" +msgstr "下载 eMMC 分区" + +msgid "Export partition" +msgstr "导出分区" diff --git a/luci-mod-fluentdashboard/Makefile b/luci-mod-fluentdashboard/Makefile index d0efff9e2..85b20fa50 100644 --- a/luci-mod-fluentdashboard/Makefile +++ b/luci-mod-fluentdashboard/Makefile @@ -1,17 +1,21 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Fluent dashboard for LuCI -LUCI_DEPENDS:=+luci-base +libiwinfo -LUCI_DESCRIPTION:=A fixed-card, theme-independent LuCI status dashboard with system, network, wireless, DHCP lease, and wireless client information. +LUCI_DEPENDS:=+luci-base +libiwinfo +rpcd-mod-ucode +ucode-mod-fs +ucode-mod-uci +LUCI_DESCRIPTION:=A theme-independent configurable dashboard workbench with shared layouts and live system, network, wireless and client widgets. LUCI_MAINTAINER:=LazuliKao LUCI_MINIFY_CSS:=0 LUCI_MINIFY_JS:=0 PKG_NAME:=luci-mod-fluentdashboard PKG_VERSION:=1.0.9 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_LICENSE:=Apache-2.0 PKG_BUILD_DEPENDS:=iwinfo +define Package/luci-mod-fluentdashboard/conffiles +/etc/config/fluentdashboard +endef + # call BuildPackage - OpenWrt buildroot signature include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-mod-fluentdashboard/htdocs/luci-static/resources/view/fluentdashboard/index.css b/luci-mod-fluentdashboard/htdocs/luci-static/resources/view/fluentdashboard/index.css index 9195e80ee..a6c2c414f 100644 --- a/luci-mod-fluentdashboard/htdocs/luci-static/resources/view/fluentdashboard/index.css +++ b/luci-mod-fluentdashboard/htdocs/luci-static/resources/view/fluentdashboard/index.css @@ -1,7 +1,7 @@ .fluent-dashboard { --fluent-dashboard-border: var(--fluent-card-border, var(--inputborder-color, color-mix(in srgb, currentColor 16%, transparent))); --fluent-dashboard-muted: var(--fluent-text-secondary, color-mix(in srgb, currentColor 68%, transparent)); - --fluent-dashboard-surface: var(--fluent-card-bg, rgba(var(--primary-rgbbody, 255, 255, 255), 0.7)); + --fluent-dashboard-surface: var(--fluent-card-bg, rgba(var(--primary-rgbbody, 255, 255, 255), .7)); --fluent-dashboard-shadow: var(--fluent-card-shadow, 0 .1rem .3rem var(--input-boxcolor, color-mix(in srgb, CanvasText 8%, transparent))); color: var(--fluent-text, CanvasText); container-type: inline-size; @@ -12,6 +12,7 @@ } .fluent-dashboard__header { + z-index: 0; color: highlighttext; background: linear-gradient(120deg, Highlight, color-mix(in srgb, Highlight 68%, CanvasText)); border-radius: .75rem; @@ -21,9 +22,8 @@ margin-block-end: 1rem; padding: 1.25rem; display: flex; - z-index: 0; - overflow: hidden; position: relative; + overflow: hidden; } .fluent-dashboard__header h1, .fluent-dashboard__header p { @@ -239,3 +239,394 @@ transition: none; } } + +.fluent-dashboard { + --dash-card-bg: var(--fluent-card-bg, Canvas); + --dash-text: var(--fluent-text, CanvasText); + --dash-border: var(--fluent-card-border, color-mix(in srgb, CanvasText 18%, transparent)); + --dash-gap: .75rem; + --dash-radius: var(--fluent-border-radius, .5rem); + color: var(--dash-text); +} + +.fluent-dashboard__toolbar { + gap: var(--dash-gap); + margin-block: var(--dash-gap); + border: 0; + flex-wrap: wrap; + padding: 0; + display: flex; +} + +.fluent-dashboard__workspace { + gap: var(--dash-gap); + grid-template-columns: minmax(0, 1fr); + display: grid; +} + +.fluent-dashboard__canvas { + min-width: 0; + min-height: 12rem; +} + +.fluent-dashboard__library, .fluent-dashboard__properties { + border: 1px solid var(--dash-border); + border-radius: var(--dash-radius); + min-width: 0; + padding: var(--dash-gap); +} + +.fluent-dashboard__library > button, .fluent-dashboard__properties > button { + margin: .2rem; +} + +.fluent-dashboard__field { + margin-block: var(--dash-gap); + display: block; +} + +.fluent-dashboard__field > input { + width: 100%; + display: block; +} + +.fluent-dashboard .grid-stack-item-content > .fluent-dashboard__card { + flex-direction: column; + height: 100%; + display: flex; +} + +.fluent-dashboard__card-header { + flex: none; + justify-content: space-between; + align-items: center; + min-height: 2rem; + display: flex; +} + +.fluent-dashboard__card-header > .fluent-dashboard__card-title { + border: 0; + flex: 1; + padding-block: .5rem; +} + +.fluent-dashboard__card-header > button { + flex: none; + margin-inline-end: .5rem; + font-size: .75rem; +} + +.fluent-dashboard__card-content { + min-height: 0; + overflow: auto; +} + +.fluent-dashboard__widget-status { + padding-inline: var(--dash-gap); + margin: 0; + font-size: .85rem; +} + +.fluent-dashboard__card--editing .fluent-dashboard__card-header { + cursor: move; +} + +.fluent-dashboard__card--hidden { + opacity: .5; +} + +.fluent-dashboard__card--locked .fluent-dashboard__card-header { + cursor: default; +} + +.fluent-dashboard__tile--selected > .grid-stack-item-content { + outline-offset: -2px; + outline: 2px solid highlight; +} + +.fluent-dashboard__group { + border: 1px solid var(--dash-border); + border-radius: var(--dash-radius); + background: var(--dash-card-bg); + flex-direction: column; + height: 100%; + display: flex; +} + +.fluent-dashboard__group > .fluent-dashboard__card-header { + height: 40px; +} + +.fluent-dashboard__group-description { + padding: .25rem var(--dash-gap); + margin: 0; + font-size: .85rem; +} + +.fluent-dashboard__group-body { + flex: 1; + min-height: 80px; +} + +.fluent-dashboard__metric, .fluent-dashboard__traffic { + padding: var(--dash-gap); + flex-direction: column; + gap: .4rem; + display: flex; + overflow: auto; +} + +.fluent-dashboard__metric-value { + overflow-wrap: anywhere; + font-size: clamp(1rem, 1.5vw, 1.6rem); +} + +.fluent-dashboard__metric-detail { + color: var(--dash-text); + opacity: .7; + overflow-wrap: anywhere; +} + +.fluent-dashboard__metric progress { + width: 100%; + accent-color: var(--fluent-primary, Highlight); +} + +.fluent-dashboard__traffic svg { + width: 100%; + height: 5rem; + min-height: 2rem; +} + +.fluent-dashboard__traffic polyline { + fill: none; + stroke-width: 1.5px; + vector-effect: non-scaling-stroke; +} + +.fluent-dashboard__traffic-rx { + stroke: var(--fluent-primary, Highlight); +} + +.fluent-dashboard__traffic-tx { + stroke: var(--fluent-success, #26884a); +} + +.fluent-dashboard__shortcuts { + gap: var(--dash-gap); + padding: var(--dash-gap); + flex-wrap: wrap; + display: flex; +} + +.fluent-dashboard__shortcuts a { + border: 1px solid var(--dash-border); + border-radius: var(--dash-radius); + color: var(--dash-text); + align-items: center; + padding: .5rem; + display: inline-flex; +} + +.fluent-dashboard__notice:empty, .fluent-dashboard [hidden] { + display: none; +} + +.fluent-dashboard .grid-stack-item-content { + min-width: 0; + overflow: hidden; +} + +.fluent-dashboard__canvas .grid-stack-item > .grid-stack-item-content { + overflow: visible; +} + +.fluent-dashboard__group-body.grid-stack { + width: 100%; + min-width: 0; +} + +.fluent-dashboard__workspace--editing .fluent-dashboard__canvas > .grid-stack-item { + touch-action: auto; +} + +@media (min-width: 1400px) { + .fluent-dashboard__workspace--editing { + grid-template-columns: 12rem minmax(0, 1fr) 15rem; + align-items: start; + } +} + +.fluent-dashboard .grid-stack { + position: relative; +} + +.fluent-dashboard .grid-stack-rtl { + direction: ltr; +} + +.fluent-dashboard .grid-stack-rtl > .grid-stack-item { + direction: rtl; +} + +.fluent-dashboard .grid-stack-placeholder > .placeholder-content { + background-color: #0000001a; + width: auto; + margin: 0; + position: absolute; + z-index: 0 !important; +} + +.fluent-dashboard .grid-stack > .grid-stack-item { + width: var(--gs-column-width); + height: var(--gs-cell-height); + padding: 0; + position: absolute; + top: 0; + left: 0; +} + +.fluent-dashboard .grid-stack > .grid-stack-item > .grid-stack-item-content { + width: auto; + margin: 0; + position: absolute; + overflow: hidden auto; +} + +.fluent-dashboard .grid-stack > .grid-stack-item.size-to-content:not(.size-to-content-max) > .grid-stack-item-content { + overflow-y: hidden; +} + +.fluent-dashboard .grid-stack > .grid-stack-item > .grid-stack-item-content, .fluent-dashboard .grid-stack > .grid-stack-placeholder > .placeholder-content { + top: var(--gs-item-margin-top); + right: var(--gs-item-margin-right); + bottom: var(--gs-item-margin-bottom); + left: var(--gs-item-margin-left); +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-handle { + -ms-touch-action: none; + touch-action: none; + font-size: .1px; + display: block; + position: absolute; +} + +.fluent-dashboard .grid-stack-item.ui-resizable-disabled > .ui-resizable-handle, .fluent-dashboard .grid-stack-item.ui-resizable-autohide > .ui-resizable-handle { + display: none; +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-ne, .fluent-dashboard .grid-stack-item > .ui-resizable-nw, .fluent-dashboard .grid-stack-item > .ui-resizable-se, .fluent-dashboard .grid-stack-item > .ui-resizable-sw { + background-image: url("data:image/svg+xml;utf8,"); + background-position: center; + background-repeat: no-repeat; +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-ne, .fluent-dashboard .grid-stack-item > .ui-resizable-sw { + transform: rotate(45deg); +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-nw, .fluent-dashboard .grid-stack-item > .ui-resizable-se { + transform: rotate(-45deg); +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-nw { + cursor: nw-resize; + width: 20px; + height: 20px; + top: var(--gs-item-margin-top); + left: var(--gs-item-margin-left); +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-n { + cursor: n-resize; + height: 10px; + top: var(--gs-item-margin-top); + left: 25px; + right: 25px; +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-ne { + cursor: ne-resize; + width: 20px; + height: 20px; + top: var(--gs-item-margin-top); + right: var(--gs-item-margin-right); +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-e { + cursor: e-resize; + width: 10px; + top: 15px; + bottom: 15px; + right: var(--gs-item-margin-right); +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-se { + cursor: se-resize; + width: 20px; + height: 20px; + bottom: var(--gs-item-margin-bottom); + right: var(--gs-item-margin-right); +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-s { + cursor: s-resize; + height: 10px; + left: 25px; + bottom: var(--gs-item-margin-bottom); + right: 25px; +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-sw { + cursor: sw-resize; + width: 20px; + height: 20px; + bottom: var(--gs-item-margin-bottom); + left: var(--gs-item-margin-left); +} + +.fluent-dashboard .grid-stack-item > .ui-resizable-w { + cursor: w-resize; + width: 10px; + top: 15px; + bottom: 15px; + left: var(--gs-item-margin-left); +} + +.fluent-dashboard .grid-stack-item.ui-draggable-dragging > .ui-resizable-handle { + display: none !important; +} + +.fluent-dashboard .grid-stack-item.ui-draggable-dragging { + will-change: left,top; +} + +.fluent-dashboard .grid-stack-item.ui-resizable-resizing { + will-change: width,height; +} + +.fluent-dashboard .ui-draggable-dragging, .fluent-dashboard .ui-resizable-resizing { + z-index: 10000; +} + +.fluent-dashboard .ui-draggable-dragging > .grid-stack-item-content, .fluent-dashboard .ui-resizable-resizing > .grid-stack-item-content { + opacity: .8; + box-shadow: 1px 4px 6px #0003; +} + +.fluent-dashboard .grid-stack-animate, .fluent-dashboard .grid-stack-animate .grid-stack-item { + transition: left .3s, top .3s, height .3s, width .3s; +} + +.fluent-dashboard .grid-stack-animate .grid-stack-item.ui-draggable-dragging, .fluent-dashboard .grid-stack-animate .grid-stack-item.ui-resizable-resizing, .fluent-dashboard .grid-stack-animate .grid-stack-item.grid-stack-placeholder { + transition: left, top, height, width; +} + +.fluent-dashboard .grid-stack > .grid-stack-item[gs-y="0"] { + top: 0; +} + +.fluent-dashboard .grid-stack > .grid-stack-item[gs-x="0"] { + left: 0%; +} diff --git a/luci-mod-fluentdashboard/htdocs/luci-static/resources/view/fluentdashboard/index.js b/luci-mod-fluentdashboard/htdocs/luci-static/resources/view/fluentdashboard/index.js index a4b5b99e3..11e6a1920 100644 --- a/luci-mod-fluentdashboard/htdocs/luci-static/resources/view/fluentdashboard/index.js +++ b/luci-mod-fluentdashboard/htdocs/luci-static/resources/view/fluentdashboard/index.js @@ -94,6 +94,8026 @@ function jsxDEV(t, n) { ;// CONCATENATED MODULE: ../node_modules/.pnpm/@lazulikao+luci-types@https_685a81b9ead15f36368ce6e6ebcf4a27/node_modules/@lazulikao/luci-types/src/jsx/jsx-runtime.ts +;// CONCATENATED MODULE: ./web/fluentdashboard/data/scheduler.ts +const dispatchTogether = (t)=>Promise.allSettled(t.map((t)=>{ + try { + return t.load(); + } catch (t) { + return Promise.reject(t); + } + })); +class Scheduler { + dispatch; + windowMs; + now; + entries = new Map(); + queue = new Set(); + timer; + tickTimer; + paused = !1; + disposed = !1; + constructor(t = dispatchTogether, e = 50, s = Date.now){ + this.dispatch = t, this.windowMs = e, this.now = s; + } + register(t) { + if (this.entries.has(t.key)) throw Error(`Duplicate data source: ${t.key}`); + this.entries.set(t.key, { + source: t, + state: { + status: "idle", + stale: !1 + }, + listeners: new Set(), + due: 0, + failures: 0 + }); + } + state(t) { + return { + ...this.entry(t).state + }; + } + subscribe(t, e) { + if (this.disposed) throw Error("Scheduler destroyed"); + let s = this.entry(t); + return s.listeners.add(e), e({ + ...s.state + }), !this.paused && this.now() >= s.due && this.request(t), this.tickTimer || (this.tickTimer = setInterval(()=>this.tick(), 250)), ()=>{ + s.listeners.delete(e), [ + ...this.entries.values() + ].some((t)=>t.listeners.size) || (clearInterval(this.tickTimer), this.tickTimer = void 0); + }; + } + request(t) { + if (this.disposed) return Promise.reject(Error("Scheduler destroyed")); + let e = this.entry(t); + return e.flight || (e.flight = new Promise((t)=>{ + e.complete = t; + }), this.queue.add(e), this.timer || (this.timer = setTimeout(()=>{ + this.timer = void 0, this.flush(); + }, this.windowMs))), e.flight; + } + setPaused(t) { + this.paused = t, t || this.tick(); + } + tick() { + if (!this.paused && !this.disposed) for (let t of this.entries.values())t.listeners.size && !t.flight && this.now() >= t.due && this.request(t.source.key); + } + async flush() { + let t; + clearTimeout(this.timer), this.timer = void 0; + let e = [ + ...this.queue + ]; + if (this.queue.clear(), e.length && !this.disposed) { + for (let t of e)t.state = { + ...t.state, + status: "loading", + attemptedAt: this.now() + }, this.notify(t); + try { + t = await this.dispatch(e.map((t)=>t.source)); + } catch (s) { + t = e.map(()=>({ + status: "rejected", + reason: s + })); + } + this.disposed || e.forEach((e, s)=>{ + let i = t[s]; + i?.status === "fulfilled" ? (e.state = { + status: "ready", + data: i.value, + stale: !1, + attemptedAt: e.state.attemptedAt, + updatedAt: this.now() + }, e.failures = 0) : (e.failures++, e.state = { + ...e.state, + status: "error", + stale: void 0 !== e.state.updatedAt, + error: i?.status === "rejected" ? i.reason : Error("Missing batch result") + }), e.due = this.now() + (e.failures ? Math.min(300000, Math.max(1000, e.source.interval) * 2 ** Math.min(8, e.failures)) : e.source.interval); + let r = e.complete; + e.complete = void 0, e.flight = void 0, r?.({ + ...e.state + }), this.notify(e); + }); + } + } + destroy() { + for (let t of (this.disposed = !0, clearTimeout(this.timer), clearInterval(this.tickTimer), this.queue.clear(), this.entries.values()))t.listeners.clear(), t.complete?.({ + ...t.state + }), t.complete = void 0, t.flight = void 0; + } + entry(t) { + let e = this.entries.get(t); + if (!e) throw Error(`Unknown source: ${t}`); + return e; + } + notify(t) { + for (let e of [ + ...t.listeners + ])try { + e({ + ...t.state + }); + } catch (t) { + console.error("Dashboard subscriber failed", t); + } + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/data/service.ts + +class DataService { + scheduler; + pauses = new Set(); + detachVisibility; + constructor(s = new Scheduler()){ + this.scheduler = s; + } + register(e) { + this.scheduler.register(e); + } + subscribe(e, s) { + return this.scheduler.subscribe(e, s); + } + select(e, s, i) { + return this.subscribe(e, (e)=>i({ + ...e, + data: void 0 === e.data ? void 0 : s(e.data) + })); + } + refresh(e) { + return Promise.all([ + ...new Set(e) + ].map((e)=>this.scheduler.request(e))); + } + pause(e, s) { + s ? this.pauses.add(e) : this.pauses.delete(e), this.scheduler.setPaused(this.pauses.size > 0); + } + observeVisibility(e) { + this.detachVisibility?.(); + let s = ()=>this.pause("visibility", e.hidden); + e.addEventListener("visibilitychange", s), s(), this.detachVisibility = ()=>e.removeEventListener("visibilitychange", s); + } + destroy() { + this.detachVisibility?.(), this.scheduler.destroy(); + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/core/types.ts +const SCHEMA_VERSION = 1; +const BASE_COLUMNS = 12; +const MAX_GROUP_DEPTH = 2; +const MAX_NODES_PER_DASHBOARD = 120; +const MAX_DASHBOARDS = 16; +const MAX_TILE_ROWS = 48; +const GROUP_HEADER_ROWS = 1; +const GROUP_MIN_BODY_ROWS = 2; +function isGroup(t) { + return t?.kind === "group"; +} +function isWidget(t) { + return t?.kind === "widget"; +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/core/tree.ts + +function indexNodes(e) { + let t = new Map(), r = new Map(); + for (let r of e)t.set(r.id, r); + for (let n of e){ + let e = null !== n.parentId && t.has(n.parentId) ? n.parentId : null, o = r.get(e); + o ? o.push(n) : r.set(e, [ + n + ]); + } + return { + byId: t, + children: r + }; +} +function childrenOf(e, t) { + return e.children.get(t) ?? []; +} +function ancestorsOf(e, r) { + let n = [], o = new Set([ + r + ]), d = e.byId.get(r); + for(; d?.parentId && !o.has(d.parentId);){ + o.add(d.parentId); + let r = e.byId.get(d.parentId); + if (!isGroup(r)) break; + n.push(r), d = r; + } + return n; +} +function descendantsOf(e, t) { + let r = [], n = [ + ...childrenOf(e, t) + ], o = new Set([ + t + ]); + for(; n.length;){ + let t = n.pop(); + o.has(t.id) || (o.add(t.id), r.push(t), n.push(...childrenOf(e, t.id))); + } + return r; +} +function depthOf(e, t) { + return ancestorsOf(e, t).length; +} +function groupLevels(e, r, n = new Set()) { + if (n.has(r)) throw Error("Cyclic group hierarchy"); + if (!isGroup(e.byId.get(r))) return 0; + n.add(r); + let o = 0; + for (let t of childrenOf(e, r))o = Math.max(o, groupLevels(e, t.id, n)); + return n.delete(r), 1 + o; +} +function isSelfOrAncestor(e, t, r) { + return t === r || ancestorsOf(e, r).some((e)=>e.id === t); +} +function innerColumns(t, r) { + if (null === r) return BASE_COLUMNS; + let n = t.byId.get(r); + return n ? n.tile.w : BASE_COLUMNS; +} +function findDashboard(e, t) { + return e.find((e)=>e.id === t); +} +function byReadingOrder(e, t) { + return e.tile.y - t.tile.y || e.tile.x - t.tile.x || e.id.localeCompare(t.id); +} +function byFlowOrder(e, t) { + return e.tile.order - t.tile.order || byReadingOrder(e, t); +} +function dashboardNodeCount(e) { + return e.nodes.length; +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/layout/engine.ts + + +function engine_collides(t, e) { + return t.x < e.x + e.w && e.x < t.x + t.w && t.y < e.y + e.h && e.y < t.y + t.h; +} +function engine_d(t, e) { + for (let o of e)if (engine_collides(t, o)) return !0; + return !1; +} +function layoutRows(t) { + let e = 0; + for (let o of t)e = Math.max(e, o.y + o.h); + return e; +} +function compactVertical(t, e) { + let o = [ + ...t + ].sort((t, e)=>t.y - e.y || t.x - e.x || t.id.localeCompare(e.id)), i = []; + for (let t of o){ + let o = Math.min(t.w, e), r = Math.min(Math.max(0, t.x), e - o), n = Math.max(0, t.y); + for(; n > 0 && !engine_d({ + x: r, + y: n - 1, + w: o, + h: t.h + }, i);)n--; + for(; engine_d({ + x: r, + y: n, + w: o, + h: t.h + }, i);)n++; + i.push({ + ...t, + x: r, + y: n, + w: o + }); + } + return i; +} +function findFreeSpot(t, e, o, i, r = 0) { + let n = Math.min(e, i), l = Math.max(layoutRows(t) + 1, r); + for(let e = Math.max(0, r); e <= l; e++)for(let r = 0; r + n <= i; r++)if (!engine_d({ + x: r, + y: e, + w: n, + h: o + }, t)) return { + x: r, + y: e + }; + return { + x: 0, + y: l + }; +} +function flowLayout(t, e) { + let o = [], i = 0, r = 0; + for (let n of t){ + let t = Math.max(1, Math.min(n.w, e)), l = r, a = i; + for(;;){ + if (a + t > e) { + a = 0, l++; + continue; + } + if (!engine_d({ + x: a, + y: l, + w: t, + h: n.h + }, o)) break; + a++; + } + o.push({ + ...n, + x: a, + y: l, + w: t + }), i = a + t, r = l; + } + return o; +} +function foldWidth(t, e) { + return Math.max(1, Math.min(t, e)); +} +const COLUMN_STEPS = [ + 12, + 6, + 2 +]; +function resolveLayout(e, d, f = {}) { + let u = { + index: indexNodes(e), + options: f, + grids: new Map(), + items: new Map() + }; + return !function e(i, r, d, f) { + let u, h = d >= f, s = childrenOf(i.index, r).filter((t)=>i.options.includeHidden || !t.hidden), x = s.map((t)=>{ + let o = foldWidth(t.tile.w, d), f = t.tile.h, u = isGroup(t) && (i.options.collapsed?.has(t.id) ?? !1); + return isGroup(t) && (u ? (f = GROUP_HEADER_ROWS, e(i, t.id, o, t.tile.w)) : f = GROUP_HEADER_ROWS + Math.max(e(i, t.id, o, t.tile.w).rows, GROUP_MIN_BODY_ROWS)), { + id: t.id, + parentId: r, + kind: t.kind, + x: t.tile.x, + y: t.tile.y, + w: o, + h: f, + collapsed: u, + hidden: !0 === t.hidden + }; + }); + if (h) u = x; + else { + let e = new Map(s.map((t)=>[ + t.id, + t + ])); + u = flowLayout([ + ...x + ].sort((o, i)=>byFlowOrder(e.get(o.id), e.get(i.id))), d); + } + let p = { + parentId: r, + columns: d, + rows: layoutRows(u), + authored: h, + items: u + }; + for (let t of (i.grids.set(r, p), u))i.items.set(t.id, t); + return p; + }(u, null, Math.max(1, d), BASE_COLUMNS), { + columns: d, + grids: u.grids, + items: u.items + }; +} +function deriveGroupHeights(t) { + let e = resolveLayout(t, BASE_COLUMNS, { + includeHidden: !0 + }), o = new Map(); + for (let i of t){ + if (!isGroup(i)) continue; + let t = e.items.get(i.id); + t && t.h !== i.tile.h && o.set(i.id, t.h); + } + return o; +} +function readingOrderRanks(t, r) { + let n = indexNodes(t), l = new Map(); + return [ + ...childrenOf(n, r) + ].sort(byReadingOrder).forEach((t, e)=>{ + l.set(t.id, e); + }), l; +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/core/ids.ts +let ids_t = 0; +function createId(r = "n") { + ids_t = (ids_t + 1) % 1679616; + let e = Date.now().toString(36).slice(-6), n = Math.floor(1679616 * Math.random()).toString(36).padStart(4, "0"); + return `${r}_${e}${ids_t.toString(36).padStart(4, "0")}${n}`; +} +let ids_r = /^[A-Za-z0-9_-]{1,64}$/; +function isValidId(t) { + return "string" == typeof t && ids_r.test(t); +} +function uniqueId(t, r) { + if (!r.has(t)) return t; + for(let e = 2;; e++){ + let n = `${t.slice(0, 58)}_${e}`; + if (!r.has(n)) return n; + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/core/schema.ts + + +const MAX_DOCUMENT_BYTES = 262144; +class DocumentValidationError extends Error { +} +let schema_a = (e)=>null !== e && "object" == typeof e && !Array.isArray(e), schema_s = (e, t, r)=>Number.isSafeInteger(e) && Number(e) >= t && Number(e) <= r; +function schema_l(e, t) { + if (!e) throw new DocumentValidationError(`Invalid dashboard document: ${t}`); +} +function validateDocument(p) { + schema_l(schema_a(p) && function e(t, r = 0, o = new Set()) { + if (r > 16) return !1; + if (null === t || "string" == typeof t || "boolean" == typeof t) return !0; + if ("number" == typeof t) return Number.isFinite(t); + if ("object" != typeof t || o.has(t) || !Array.isArray(t) && Object.getPrototypeOf(t) !== Object.prototype && null !== Object.getPrototypeOf(t)) return !1; + o.add(t); + let n = Object.entries(t).every(([t, n])=>![ + "__proto__", + "constructor", + "prototype" + ].includes(t) && e(n, r + 1, o)); + return o.delete(t), n; + }(p), "JSON value"), schema_l(new TextEncoder().encode(JSON.stringify(p)).length <= 262144, "size limit"), schema_l(p.schemaVersion === SCHEMA_VERSION, "schemaVersion"), schema_l(schema_s(p.revision, 0, Number.MAX_SAFE_INTEGER - 1), "revision"), schema_l(Array.isArray(p.dashboards) && p.dashboards.length > 0 && p.dashboards.length <= MAX_DASHBOARDS, "dashboards"); + let u = new Set(); + for (let r of p.dashboards){ + schema_l(schema_a(r) && isValidId(r.id) && !u.has(r.id), "dashboard id"), u.add(r.id), schema_l("string" == typeof r.name && r.name.trim().length > 0 && r.name.length <= 128, "dashboard name"), schema_l(Array.isArray(r.nodes) && r.nodes.length <= MAX_NODES_PER_DASHBOARD, "nodes"); + let d = new Map(); + for (let o of r.nodes){ + for (let t of (schema_l(schema_a(o) && isValidId(o.id) && !d.has(o.id), "node id"), d.set(o.id, o), schema_l("widget" === o.kind || "group" === o.kind, "node kind"), schema_l(Object.hasOwn(o, "parentId") && (null === o.parentId || isValidId(o.parentId)), "parentId"), [ + "hidden", + "locked", + "collapsed" + ]))schema_l(void 0 === o[t] || "boolean" == typeof o[t], t); + schema_l(void 0 === o.title || "string" == typeof o.title && o.title.length <= 256, "title"); + let r = o.tile; + schema_l(schema_a(r), "tile"), schema_l([ + "small", + "medium", + "wide", + "large", + "xlarge", + "full", + "custom" + ].includes(String(r.size)), "tile size"), schema_l(schema_s(r.x, 0, BASE_COLUMNS - 1) && schema_s(r.y, 0, 10000) && schema_s(r.w, 1, BASE_COLUMNS) && schema_s(r.h, 1, MAX_TILE_ROWS) && schema_s(r.order, 0, 100000), "tile coordinates"), "widget" === o.kind ? (schema_l("string" == typeof o.widgetType && /^[a-zA-Z0-9_.-]{1,128}$/.test(o.widgetType), "widgetType"), schema_l(schema_s(o.widgetVersion, 1, 100000) && schema_a(o.config), "widget config/version")) : (schema_l("string" == typeof o.title, "group title"), schema_l(void 0 === o.description || "string" == typeof o.description && o.description.length <= 2048, "group description")); + } + for (let e of d.values()){ + let r = new Set([ + e.id + ]), n = e.parentId, i = +("group" === e.kind); + for(; null !== n;){ + schema_l("string" == typeof n && !r.has(n), "parent cycle"), r.add(n); + let e = d.get(n); + schema_l(e?.kind === "group", "missing/non-group parent"), schema_l(++i <= MAX_GROUP_DEPTH, "group depth"), n = e.parentId; + } + let a = e.tile, s = null === e.parentId ? void 0 : d.get(String(e.parentId)), p = s ? s.tile.w : BASE_COLUMNS; + schema_l(a.x + a.w <= p, "parent width"); + } + } + schema_l("string" == typeof p.defaultDashboardId && u.has(p.defaultDashboardId), "default dashboard"), schema_l(void 0 === p.meta || schema_a(p.meta), "meta"); +} +function cloneDocument(e) { + return JSON.parse(JSON.stringify(e)); +} +function migrateDocument(e) { + return validateDocument(e), cloneDocument(e); +} +function createDefaultDocument() { + return { + schemaVersion: SCHEMA_VERSION, + revision: 0, + defaultDashboardId: "overview", + meta: { + presetVersion: 1 + }, + dashboards: [ + { + id: "overview", + name: "Overview", + nodes: [ + "system.info", + "system.resources", + "network.internet", + "network.interfaces", + "wireless.radios", + "dhcp.leases", + "wireless.clients" + ].map((e, t)=>({ + id: e.replaceAll(".", "_"), + kind: "widget", + parentId: null, + widgetType: e, + widgetVersion: 1, + config: {}, + tile: { + size: "xlarge", + x: t % 2 * 6, + y: 8 * Math.floor(t / 2), + w: 6, + h: 8, + order: t + } + })) + } + ] + }; +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/core/tiles.ts + +const TILE_PRESETS = { + small: { + w: 1, + h: 2 + }, + medium: { + w: 2, + h: 4 + }, + wide: { + w: 4, + h: 4 + }, + large: { + w: 4, + h: 8 + }, + xlarge: { + w: 6, + h: 8 + }, + full: { + w: BASE_COLUMNS, + h: 8 + } +}; +const TILE_SIZE_ORDER = [ + "small", + "medium", + "wide", + "large", + "xlarge", + "full" +]; +const DEFAULT_CONSTRAINTS = { + min: { + w: 1, + h: 2 + }, + max: { + w: BASE_COLUMNS, + h: MAX_TILE_ROWS + } +}; +function tiles_n(e, t, n, i) { + return Math.min(n, Math.max(t, "number" == typeof e && Number.isFinite(e) ? Math.round(e) : i)); +} +function detectTileSize(t, n, i = BASE_COLUMNS) { + for (let e of TILE_SIZE_ORDER){ + let r = TILE_PRESETS[e]; + if ("full" === e ? t === i && n === r.h : r.w === t && r.h === n) return e; + } + return "custom"; +} +function clampDimensions(i, r = DEFAULT_CONSTRAINTS, m = BASE_COLUMNS) { + let h = Math.max(1, Math.min(m, r.max.w)), l = Math.min(h, Math.max(1, r.min.w)), a = Math.max(1, Math.min(MAX_TILE_ROWS, r.max.h)), o = Math.min(a, Math.max(1, r.min.h)); + return { + w: tiles_n(i.w, l, h, l), + h: tiles_n(i.h, o, a, o) + }; +} +function presetDimensions(t, n = DEFAULT_CONSTRAINTS, i = BASE_COLUMNS) { + let r = TILE_PRESETS[t]; + return clampDimensions({ + w: "full" === t ? i : r.w, + h: r.h + }, n, i); +} +function allowedPresets(t = DEFAULT_CONSTRAINTS, n = BASE_COLUMNS) { + return TILE_SIZE_ORDER.filter((e)=>{ + let i = TILE_PRESETS[e], r = "full" === e ? n : i.w; + return r >= t.min.w && r <= Math.min(n, t.max.w) && i.h >= t.min.h && i.h <= t.max.h; + }); +} +function sanitizeTile(t, i = BASE_COLUMNS) { + let r = null !== t && "object" == typeof t ? t : {}, { w: m, h } = clampDimensions({ + w: r.w, + h: r.h + }, DEFAULT_CONSTRAINTS, i), l = tiles_n(r.x, 0, Math.max(0, i - m), 0), a = tiles_n(r.y, 0, 10000, 0), o = tiles_n(r.order, 0, 100000, 0); + return { + size: detectTileSize(m, h, i), + x: l, + y: a, + w: m, + h, + order: o + }; +} +function withDimensions(t, n, i, r = BASE_COLUMNS) { + return { + ...t, + w: n, + h: i, + size: detectTileSize(n, i, r) + }; +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/core/commands.ts + + + + +class EditCommand { + label; + edit; + before; + constructor(e, t){ + this.label = e, this.edit = t; + } + execute(e) { + let r = cloneDocument(e); + return this.edit(r), validateDocument(r), this.before = cloneDocument(e), r; + } + undo() { + if (!this.before) throw Error("Command has not executed"); + return cloneDocument(this.before); + } +} +function commands_n(e, t) { + let o = e.dashboards.find((e)=>e.id === t); + if (!o) throw Error("Dashboard not found"); + return o; +} +function commands_s(e, t, o = !1) { + let r = e.nodes.find((e)=>e.id === t); + if (!r) throw Error("Node not found"); + if (!o && (r.locked || ancestorsOf(indexNodes(e.nodes), t).some((e)=>e.locked))) throw Error("Node is locked"); + return r; +} +function commands_a(t, o) { + let r = indexNodes(t.nodes); + for (let i of [ + ...new Set(t.nodes.map((e)=>e.parentId)) + ].sort((e, t)=>(null === t ? 0 : ancestorsOf(r, t).length + 1) - (null === e ? 0 : ancestorsOf(r, e).length + 1))){ + let l = t.nodes.filter((e)=>e.parentId === i), n = l.filter((e)=>e.locked || ancestorsOf(r, e.id).some((e)=>e.locked)); + for(let t = 0; t < n.length; t++)for(let o = 0; o < t; o++)if (engine_collides(n[t].tile, n[o].tile)) throw Error("Locked tiles overlap"); + for (let t of l.filter((e)=>!n.includes(e)).sort((e, t)=>Number(o.has(t.id)) - Number(o.has(e.id)) || e.tile.y - t.tile.y || e.tile.x - t.tile.x)){ + for(; n.some((o)=>engine_collides(o.tile, t.tile));){ + if (t.tile.y >= 10000) throw Error("Dashboard layout exceeds the row limit"); + t.tile.y++; + } + n.push(t); + } + if (null !== i) { + let e = r.byId.get(i); + e?.kind === "group" && (e.tile.h = Math.max(3, ...l.map((e)=>e.tile.y + e.tile.h + 1))); + } + } +} +class MoveNodeCommand extends EditCommand { + constructor(e, t){ + super("Move tiles", (d)=>{ + let i = commands_n(d, e); + for (let e of t){ + let t = commands_s(i, e.id); + t.parentId = e.parentId, t.tile = { + ...t.tile, + x: e.x, + y: e.y, + w: e.w, + h: e.h, + size: detectTileSize(e.w, e.h) + }; + } + validateDocument(d), commands_a(i, new Set(t.map((e)=>e.id))); + }); + } +} +class ResizeNodeCommand extends EditCommand { + constructor(e, t, o, d){ + super("Resize tile", (i)=>{ + let l = commands_n(i, e), m = commands_s(l, t); + m.tile = { + ...m.tile, + w: o, + h: d, + size: detectTileSize(o, d) + }, commands_a(l, new Set([ + t + ])); + }); + } +} +class AddNodeCommand extends EditCommand { + constructor(e, t){ + super("Add tile", (o)=>{ + let r = commands_n(o, e); + r.nodes.push(JSON.parse(JSON.stringify(t))), commands_a(r, new Set()); + }); + } +} +class RemoveNodeCommand extends EditCommand { + constructor(e, t){ + super("Remove tile and contents", (o)=>{ + let r = commands_n(o, e); + commands_s(r, t); + let d = new Set([ + t, + ...descendantsOf(indexNodes(r.nodes), t).map((e)=>e.id) + ]); + for (let e of d)commands_s(r, e); + r.nodes = r.nodes.filter((e)=>!d.has(e.id)); + }); + } +} +class UpdateConfigCommand extends EditCommand { + constructor(e, t, o, r){ + super("Configure widget", (d)=>{ + let i = commands_s(commands_n(d, e), t); + if ("widget" !== i.kind) throw Error("Not a widget"); + i.config = JSON.parse(JSON.stringify(o)), void 0 !== r && (i.title = r); + }); + } +} +class CreateGroupCommand extends AddNodeCommand { + constructor(e, t){ + super(e, t); + } +} +class DissolveGroupCommand extends EditCommand { + constructor(e, t){ + super("Dissolve group", (o)=>{ + let r = commands_n(o, e), d = commands_s(r, t); + if ("group" !== d.kind) throw Error("Not a group"); + let i = r.nodes.filter((e)=>e.parentId === t), l = null === d.parentId ? 12 : commands_s(r, d.parentId, !0).tile.w; + if (i.some((e)=>e.tile.w > l)) throw Error("A child tile is wider than the destination group"); + for (let e of i){ + commands_s(r, e.id), e.parentId = d.parentId; + let t = null === d.parentId ? void 0 : commands_s(r, d.parentId, !0); + e.tile.x = Math.max(0, Math.min(e.tile.x + d.tile.x, (t?.tile.w ?? 12) - e.tile.w)), e.tile.y += d.tile.y; + } + r.nodes = r.nodes.filter((e)=>e.id !== t), commands_a(r, new Set()); + }); + } +} +class ToggleLockCommand extends EditCommand { + constructor(e, t){ + super("Toggle lock", (o)=>{ + let r = commands_s(commands_n(o, e), t, !0); + r.locked = !r.locked; + }); + } +} +class ToggleHideCommand extends EditCommand { + constructor(e, t){ + super("Toggle visibility", (o)=>{ + let r = commands_s(commands_n(o, e), t); + r.hidden = !r.hidden; + }); + } +} +class ToggleCollapseCommand extends EditCommand { + constructor(e, t){ + super("Toggle collapse", (o)=>{ + let r = commands_s(commands_n(o, e), t); + "group" === r.kind && (r.collapsed = !r.collapsed); + }); + } +} +class BatchCommand extends EditCommand { + constructor(e, t = "Batch edit"){ + super(t, (t)=>{ + let o = t; + for (let t of e)o = t.execute(o); + Object.assign(t, o); + }); + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/core/history.ts + +class History { + limit; + past = []; + future = []; + baseline; + current; + constructor(e, i = 100){ + this.limit = i, validateDocument(e), this.baseline = cloneDocument(e), this.current = cloneDocument(e); + } + get document() { + return cloneDocument(this.current); + } + get canUndo() { + return this.past.length > 0; + } + get canRedo() { + return this.future.length > 0; + } + get dirty() { + return JSON.stringify(this.current) !== JSON.stringify(this.baseline); + } + execute(t) { + let s = t.execute(this.current); + JSON.stringify(s) !== JSON.stringify(this.current) && (this.past.push(this.current), this.past.length > this.limit && this.past.shift(), this.current = s, this.future = []); + } + undo() { + let t = this.past.pop(); + t && (this.future.push(this.current), this.current = t); + } + redo() { + let t = this.future.pop(); + t && (this.past.push(this.current), this.current = t); + } + saved(e) { + validateDocument(e), this.current = cloneDocument(e), this.baseline = cloneDocument(e), this.past = [], this.future = []; + } + cancel() { + this.saved(this.baseline); + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/core/store.ts + +class DashboardStore { + history; + activeDashboardId; + isEditing = !1; + previewColumns = null; + selection = new Set(); + collapsed = new Set(); + listeners = new Set(); + constructor(s){ + this.history = new History(s), this.activeDashboardId = s.defaultDashboardId, this.resetCollapsed(); + } + get document() { + return this.history.document; + } + get activeDashboard() { + return this.document.dashboards.find((t)=>t.id === this.activeDashboardId) ?? this.document.dashboards[0]; + } + subscribe(t) { + return this.listeners.add(t), ()=>this.listeners.delete(t); + } + emit() { + this.document.dashboards.some((t)=>t.id === this.activeDashboardId) || (this.activeDashboardId = this.document.defaultDashboardId); + let t = new Set(this.activeDashboard.nodes.map((t)=>t.id)); + for (let s of this.selection)t.has(s) || this.selection.delete(s); + for (let t of [ + ...this.listeners + ])t(); + } + execute(t) { + if (!this.isEditing) throw Error("Enter edit mode first"); + this.history.execute(t), this.emit(); + } + undo() { + this.isEditing && (this.history.undo(), this.emit()); + } + redo() { + this.isEditing && (this.history.redo(), this.emit()); + } + edit() { + this.isEditing = !0, this.emit(); + } + cancel() { + this.history.cancel(), this.isEditing = !1, this.previewColumns = null, this.selection.clear(), this.resetCollapsed(), this.emit(); + } + saved(t) { + this.history.saved(t), this.isEditing = !1, this.previewColumns = null, this.selection.clear(), this.resetCollapsed(), this.emit(); + } + switchDashboard(t) { + if (!this.document.dashboards.some((s)=>s.id === t)) throw Error("Dashboard not found"); + this.activeDashboardId = t, this.selection.clear(), this.emit(); + } + resetCollapsed() { + for (let t of (this.collapsed.clear(), this.document.dashboards))for (let s of t.nodes)"group" === s.kind && s.collapsed && this.collapsed.add(s.id); + } +} + +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/utils.js +/** + * utils.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ +/** + * @internal Checks for obsolete method names and provides deprecation warnings. + * Creates a wrapper function that logs a deprecation warning when called. + * + * @param self the object context to apply the function to + * @param f the new function to call + * @param oldName the deprecated method name + * @param newName the new method name to use instead + * @param rev the version when the deprecation was introduced + * @returns a wrapper function that warns about deprecation + */ +// eslint-disable-next-line +function obsolete(self, f, oldName, newName, rev) { + const wrapper = (...args) => { + console.warn('gridstack.js: Function `' + oldName + '` is deprecated in ' + rev + ' and has been replaced ' + + 'with `' + newName + '`. It will be **removed** in a future release'); + return f.apply(self, args); + }; + wrapper.prototype = f.prototype; + return wrapper; +} +/** + * @internal Checks for obsolete grid options and migrates them to new names. + * Automatically copies old option values to new option names and shows deprecation warnings. + * + * @param opts the options object to check and migrate + * @param oldName the deprecated option name + * @param newName the new option name to use instead + * @param rev the version when the deprecation was introduced + */ +function obsoleteOpts(opts, oldName, newName, rev) { + if (opts[oldName] !== undefined) { + opts[newName] = opts[oldName]; + console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + ' and has been replaced with `' + + newName + '`. It will be **removed** in a future release'); + } +} +/** + * @internal Checks for obsolete grid options that have been completely removed. + * Shows deprecation warnings for options that are no longer supported. + * + * @param opts the options object to check + * @param oldName the removed option name + * @param rev the version when the option was removed + * @param info additional information about the removal + */ +function obsoleteOptsDel(opts, oldName, rev, info) { + if (opts[oldName] !== undefined) { + console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + info); + } +} +/** + * @internal Checks for obsolete HTML element attributes and migrates them. + * Automatically copies old attribute values to new attribute names and shows deprecation warnings. + * + * @param el the HTML element to check and migrate + * @param oldName the deprecated attribute name + * @param newName the new attribute name to use instead + * @param rev the version when the deprecation was introduced + */ +function obsoleteAttr(el, oldName, newName, rev) { + const oldAttr = el.getAttribute(oldName); + if (oldAttr !== null) { + el.setAttribute(newName, oldAttr); + console.warn('gridstack.js: attribute `' + oldName + '`=' + oldAttr + ' is deprecated on this object in ' + rev + ' and has been replaced with `' + + newName + '`. It will be **removed** in a future release'); + } +} +/** + * Collection of utility methods used throughout GridStack. + * These are general-purpose helper functions for DOM manipulation, + * positioning calculations, object operations, and more. + */ +class Utils { + /** + * Convert a potential selector into an actual list of HTML elements. + * Supports CSS selectors, element references, and special ID handling. + * + * @param els selector string, HTMLElement, or array of elements + * @param root optional root element to search within (defaults to document, useful for shadow DOM) + * @returns array of HTML elements matching the selector + * + * @example + * const elements = Utils.getElements('.grid-item'); + * const byId = Utils.getElements('#myWidget'); + * const fromShadow = Utils.getElements('.item', shadowRoot); + */ + static getElements(els, root = document) { + if (typeof els === 'string') { + const doc = ('getElementById' in root) ? root : undefined; + // Note: very common for people use to id='1,2,3' which is only legal as HTML5 id, but not CSS selectors + // so if we start with a number, assume it's an id and just return that one item... + // see https://github.com/gridstack/gridstack.js/issues/2234#issuecomment-1523796562 + if (doc && !isNaN(+els[0])) { // start with digit + const el = doc.getElementById(els); + return el ? [el] : []; + } + let list = root.querySelectorAll(els); + if (!list.length && els[0] !== '.' && els[0] !== '#') { + list = root.querySelectorAll('.' + els); + if (!list.length) { + list = root.querySelectorAll('#' + els); + } + } + return Array.from(list); + } + return [els]; + } + /** + * Convert a potential selector into a single HTML element. + * Similar to getElements() but returns only the first match. + * + * @param els selector string or HTMLElement + * @param root optional root element to search within (defaults to document) + * @returns the first HTML element matching the selector, or null if not found + * + * @example + * const element = Utils.getElement('#myWidget'); + * const first = Utils.getElement('.grid-item'); + */ + static getElement(els, root = document) { + if (typeof els === 'string') { + const doc = ('getElementById' in root) ? root : undefined; + if (!els.length) + return null; + if (doc && els[0] === '#') { + return doc.getElementById(els.substring(1)); + } + if (els[0] === '#' || els[0] === '.' || els[0] === '[') { + return root.querySelector(els); + } + // if we start with a digit, assume it's an id (error calling querySelector('#1')) as class are not valid CSS + if (doc && !isNaN(+els[0])) { // start with digit + return doc.getElementById(els); + } + // finally try string, then id, then class + let el = root.querySelector(els); + if (doc && !el) { + el = doc.getElementById(els); + } + if (!el) { + el = root.querySelector('.' + els); + } + return el; + } + return els; + } + /** + * Check if a widget should be lazy loaded based on node or grid settings. + * + * @param n the grid node to check + * @returns true if the item should be lazy loaded + * + * @example + * if (Utils.lazyLoad(node)) { + * // Set up intersection observer for lazy loading + * } + */ + static lazyLoad(n) { + return n.lazyLoad || n.grid?.opts?.lazyLoad && n.lazyLoad !== false; + } + /** + * Create a div element with the specified CSS classes. + * + * @param classes array of CSS class names to add + * @param parent optional parent element to append the div to + * @returns the created div element + * + * @example + * const div = Utils.createDiv(['grid-item', 'draggable']); + * const nested = Utils.createDiv(['content'], parentDiv); + */ + static createDiv(classes, parent) { + const el = document.createElement('div'); + classes.forEach(c => { if (c) + el.classList.add(c); }); + parent?.appendChild(el); + return el; + } + /** + * Check if a widget should resize to fit its content. + * + * @param n the grid node to check (can be undefined) + * @param strict if true, only returns true for explicit sizeToContent:true (not numbers) + * @returns true if the widget should resize to content + * + * @example + * if (Utils.shouldSizeToContent(node)) { + * // Trigger content-based resizing + * } + */ + static shouldSizeToContent(n, strict = false) { + return n?.grid && (strict ? + (n.sizeToContent === true || (n.grid.opts.sizeToContent === true && n.sizeToContent === undefined)) : + (!!n.sizeToContent || (n.grid.opts.sizeToContent && n.sizeToContent !== false))); + } + /** + * Check if two grid positions overlap/intersect. + * + * @param a first position with x, y, w, h properties + * @param b second position with x, y, w, h properties + * @returns true if the positions overlap + * + * @example + * const overlaps = Utils.isIntercepted( + * {x: 0, y: 0, w: 2, h: 1}, + * {x: 1, y: 0, w: 2, h: 1} + * ); // true - they overlap + */ + static isIntercepted(a, b) { + return !(a.y >= b.y + b.h || a.y + a.h <= b.y || a.x + a.w <= b.x || a.x >= b.x + b.w); + } + /** + * Check if two grid positions are touching (edges or corners). + * + * @param a first position + * @param b second position + * @returns true if the positions are touching + * + * @example + * const touching = Utils.isTouching( + * {x: 0, y: 0, w: 2, h: 1}, + * {x: 2, y: 0, w: 1, h: 1} + * ); // true - they share an edge + */ + static isTouching(a, b) { + return Utils.isIntercepted(a, { x: b.x - 0.5, y: b.y - 0.5, w: b.w + 1, h: b.h + 1 }); + } + /** + * Calculate the overlapping area between two grid positions. + * + * @param a first position + * @param b second position + * @returns the area of overlap (0 if no overlap) + * + * @example + * const overlap = Utils.areaIntercept( + * {x: 0, y: 0, w: 3, h: 2}, + * {x: 1, y: 0, w: 3, h: 2} + * ); // returns 4 (2x2 overlap) + */ + static areaIntercept(a, b) { + const x0 = (a.x > b.x) ? a.x : b.x; + const x1 = (a.x + a.w < b.x + b.w) ? a.x + a.w : b.x + b.w; + if (x1 <= x0) + return 0; // no overlap + const y0 = (a.y > b.y) ? a.y : b.y; + const y1 = (a.y + a.h < b.y + b.h) ? a.y + a.h : b.y + b.h; + if (y1 <= y0) + return 0; // no overlap + return (x1 - x0) * (y1 - y0); + } + /** + * Calculate the total area of a grid position. + * + * @param a position with width and height + * @returns the total area (width * height) + * + * @example + * const area = Utils.area({x: 0, y: 0, w: 3, h: 2}); // returns 6 + */ + static area(a) { + return a.w * a.h; + } + /** + * Sort an array of grid nodes by position (y first, then x). + * + * @param nodes array of nodes to sort + * @param dir sort direction: 1 for ascending (top-left first), -1 for descending + * @returns the sorted array (modifies original) + * + * @example + * const sorted = Utils.sort(nodes); // Sort top-left to bottom-right + * const reverse = Utils.sort(nodes, -1); // Sort bottom-right to top-left + */ + static sort(nodes, dir = 1) { + const und = 10000; + return nodes.sort((a, b) => { + const diffY = dir * ((a.y ?? und) - (b.y ?? und)); + if (diffY === 0) + return dir * ((a.x ?? und) - (b.x ?? und)); + return diffY; + }); + } + /** + * Find a grid node by its ID. + * + * @param nodes array of nodes to search + * @param id the ID to search for + * @returns the node with matching ID, or undefined if not found + * + * @example + * const node = Utils.find(nodes, 'widget-1'); + * if (node) console.log('Found node at:', node.x, node.y); + */ + static find(nodes, id) { + return id ? nodes.find(n => n.id === id) : undefined; + } + /** + * Convert various value types to boolean. + * Handles strings like 'false', 'no', '0' as false. + * + * @param v value to convert + * @returns boolean representation + * + * @example + * Utils.toBool('true'); // true + * Utils.toBool('false'); // false + * Utils.toBool('no'); // false + * Utils.toBool('1'); // true + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + static toBool(v) { + if (typeof v === 'boolean') { + return v; + } + if (typeof v === 'string') { + v = v.toLowerCase(); + return !(v === '' || v === 'no' || v === 'false' || v === '0'); + } + return Boolean(v); + } + /** + * Convert a string value to a number, handling null and empty strings. + * + * @param value string or null value to convert + * @returns number value, or undefined for null/empty strings + * + * @example + * Utils.toNumber('42'); // 42 + * Utils.toNumber(''); // undefined + * Utils.toNumber(null); // undefined + */ + static toNumber(value) { + return (value === null || value.length === 0) ? undefined : Number(value); + } + /** + * Parse a height value with units into numeric value and unit string. + * Supports px, em, rem, vh, vw, %, cm, mm units. + * + * @param val height value as number or string with units + * @returns object with h (height) and unit properties + * + * @example + * Utils.parseHeight('100px'); // {h: 100, unit: 'px'} + * Utils.parseHeight('2rem'); // {h: 2, unit: 'rem'} + * Utils.parseHeight(50); // {h: 50, unit: 'px'} + */ + static parseHeight(val) { + let h; + let unit = 'px'; + if (typeof val === 'string') { + if (val === 'auto' || val === '') + h = 0; + else { + const match = val.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/); + if (!match) { + throw new Error(`Invalid height val = ${val}`); + } + unit = match[2] || 'px'; + h = parseFloat(match[1]); + } + } + else { + h = val; + } + return { h, unit }; + } + /** + * Copy unset fields from source objects to target object (shallow merge with defaults). + * Similar to Object.assign but only sets undefined/null fields. + * + * @param target the object to copy defaults into + * @param sources one or more source objects to copy defaults from + * @returns the modified target object + * + * @example + * const config = { width: 100 }; + * Utils.defaults(config, { width: 200, height: 50 }); + * // config is now { width: 100, height: 50 } + */ + // eslint-disable-next-line + static defaults(target, ...sources) { + sources.forEach(source => { + for (const key in source) { + if (!source.hasOwnProperty(key)) + return; + if (target[key] === null || target[key] === undefined) { + target[key] = source[key]; + } + else if (typeof source[key] === 'object' && typeof target[key] === 'object') { + // property is an object, recursively add it's field over... #1373 + Utils.defaults(target[key], source[key]); + } + } + }); + return target; + } + /** + * Compare two objects for equality (shallow comparison). + * Checks if objects have the same fields and values at one level deep. + * + * @param a first object to compare + * @param b second object to compare + * @returns true if objects have the same values + * + * @example + * Utils.same({x: 1, y: 2}, {x: 1, y: 2}); // true + * Utils.same({x: 1}, {x: 1, y: 2}); // false + */ + static same(a, b) { + if (typeof a !== 'object') + return a == b; + if (typeof a !== typeof b) + return false; + // else we have object, check just 1 level deep for being same things... + if (Object.keys(a).length !== Object.keys(b).length) + return false; + for (const key in a) { + if (a[key] !== b[key]) + return false; + } + return true; + } + /** + * Copy position and size properties from one widget to another. + * Copies x, y, w, h and optionally min/max constraints. + * + * @param a target widget to copy to + * @param b source widget to copy from + * @param doMinMax if true, also copy min/max width/height constraints + * @returns the target widget (a) + * + * @example + * Utils.copyPos(widget1, widget2); // Copy position/size + * Utils.copyPos(widget1, widget2, true); // Also copy constraints + */ + static copyPos(a, b, doMinMax = false) { + if (b.x !== undefined) + a.x = b.x; + if (b.y !== undefined) + a.y = b.y; + if (b.w !== undefined) + a.w = b.w; + if (b.h !== undefined) + a.h = b.h; + if (doMinMax) { + if (b.minW) + a.minW = b.minW; + if (b.minH) + a.minH = b.minH; + if (b.maxW) + a.maxW = b.maxW; + if (b.maxH) + a.maxH = b.maxH; + } + return a; + } + /** true if a and b has same size & position */ + static samePos(a, b) { + return a && b && a.x === b.x && a.y === b.y && (a.w || 1) === (b.w || 1) && (a.h || 1) === (b.h || 1); + } + /** given a node, makes sure it's min/max are valid */ + static sanitizeMinMax(node) { + // remove 0, undefine, null + if (!node.minW) { + delete node.minW; + } + if (!node.minH) { + delete node.minH; + } + if (!node.maxW) { + delete node.maxW; + } + if (!node.maxH) { + delete node.maxH; + } + } + /** removes field from the first object if same as the second objects (like diffing) and internal '_' for saving */ + static removeInternalAndSame(a, b) { + if (typeof a !== 'object' || typeof b !== 'object') + return; + for (let key in a) { + const aVal = a[key]; + const bVal = b[key]; + if (key[0] === '_' || aVal === bVal) { + delete a[key]; + } + else if (aVal && typeof aVal === 'object' && bVal !== undefined) { + Utils.removeInternalAndSame(aVal, bVal); + if (!Object.keys(aVal).length) { + delete a[key]; + } + } + } + } + /** removes internal fields '_' and default values for saving */ + static removeInternalForSave(n, removeEl = true) { + for (let key in n) { + if (key[0] === '_' || n[key] === null || n[key] === undefined) + delete n[key]; + } + delete n.grid; + if (removeEl) + delete n.el; + // delete default values (will be re-created on read) + if (!n.autoPosition) + delete n.autoPosition; + if (!n.noResize) + delete n.noResize; + if (!n.noMove) + delete n.noMove; + if (!n.locked) + delete n.locked; + if (n.w === 1 || n.w === n.minW) + delete n.w; + if (n.h === 1 || n.h === n.minH) + delete n.h; + } + /** return the closest parent (or itself) matching the given class */ + // static closestUpByClass(el: HTMLElement, name: string): HTMLElement { + // while (el) { + // if (el.classList.contains(name)) return el; + // el = el.parentElement + // } + // return null; + // } + /** delay calling the given function for given delay, preventing new calls from happening while waiting */ + static throttle(func, delay) { + let isWaiting = false; + return (...args) => { + if (!isWaiting) { + isWaiting = true; + setTimeout(() => { func(...args); isWaiting = false; }, delay); + } + }; + } + static removePositioningStyles(el) { + const style = el.style; + if (style.position) { + style.removeProperty('position'); + } + if (style.left) { + style.removeProperty('left'); + } + if (style.top) { + style.removeProperty('top'); + } + if (style.width) { + style.removeProperty('width'); + } + if (style.height) { + style.removeProperty('height'); + } + } + /** @internal returns the passed element if scrollable, else the closest parent that will, up to the entire document scrolling element */ + static getScrollElement(el) { + if (!el) + return document.scrollingElement || document.documentElement; // IE support + const style = getComputedStyle(el); + const overflowRegex = /(auto|scroll)/; + if (overflowRegex.test(style.overflow + style.overflowY)) { + return el; + } + else { + return Utils.getScrollElement(el.parentElement); + } + } + /** @internal */ + static updateScrollPosition(el, position, distance) { + const scrollEl = Utils.getScrollElement(el); + if (!scrollEl) + return; + const elRect = el.getBoundingClientRect(); + const scrollRect = scrollEl.getBoundingClientRect(); + const innerHeightOrClientHeight = (window.innerHeight || document.documentElement.clientHeight); + const offsetDiffDown = elRect.bottom - Math.min(scrollRect.bottom, innerHeightOrClientHeight); + const offsetDiffUp = elRect.top - Math.max(scrollRect.top, 0); + const prevScroll = scrollEl.scrollTop; + if (offsetDiffUp < 0 && distance < 0) { + // scroll up + if (el.offsetHeight > scrollRect.height) { + scrollEl.scrollTop += distance; + } + else { + scrollEl.scrollTop += Math.abs(offsetDiffUp) > Math.abs(distance) ? distance : offsetDiffUp; + } + } + else if (offsetDiffDown > 0 && distance > 0) { + // scroll down + if (el.offsetHeight > scrollRect.height) { + scrollEl.scrollTop += distance; + } + else { + scrollEl.scrollTop += offsetDiffDown > distance ? distance : offsetDiffDown; + } + } + position.top += scrollEl.scrollTop - prevScroll; + } + /** + * @internal Function used to scroll the page. + * + * @param event `MouseEvent` that triggers the resize + * @param el `HTMLElement` that's being resized + * @param distance Distance from the V edges to start scrolling + */ + static updateScrollResize(event, el, distance) { + const scrollEl = Utils.getScrollElement(el); + const height = scrollEl.clientHeight; + // #1727 event.clientY is relative to viewport, so must compare this against position of scrollEl getBoundingClientRect().top + // #1745 Special situation if scrollEl is document 'html': here browser spec states that + // clientHeight is height of viewport, but getBoundingClientRect() is rectangle of html element; + // this discrepancy arises because in reality scrollbar is attached to viewport, not html element itself. + const offsetTop = (scrollEl === Utils.getScrollElement()) ? 0 : scrollEl.getBoundingClientRect().top; + const pointerPosY = event.clientY - offsetTop; + const top = pointerPosY < distance; + const bottom = pointerPosY > height - distance; + if (top) { + // This also can be done with a timeout to keep scrolling while the mouse is + // in the scrolling zone. (will have smoother behavior) + scrollEl.scrollBy({ behavior: 'smooth', top: pointerPosY - distance }); + } + else if (bottom) { + scrollEl.scrollBy({ behavior: 'smooth', top: distance - (height - pointerPosY) }); + } + } + /** single level clone, returning a new object with same top fields. This will share sub objects and arrays */ + static clone(obj) { + if (obj === null || obj === undefined || typeof (obj) !== 'object') { + return obj; + } + // return Object.assign({}, obj); + if (obj instanceof Array) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return [...obj]; + } + return { ...obj }; + } + /** + * Recursive clone version that returns a full copy, checking for nested objects and arrays ONLY. + * Note: this will use as-is any key starting with double __ (and not copy inside) some lib have circular dependencies. + */ + static cloneDeep(obj) { + // list of fields we will skip during cloneDeep (nested objects, other internal) + const skipFields = ['parentGrid', 'el', 'grid', 'subGrid', 'engine']; + // return JSON.parse(JSON.stringify(obj)); // doesn't work with date format ? + const ret = Utils.clone(obj); + for (const key in ret) { + // NOTE: we don't support function/circular dependencies so skip those properties for now... + if (ret.hasOwnProperty(key) && typeof (ret[key]) === 'object' && key.substring(0, 2) !== '__' && !skipFields.find(k => k === key)) { + ret[key] = Utils.cloneDeep(obj[key]); + } + } + return ret; + } + /** deep clone the given HTML node, removing teh unique id field */ + static cloneNode(el) { + const node = el.cloneNode(true); + node.removeAttribute('id'); + return node; + } + static appendTo(el, parent) { + let parentNode; + if (typeof parent === 'string') { + parentNode = Utils.getElement(parent); + } + else { + parentNode = parent; + } + if (parentNode) { + parentNode.appendChild(el); + } + } + // public static setPositionRelative(el: HTMLElement): void { + // if (!(/^(?:r|a|f)/).test(getComputedStyle(el).position)) { + // el.style.position = "relative"; + // } + // } + static addElStyles(el, styles) { + if (styles instanceof Object) { + for (const s in styles) { + if (styles.hasOwnProperty(s)) { + if (Array.isArray(styles[s])) { + // support fallback value + styles[s].forEach(val => { + el.style[s] = val; + }); + } + else { + el.style[s] = styles[s]; + } + } + } + } + } + static initEvent(e, info) { + const evt = { type: info.type }; + const obj = { + button: 0, + which: 0, + buttons: 1, + bubbles: true, + cancelable: true, + target: info.target ? info.target : e.target + }; + ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].forEach(p => evt[p] = e[p]); // keys + ['pageX', 'pageY', 'clientX', 'clientY', 'screenX', 'screenY'].forEach(p => evt[p] = e[p]); // point info + return { ...evt, ...obj }; + } + /** copies the MouseEvent (or convert Touch) properties and sends it as another event to the given target */ + static simulateMouseEvent(e, simulatedType, target) { + const me = e; + const simulatedEvent = new MouseEvent(simulatedType, { + bubbles: true, + composed: true, + cancelable: true, + view: window, + detail: 1, + screenX: e.screenX, + screenY: e.screenY, + clientX: e.clientX, + clientY: e.clientY, + ctrlKey: me.ctrlKey ?? false, + altKey: me.altKey ?? false, + shiftKey: me.shiftKey ?? false, + metaKey: me.metaKey ?? false, + button: 0, + relatedTarget: e.target + }); + (target || e.target).dispatchEvent(simulatedEvent); + } + /** + * defines an element that is used to get the offset and scale from grid transforms + * returns the scale and offsets from said element + */ + static getValuesFromTransformedElement(parent) { + const transformReference = document.createElement('div'); + Utils.addElStyles(transformReference, { + opacity: '0', + position: 'fixed', + top: 0 + 'px', + left: 0 + 'px', + width: '1px', + height: '1px', + zIndex: '-999999', + }); + parent.appendChild(transformReference); + const transformValues = transformReference.getBoundingClientRect(); + parent.removeChild(transformReference); + transformReference.remove(); + return { + xScale: 1 / transformValues.width, + yScale: 1 / transformValues.height, + xOffset: transformValues.left, + yOffset: transformValues.top, + }; + } + /** swap the given object 2 field values */ + static swap(o, a, b) { + if (!o) + return; + const tmp = o[a]; + o[a] = o[b]; + o[b] = tmp; + } + /** returns true if event is inside the given element rectangle */ + // Note: Safari Mac has null event.relatedTarget which causes #1684 so check if DragEvent is inside the coordinates instead + // Utils.el.contains(event.relatedTarget as HTMLElement) + // public static inside(e: MouseEvent, el: HTMLElement): boolean { + // // srcElement, toElement, target: all set to placeholder when leaving simple grid, so we can't use that (Chrome) + // const target: HTMLElement = e.relatedTarget || (e as any).fromElement; + // if (!target) { + // const { bottom, left, right, top } = el.getBoundingClientRect(); + // return (e.x < right && e.x > left && e.y < bottom && e.y > top); + // } + // return el.contains(target); + // } + /** true if the item can be rotated (checking for prop, not space available) */ + static canBeRotated(n) { + return !(!n || n.w === n.h || n.locked || n.noResize || n.grid?.opts.disableResize || (n.minW && n.minW === n.maxW) || (n.minH && n.minH === n.maxH)); + } +} +//# sourceMappingURL=utils.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/gridstack-engine.js +/** + * gridstack-engine.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ + +/** + * Defines the GridStack engine that handles all grid layout calculations and node positioning. + * This is the core engine that performs grid manipulation without any DOM operations. + * + * The engine manages: + * - Node positioning and collision detection + * - Layout algorithms (compact, float, etc.) + * - Grid resizing and column changes + * - Widget movement and resizing logic + * + * NOTE: Values should not be modified directly - use the main GridStack API instead + * to ensure proper DOM updates and event triggers. + */ +class GridStackEngine { + constructor(opts = {}) { + this.addedNodes = []; + this.removedNodes = []; + this.defaultColumn = 12; + this.column = opts.column || this.defaultColumn; + if (this.column > this.defaultColumn) + this.defaultColumn = this.column; + this.maxRow = opts.maxRow; + this._float = opts.float; + this.nodes = opts.nodes || []; + this.onChange = opts.onChange; + } + /** + * Enable/disable batch mode for multiple operations to optimize performance. + * When enabled, layout updates are deferred until batch mode is disabled. + * + * @param flag true to enable batch mode, false to disable and apply changes + * @param doPack if true (default), pack/compact nodes when disabling batch mode + * @returns the engine instance for chaining + * + * @example + * // Start batch mode for multiple operations + * engine.batchUpdate(true); + * engine.addNode(node1); + * engine.addNode(node2); + * engine.batchUpdate(false); // Apply all changes at once + */ + batchUpdate(flag = true, doPack = true) { + if (!!this.batchMode === flag) + return this; + this.batchMode = flag; + if (flag) { + this._prevFloat = this._float; + this._float = true; // let things go anywhere for now... will restore and possibly reposition later + this.cleanNodes(); + this.saveInitial(); // since begin update (which is called multiple times) won't do this + } + else { + this._float = this._prevFloat; + delete this._prevFloat; + if (doPack) + this._packNodes(); + this._notify(); + } + return this; + } + // use entire row for hitting area (will use bottom reverse sorted first) if we not actively moving DOWN and didn't already skip + _useEntireRowArea(node, nn) { + return (!this.float || this.batchMode && !this._prevFloat) && !this._hasLocked && (!node._moving || node._skipDown || nn.y <= node.y); + } + /** @internal fix collision on given 'node', going to given new location 'nn', with optional 'collide' node already found. + * return true if we moved. */ + _fixCollisions(node, nn = node, collide, opt = {}) { + this.sortNodes(-1); // from last to first, so recursive collision move items in the right order + collide = collide || this.collide(node, nn); // REAL area collide for swap and skip if none... + if (!collide) + return false; + // swap check: if we're actively moving in gravity mode, see if we collide with an object the same size + if (node._moving && !opt.nested && !this.float) { + if (this.swap(node, collide)) + return true; + } + // during while() collisions MAKE SURE to check entire row so larger items don't leap frog small ones (push them all down starting last in grid) + let area = nn; + if (!this._loading && this._useEntireRowArea(node, nn)) { + area = { x: 0, w: this.column, y: nn.y, h: nn.h }; + collide = this.collide(node, area, opt.skip); // force new hit + } + let didMove = false; + const newOpt = { nested: true, pack: false }; + let counter = 0; + while (collide = collide || this.collide(node, area, opt.skip)) { // could collide with more than 1 item... so repeat for each + if (counter++ > this.nodes.length * 2) { + throw new Error("Infinite collide check"); + } + let moved; + // if colliding with a locked item OR loading (move after) OR moving down with top gravity (and collide could move up) -> skip past the collide, + // but remember that skip down so we only do this once (and push others otherwise). + if (collide.locked || this._loading || node._moving && !node._skipDown && nn.y > node.y && !this.float && + // can take space we had, or before where we're going + (!this.collide(collide, { ...collide, y: node.y }, node) || !this.collide(collide, { ...collide, y: nn.y - collide.h }, node))) { + node._skipDown = (node._skipDown || nn.y > node.y); + const newNN = { ...nn, y: collide.y + collide.h, ...newOpt }; + // pretent we moved to where we are now so we can continue any collision checks #2492 + moved = this._loading && Utils.samePos(node, newNN) ? true : this.moveNode(node, newNN); + if ((collide.locked || this._loading) && moved) { + Utils.copyPos(nn, node); // moving after lock become our new desired location + } + else if (!collide.locked && moved && opt.pack) { + // we moved after and will pack: do it now and keep the original drop location, but past the old collide to see what else we might push way + this._packNodes(); + nn.y = collide.y + collide.h; + Utils.copyPos(node, nn); + } + didMove = didMove || moved; + } + else { + // move collide down *after* where we will be, ignoring where we are now (don't collide with us) + moved = this.moveNode(collide, { ...collide, y: nn.y + nn.h, skip: node, ...newOpt }); + } + if (!moved) + return didMove; // break inf loop if we couldn't move after all (ex: maxRow, fixed) + collide = undefined; + } + return didMove; + } + /** + * Return the first node that intercepts/collides with the given node or area. + * Used for collision detection during drag and drop operations. + * + * @param skip the node to skip in collision detection (usually the node being moved) + * @param area the area to check for collisions (defaults to skip node's area) + * @param skip2 optional second node to skip in collision detection + * @returns the first colliding node, or undefined if no collision + * + * @example + * const colliding = engine.collide(draggedNode, {x: 2, y: 1, w: 2, h: 1}); + * if (colliding) { + * console.log('Would collide with:', colliding.id); + * } + */ + collide(skip, area = skip, skip2) { + const skipId = skip._id; + const skip2Id = skip2?._id; + return this.nodes.find(n => n._id !== skipId && n._id !== skip2Id && Utils.isIntercepted(n, area)); + } + /** + * Return all nodes that intercept/collide with the given node or area. + * Similar to collide() but returns all colliding nodes instead of just the first. + * + * @param skip the node to skip in collision detection + * @param area the area to check for collisions (defaults to skip node's area) + * @param skip2 optional second node to skip in collision detection + * @returns array of all colliding nodes + * + * @example + * const allCollisions = engine.collideAll(draggedNode); + * console.log('Colliding with', allCollisions.length, 'nodes'); + */ + collideAll(skip, area = skip, skip2) { + const skipId = skip._id; + const skip2Id = skip2?._id; + return this.nodes.filter(n => n._id !== skipId && n._id !== skip2Id && Utils.isIntercepted(n, area)); + } + /** does a pixel coverage collision based on where we started, returning the node that has the most coverage that is >50% mid line */ + directionCollideCoverage(node, o, collides) { + if (!o.rect || !node._rect) + return; + const r0 = node._rect; // where started + const r = { ...o.rect }; // where we are + // update dragged rect to show where it's coming from (above or below, etc...) + if (r.y > r0.y) { + r.h += r.y - r0.y; + r.y = r0.y; + } + else { + r.h += r0.y - r.y; + } + if (r.x > r0.x) { + r.w += r.x - r0.x; + r.x = r0.x; + } + else { + r.w += r0.x - r.x; + } + let collide; + let overMax = 0.5; // need >50% + for (let n of collides) { + if (n.locked || !n._rect) { + break; + } + const r2 = n._rect; // overlapping target + let yOver = Number.MAX_VALUE, xOver = Number.MAX_VALUE; + // depending on which side we started from, compute the overlap % of coverage + // (ex: from above/below we only compute the max horizontal line coverage) + if (r0.y < r2.y) { // from above + yOver = ((r.y + r.h) - r2.y) / r2.h; + } + else if (r0.y + r0.h > r2.y + r2.h) { // from below + yOver = ((r2.y + r2.h) - r.y) / r2.h; + } + if (r0.x < r2.x) { // from the left + xOver = ((r.x + r.w) - r2.x) / r2.w; + } + else if (r0.x + r0.w > r2.x + r2.w) { // from the right + xOver = ((r2.x + r2.w) - r.x) / r2.w; + } + const over = Math.min(xOver, yOver); + if (over > overMax) { + overMax = over; + collide = n; + } + } + o.collide = collide; // save it so we don't have to find it again + return collide; + } + /** does a pixel coverage returning the node that has the most coverage by area */ + /* + protected collideCoverage(r: GridStackPosition, collides: GridStackNode[]): {collide: GridStackNode, over: number} { + const collide: GridStackNode; + const overMax = 0; + collides.forEach(n => { + if (n.locked || !n._rect) return; + const over = Utils.areaIntercept(r, n._rect); + if (over > overMax) { + overMax = over; + collide = n; + } + }); + return {collide, over: overMax}; + } + */ + /** + * Cache the pixel rectangles for all nodes used for collision detection during drag operations. + * This optimization converts grid coordinates to pixel coordinates for faster collision detection. + * + * @param w width of a single grid cell in pixels + * @param h height of a single grid cell in pixels + * @param top top margin/padding in pixels + * @param right right margin/padding in pixels + * @param bottom bottom margin/padding in pixels + * @param left left margin/padding in pixels + * @returns the engine instance for chaining + * + * @internal This is typically called by GridStack during resize events + */ + cacheRects(w, h, top, right, bottom, left) { + this.nodes.forEach(n => n._rect = { + y: n.y * h + top, + x: n.x * w + left, + w: n.w * w - left - right, + h: n.h * h - top - bottom + }); + return this; + } + /** + * Attempt to swap the positions of two nodes if they meet swapping criteria. + * Nodes can swap if they are the same size or in the same column/row, not locked, and touching. + * + * @param a first node to swap + * @param b second node to swap + * @returns true if swap was successful, false if not possible, undefined if not applicable + * + * @example + * const swapped = engine.swap(nodeA, nodeB); + * if (swapped) { + * console.log('Nodes swapped successfully'); + * } + */ + swap(a, b) { + if (!b || b.locked || !a || a.locked) + return false; + function _doSwap() { + const x = b.x, y = b.y; + b.x = a.x; + b.y = a.y; // b -> a position + if (a.h != b.h) { + a.x = x; + a.y = b.y + b.h; // a -> goes after b + } + else if (a.w != b.w) { + a.x = b.x + b.w; + a.y = y; // a -> goes after b + } + else { + a.x = x; + a.y = y; // a -> old b position + } + a._dirty = b._dirty = true; + return true; + } + let touching; // remember if we called it (vs undefined) + // same size and same row or column, and touching + if (a.w === b.w && a.h === b.h && (a.x === b.x || a.y === b.y) && (touching = Utils.isTouching(a, b))) + return _doSwap(); + if (touching === false) + return; // IFF ran test and fail, bail out + // check for taking same columns (but different height) and touching + if (a.w === b.w && a.x === b.x && (touching || (touching = Utils.isTouching(a, b)))) { + if (b.y < a.y) { + const t = a; + a = b; + b = t; + } // swap a <-> b vars so a is first + return _doSwap(); + } + if (touching === false) + return; + // check if taking same row (but different width) and touching + if (a.h === b.h && a.y === b.y && (touching || (touching = Utils.isTouching(a, b)))) { + if (b.x < a.x) { + const t = a; + a = b; + b = t; + } // swap a <-> b vars so a is first + return _doSwap(); + } + return false; + } + /** + * Check if the specified rectangular area is empty (no nodes occupy any part of it). + * + * @param x the x coordinate (column) of the area to check + * @param y the y coordinate (row) of the area to check + * @param w the width in columns of the area to check + * @param h the height in rows of the area to check + * @returns true if the area is completely empty, false if any node overlaps + * + * @example + * if (engine.isAreaEmpty(2, 1, 3, 2)) { + * console.log('Area is available for placement'); + * } + */ + isAreaEmpty(x, y, w, h) { + const nn = { x: x || 0, y: y || 0, w: w || 1, h: h || 1 }; + return !this.collide(nn); + } + /** + * Re-layout grid items to reclaim any empty space. + * This optimizes the grid layout by moving items to fill gaps. + * + * @param layout layout algorithm to use: + * - 'compact' (default): find truly empty spaces, may reorder items + * - 'list': keep the sort order exactly the same, move items up sequentially + * @param doSort if true (default), sort nodes by position before compacting + * @returns the engine instance for chaining + * + * @example + * // Compact to fill empty spaces + * engine.compact(); + * + * // Compact preserving item order + * engine.compact('list'); + */ + compact(layout = 'compact', doSort = true) { + if (this.nodes.length === 0) + return this; + if (doSort) + this.sortNodes(); + const wasBatch = this.batchMode; + if (!wasBatch) + this.batchUpdate(); + const wasColumnResize = this._inColumnResize; + if (!wasColumnResize) + this._inColumnResize = true; // faster addNode() + const copyNodes = this.nodes; + this.nodes = []; // pretend we have no nodes to conflict layout to start with... + copyNodes.forEach((n, index, list) => { + let after; + if (!n.locked) { + n.autoPosition = true; + if (layout === 'list' && index) + after = list[index - 1]; + } + this.addNode(n, false, after); // 'false' for add event trigger + }); + if (!wasColumnResize) + delete this._inColumnResize; + if (!wasBatch) + this.batchUpdate(false); + return this; + } + /** + * Enable/disable floating widgets (default: `false`). + * When floating is enabled, widgets can move up to fill empty spaces. + * See [example](http://gridstackjs.com/demo/float.html) + * + * @param val true to enable floating, false to disable + * + * @example + * engine.float = true; // Enable floating + * engine.float = false; // Disable floating (default) + */ + set float(val) { + if (this._float === val) + return; + this._float = val || false; + if (!val) { + this._packNodes()._notify(); + } + } + /** + * Get the current floating mode setting. + * + * @returns true if floating is enabled, false otherwise + * + * @example + * const isFloating = engine.float; + * console.log('Floating enabled:', isFloating); + */ + get float() { return this._float || false; } + /** + * Sort the nodes array from first to last, or reverse. + * This is called during collision/placement operations to enforce a specific order. + * + * @param dir sort direction: 1 for ascending (first to last), -1 for descending (last to first) + * @returns the engine instance for chaining + * + * @example + * engine.sortNodes(); // Sort ascending (default) + * engine.sortNodes(-1); // Sort descending + */ + sortNodes(dir = 1) { + this.nodes = Utils.sort(this.nodes, dir); + return this; + } + /** @internal called to top gravity pack the items back OR revert back to original Y positions when floating */ + _packNodes() { + if (this.batchMode) { + return this; + } + this.sortNodes(); // first to last + if (this.float) { + // restore original Y pos + this.nodes.forEach(n => { + if (n._updating || n._orig === undefined || n.y === n._orig.y) + return; + let newY = n.y; + while (newY > n._orig.y) { + --newY; + const collide = this.collide(n, { x: n.x, y: newY, w: n.w, h: n.h }); + if (!collide) { + n._dirty = true; + n.y = newY; + } + } + }); + } + else { + // top gravity pack + this.nodes.forEach((n, i) => { + if (n.locked) + return; + while (n.y > 0) { + const newY = i === 0 ? 0 : n.y - 1; + const canBeMoved = i === 0 || !this.collide(n, { x: n.x, y: newY, w: n.w, h: n.h }); + if (!canBeMoved) + break; + // Note: must be dirty (from last position) for GridStack::OnChange CB to update positions + // and move items back. The user 'change' CB should detect changes from the original + // starting position instead. + n._dirty = (n.y !== newY); + n.y = newY; + } + }); + } + return this; + } + /** + * Prepare and validate a node's coordinates and values for the current grid. + * This ensures the node has valid position, size, and properties before being added to the grid. + * + * @param node the node to prepare and validate + * @param resizing if true, resize the node down if it's out of bounds; if false, move it to fit + * @returns the prepared node with valid coordinates + * + * @example + * const node = { w: 3, h: 2, content: 'Hello' }; + * const prepared = engine.prepareNode(node); + * console.log('Node prepared at:', prepared.x, prepared.y); + */ + prepareNode(node, resizing) { + node._id = node._id ?? GridStackEngine._idSeq++; + // make sure USER supplied id are unique in our list, else assign a new one as it will create issues during load/update/etc... + const id = node.id; + if (id) { + let count = 1; // append nice _n rather than some random number + while (this.nodes.find(n => n.id === node.id && n !== node)) { + node.id = id + '_' + (count++); + } + } + // if we're missing position, have the grid position us automatically (before we set them to 0,0) + if (node.x === undefined || node.y === undefined || node.x === null || node.y === null) { + node.autoPosition = true; + } + // assign defaults for missing required fields + const defaults = { x: 0, y: 0, w: 1, h: 1 }; + Utils.defaults(node, defaults); + if (!node.autoPosition) { + delete node.autoPosition; + } + if (!node.noResize) { + delete node.noResize; + } + if (!node.noMove) { + delete node.noMove; + } + Utils.sanitizeMinMax(node); + // check for NaN (in case messed up strings were passed. can't do parseInt() || defaults.x above as 0 is valid #) + if (typeof node.x == 'string') { + node.x = Number(node.x); + } + if (typeof node.y == 'string') { + node.y = Number(node.y); + } + if (typeof node.w == 'string') { + node.w = Number(node.w); + } + if (typeof node.h == 'string') { + node.h = Number(node.h); + } + if (isNaN(node.x)) { + node.x = defaults.x; + node.autoPosition = true; + } + if (isNaN(node.y)) { + node.y = defaults.y; + node.autoPosition = true; + } + if (isNaN(node.w)) { + node.w = defaults.w; + } + if (isNaN(node.h)) { + node.h = defaults.h; + } + this.nodeBoundFix(node, resizing); + return node; + } + /** + * Part 2 of preparing a node to fit inside the grid - validates and fixes coordinates and dimensions. + * This ensures the node fits within grid boundaries and respects min/max constraints. + * + * @param node the node to validate and fix + * @param resizing if true, resize the node to fit; if false, move the node to fit + * @returns the engine instance for chaining + * + * @example + * // Fix a node that might be out of bounds + * engine.nodeBoundFix(node, true); // Resize to fit + * engine.nodeBoundFix(node, false); // Move to fit + */ + nodeBoundFix(node, resizing) { + const before = node._orig || Utils.copyPos({}, node); + if (node.maxW) { + node.w = Math.min(node.w || 1, node.maxW); + } + if (node.maxH) { + node.h = Math.min(node.h || 1, node.maxH); + } + if (node.minW) { + node.w = Math.max(node.w || 1, node.minW); + } + if (node.minH) { + node.h = Math.max(node.h || 1, node.minH); + } + // if user loaded a larger than allowed widget for current # of columns, + // remember it's position & width so we can restore back (1 -> 12 column) #1655 #1985 + // IFF we're not in the middle of column resizing! + const saveOrig = (node.x || 0) + (node.w || 1) > this.column; + if (saveOrig && this.column < this.defaultColumn && !this._inColumnResize && !this.skipCacheUpdate && node._id != null && this.findCacheLayout(node, this.defaultColumn) === -1) { + const copy = { ...node }; // need _id + positions + if (copy.autoPosition || copy.x === undefined) { + delete copy.x; + delete copy.y; + } + else + copy.x = Math.min(this.defaultColumn - 1, copy.x); + copy.w = Math.min(this.defaultColumn, copy.w || 1); + this.cacheOneLayout(copy, this.defaultColumn); + } + if (node.w > this.column) { + node.w = this.column; + } + else if (node.w < 1) { + node.w = 1; + } + if (this.maxRow && node.h > this.maxRow) { + node.h = this.maxRow; + } + else if (node.h < 1) { + node.h = 1; + } + if (node.x < 0) { + node.x = 0; + } + if (node.y < 0) { + node.y = 0; + } + if (node.x + node.w > this.column) { + if (resizing) { + node.w = this.column - node.x; + } + else { + node.x = this.column - node.w; + } + } + if (this.maxRow && node.y + node.h > this.maxRow) { + if (resizing) { + node.h = this.maxRow - node.y; + } + else { + node.y = this.maxRow - node.h; + } + } + if (!Utils.samePos(node, before)) { + node._dirty = true; + } + return this; + } + /** + * Returns a list of nodes that have been modified from their original values. + * This is used to track which nodes need DOM updates. + * + * @param verify if true, performs additional verification by comparing current vs original positions + * @returns array of nodes that have been modified + * + * @example + * const changed = engine.getDirtyNodes(); + * console.log('Modified nodes:', changed.length); + * + * // Get verified dirty nodes + * const verified = engine.getDirtyNodes(true); + */ + getDirtyNodes(verify) { + // compare original x,y,w,h instead as _dirty can be a temporary state + if (verify) { + return this.nodes.filter(n => n._dirty && !Utils.samePos(n, n._orig)); + } + return this.nodes.filter(n => n._dirty); + } + /** @internal call this to call onChange callback with dirty nodes so DOM can be updated */ + _notify(removedNodes) { + if (this.batchMode || !this.onChange) + return this; + const dirtyNodes = (removedNodes || []).concat(this.getDirtyNodes()); + this.onChange(dirtyNodes); + return this; + } + /** + * Clean all dirty and last tried information from nodes. + * This resets the dirty state tracking for all nodes. + * + * @returns the engine instance for chaining + * + * @internal + */ + cleanNodes() { + if (this.batchMode) + return this; + this.nodes.forEach(n => { + delete n._dirty; + delete n._lastTried; + }); + return this; + } + /** + * Save the initial position/size of all nodes to track real dirty state. + * This creates a snapshot of current positions that can be restored later. + * + * Note: Should be called right after change events and before move/resize operations. + * + * @returns the engine instance for chaining + * + * @internal + */ + saveInitial() { + this.nodes.forEach(n => { + n._orig = Utils.copyPos({}, n); + delete n._dirty; + }); + this._hasLocked = this.nodes.some(n => n.locked); + return this; + } + /** + * Restore all nodes back to their initial values. + * This is typically called when canceling an operation (e.g., Esc key during drag). + * + * @returns the engine instance for chaining + * + * @internal + */ + restoreInitial() { + this.nodes.forEach(n => { + if (!n._orig || Utils.samePos(n, n._orig)) + return; + Utils.copyPos(n, n._orig); + n._dirty = true; + }); + this._notify(); + return this; + } + /** + * Find the first available empty spot for the given node dimensions. + * Updates the node's x,y attributes with the found position. + * + * @param node the node to find a position for (w,h must be set) + * @param nodeList optional list of nodes to check against (defaults to engine nodes) + * @param column optional column count (defaults to engine column count) + * @param after optional node to start search after (maintains order) + * @returns true if an empty position was found and node was updated + * + * @example + * const node = { w: 2, h: 1 }; + * if (engine.findEmptyPosition(node)) { + * console.log('Found position at:', node.x, node.y); + * } + */ + findEmptyPosition(node, nodeList = this.nodes, column = this.column, after) { + const start = after ? after.y * column + (after.x + after.w) : 0; + let found = false; + for (let i = start; !found; ++i) { + const x = i % column; + const y = Math.floor(i / column); + if (x + node.w > column) { + continue; + } + const box = { x, y, w: node.w, h: node.h }; + if (!nodeList.find(n => Utils.isIntercepted(box, n))) { + if (node.x !== x || node.y !== y) + node._dirty = true; + node.x = x; + node.y = y; + delete node.autoPosition; + found = true; + } + } + return found; + } + /** + * Add the given node to the grid, handling collision detection and re-packing. + * This is the main method for adding new widgets to the engine. + * + * @param node the node to add to the grid + * @param triggerAddEvent if true, adds node to addedNodes list for event triggering + * @param after optional node to place this node after (for ordering) + * @returns the added node (or existing node if duplicate) + * + * @example + * const node = { x: 0, y: 0, w: 2, h: 1, content: 'Hello' }; + * const added = engine.addNode(node, true); + */ + addNode(node, triggerAddEvent = false, after) { + const dup = this.nodes.find(n => n._id === node._id); + if (dup) + return dup; // prevent inserting twice! return it instead. + // skip prepareNode if we're in middle of column resize (not new) but do check for bounds! + this._inColumnResize ? this.nodeBoundFix(node) : this.prepareNode(node); + delete node._temporaryRemoved; + delete node._removeDOM; + let skipCollision; + if (node.autoPosition && this.findEmptyPosition(node, this.nodes, this.column, after)) { + delete node.autoPosition; // found our slot + skipCollision = true; + } + this.nodes.push(node); + if (triggerAddEvent) { + this.addedNodes.push(node); + } + if (!skipCollision) + this._fixCollisions(node); + if (!this.batchMode) { + this._packNodes()._notify(); + } + return node; + } + /** + * Remove the given node from the grid. + * + * @param node the node to remove + * @param removeDOM if true (default), marks node for DOM removal + * @param triggerEvent if true, adds node to removedNodes list for event triggering + * @returns the engine instance for chaining + * + * @example + * engine.removeNode(node, true, true); + */ + removeNode(node, removeDOM = true, triggerEvent = false) { + if (!this.nodes.find(n => n._id === node._id)) { + // TEST console.log(`Error: GridStackEngine.removeNode() node._id=${node._id} not found!`) + return this; + } + if (triggerEvent) { // we wait until final drop to manually track removed items (rather than during drag) + this.removedNodes.push(node); + } + if (removeDOM) + node._removeDOM = true; // let CB remove actual HTML (used to set _id to null, but then we loose layout info) + // don't use 'faster' .splice(findIndex(),1) in case node isn't in our list, or in multiple times. + this.nodes = this.nodes.filter(n => n._id !== node._id); + if (!node._isAboutToRemove) + this._packNodes(); // if dragged out, no need to relayout as already done... + this._notify([node]); + return this; + } + /** + * Remove all nodes from the grid. + * + * @param removeDOM if true (default), marks all nodes for DOM removal + * @param triggerEvent if true (default), triggers removal events + * @returns the engine instance for chaining + * + * @example + * engine.removeAll(); // Remove all nodes + */ + removeAll(removeDOM = true, triggerEvent = true) { + delete this._layouts; + if (!this.nodes.length) + return this; + removeDOM && this.nodes.forEach(n => n._removeDOM = true); // let CB remove actual HTML (used to set _id to null, but then we loose layout info) + const removedNodes = this.nodes; + this.removedNodes = triggerEvent ? removedNodes : []; + this.nodes = []; + return this._notify(removedNodes); + } + /** + * Check if a node can be moved to a new position, considering layout constraints. + * This is a safer version of moveNode() that validates the move first. + * + * For complex cases (like maxRow constraints), it simulates the move in a clone first, + * then applies the changes only if they meet all specifications. + * + * @param node the node to move + * @param o move options including target position + * @returns true if the node was successfully moved + * + * @example + * const canMove = engine.moveNodeCheck(node, { x: 2, y: 1 }); + * if (canMove) { + * console.log('Node moved successfully'); + * } + */ + moveNodeCheck(node, o) { + // if (node.locked) return false; + if (!this.changedPosConstrain(node, o)) + return false; + o.pack = true; + // simpler case: move item directly... + if (!this.maxRow) { + return this.moveNode(node, o); + } + // complex case: create a clone with NO maxRow (will check for out of bounds at the end) + let clonedNode; + const clone = new GridStackEngine({ + column: this.column, + float: this.float, + nodes: this.nodes.map(n => { + if (n._id === node._id) { + clonedNode = { ...n }; + return clonedNode; + } + return { ...n }; + }) + }); + if (!clonedNode) + return false; + // check if we're covering 50% collision and could move, while still being under maxRow or at least not making it worse + // (case where widget was somehow added past our max #2449) + const canMove = clone.moveNode(clonedNode, o) && clone.getRow() <= Math.max(this.getRow(), this.maxRow); + // else check if we can force a swap (float=true, or different shapes) on non-resize + if (!canMove && !o.resizing && o.collide) { + const collide = o.collide.el.gridstackNode; // find the source node the clone collided with at 50% + if (this.swap(node, collide)) { // swaps and mark dirty + this._notify(); + return true; + } + } + if (!canMove) + return false; + // if clone was able to move, copy those mods over to us now instead of caller trying to do this all over! + // Note: we can't use the list directly as elements and other parts point to actual node, so copy content + clone.nodes.filter(n => n._dirty).forEach(c => { + const n = this.nodes.find(a => a._id === c._id); + if (!n) + return; + Utils.copyPos(n, c); + n._dirty = true; + }); + this._notify(); + return true; + } + /** return true if can fit in grid height constrain only (always true if no maxRow) */ + willItFit(node) { + delete node._willFitPos; + if (!this.maxRow) + return true; + // create a clone with NO maxRow and check if still within size + const clone = new GridStackEngine({ + column: this.column, + float: this.float, + nodes: this.nodes.map(n => { return { ...n }; }) + }); + const n = { ...node }; // clone node so we don't mod any settings on it but have full autoPosition and min/max as well! #1687 + this.cleanupNode(n); + delete n.el; + delete n._id; + delete n.content; + delete n.grid; + clone.addNode(n); + if (clone.getRow() <= this.maxRow) { + node._willFitPos = Utils.copyPos({}, n); + return true; + } + return false; + } + /** true if x,y or w,h are different after clamping to min/max */ + changedPosConstrain(node, p) { + // first make sure w,h are set for caller + p.w = p.w || node.w; + p.h = p.h || node.h; + if (node.x !== p.x || node.y !== p.y) + return true; + // check constrained w,h + if (node.maxW) { + p.w = Math.min(p.w, node.maxW); + } + if (node.maxH) { + p.h = Math.min(p.h, node.maxH); + } + if (node.minW) { + p.w = Math.max(p.w, node.minW); + } + if (node.minH) { + p.h = Math.max(p.h, node.minH); + } + return (node.w !== p.w || node.h !== p.h); + } + /** return true if the passed in node was actually moved (checks for no-op and locked) */ + moveNode(node, o) { + if (!node || /*node.locked ||*/ !o) + return false; + let wasUndefinedPack; + if (o.pack === undefined && !this.batchMode) { + wasUndefinedPack = o.pack = true; + } + // constrain the passed in values and check if we're still changing our node + if (typeof o.x !== 'number') { + o.x = node.x; + } + if (typeof o.y !== 'number') { + o.y = node.y; + } + if (typeof o.w !== 'number') { + o.w = node.w; + } + if (typeof o.h !== 'number') { + o.h = node.h; + } + const resizing = (node.w !== o.w || node.h !== o.h); + const nn = Utils.copyPos({}, node, true); // get min/max out first, then opt positions next + Utils.copyPos(nn, o); + this.nodeBoundFix(nn, resizing); + Utils.copyPos(o, nn); + if (!o.forceCollide && Utils.samePos(node, o)) + return false; + const prevPos = Utils.copyPos({}, node); + // check if we will need to fix collision at our new location + const collides = this.collideAll(node, nn, o.skip); + let needToMove = true; + if (collides.length) { + const activeDrag = node._moving && !o.nested; + // check to make sure we actually collided over 50% surface area while dragging + let collide = activeDrag ? this.directionCollideCoverage(node, o, collides) : collides[0]; + // if we're enabling creation of sub-grids on the fly, see if we're covering 80% of either one, if we didn't already do that + if (activeDrag && collide && node.grid?.opts?.subGridDynamic && !node.grid._isTemp) { + const over = Utils.areaIntercept(o.rect, collide._rect); + const a1 = Utils.area(o.rect); + const a2 = Utils.area(collide._rect); + const perc = over / (a1 < a2 ? a1 : a2); + if (perc > .8) { + collide.grid.makeSubGrid(collide.el, undefined, node); + collide = undefined; + } + } + if (collide) { + needToMove = !this._fixCollisions(node, nn, collide, o); // check if already moved... + } + else { + needToMove = false; // we didn't cover >50% for a move, skip... + if (wasUndefinedPack) + delete o.pack; + } + } + // now move (to the original ask vs the collision version which might differ) and repack things + if (needToMove && !Utils.samePos(node, nn)) { + node._dirty = true; + Utils.copyPos(node, nn); + } + if (o.pack) { + this._packNodes() + ._notify(); + } + return !Utils.samePos(node, prevPos); // pack might have moved things back + } + getRow() { + return this.nodes.reduce((row, n) => Math.max(row, n.y + n.h), 0); + } + beginUpdate(node) { + if (!node._updating) { + node._updating = true; + delete node._skipDown; + if (!this.batchMode) + this.saveInitial(); + } + return this; + } + endUpdate() { + const n = this.nodes.find(n => n._updating); + if (n) { + delete n._updating; + delete n._skipDown; + } + return this; + } + /** saves a copy of the largest column layout (eg 12 even when rendering 1 column) so we don't loose orig layout, unless explicity column + * count to use is given. returning a list of widgets for serialization + * @param saveElement if true (default), the element will be saved to GridStackWidget.el field, else it will be removed. + * @param saveCB callback for each node -> widget, so application can insert additional data to be saved into the widget data structure. + * @param column if provided, the grid will be saved for the given column count (IFF we have matching internal saved layout, or current layout). + * Note: nested grids will ALWAYS save the container w to match overall layouts (parent + child) to be consistent. + */ + save(saveElement = true, saveCB, column) { + // use the highest layout for any saved info so we can have full detail on reload #1849 + // unless we're given a column to match (always set for nested grids) + const len = this._layouts?.length || 0; + let layout; + if (len) { + if (column) { + if (column !== this.column) + layout = this._layouts[column]; + } + else if (this.column !== len - 1) { + layout = this._layouts[len - 1]; + } + } + const list = []; + this.sortNodes(); + this.nodes.forEach(n => { + const wl = layout?.find(l => l._id === n._id); + // use layout info fields instead if set + const w = { ...n, ...(wl || {}) }; + Utils.removeInternalForSave(w, !saveElement); + if (saveCB) + saveCB(n, w); + list.push(w); + }); + return list; + } + /** @internal called whenever a node is added or moved - updates the cached layouts */ + layoutsNodesChange(nodes) { + if (!this._layouts || this._inColumnResize) + return this; + // remove smaller layouts - we will re-generate those on the fly... larger ones need to update + this._layouts.forEach((layout, column) => { + if (!layout || column === this.column) + return this; + if (column < this.column) { + this._layouts[column] = undefined; + } + else { + // we save the original x,y,w (h isn't cached) to see what actually changed to propagate better. + // NOTE: we don't need to check against out of bound scaling/moving as that will be done when using those cache values. #1785 + const ratio = column / this.column; + nodes.forEach(node => { + if (!node._orig) + return; // didn't change (newly added ?) + const n = layout.find(l => l._id === node._id); + if (!n) + return; // no cache for new nodes. Will use those values. + // Y changed, push down same amount + // TODO: detect doing item 'swaps' will help instead of move (especially in 1 column mode) + if (n.y >= 0 && node.y !== node._orig.y) { + n.y += (node.y - node._orig.y); + } + // X changed, scale from new position + if (node.x !== node._orig.x) { + n.x = Math.round(node.x * ratio); + } + // width changed, scale from new width + if (node.w !== node._orig.w) { + n.w = Math.round(node.w * ratio); + } + // ...height always carries over from cache + }); + } + }); + return this; + } + /** + * @internal Called to scale the widget width & position up/down based on the column change. + * Note we store previous layouts (especially original ones) to make it possible to go + * from say 12 -> 1 -> 12 and get back to where we were. + * + * @param prevColumn previous number of columns + * @param column new column number + * @param layout specify the type of re-layout that will happen (position, size, etc...). + * Note: items will never be outside of the current column boundaries. default (moveScale). Ignored for 1 column + */ + columnChanged(prevColumn, column, layout = 'moveScale') { + if (!this.nodes.length || !column || prevColumn === column) + return this; + // simpler shortcuts layouts + const doCompact = layout === 'compact' || layout === 'list'; + if (doCompact) { + this.sortNodes(1); // sort with original layout once and only once (new column will affect order otherwise) + } + // cache the current layout in case they want to go back (like 12 -> 1 -> 12) as it requires original data IFF we're sizing down (see below) + if (column < prevColumn) + this.cacheLayout(this.nodes, prevColumn); + this.batchUpdate(); // do this EARLY as it will call saveInitial() so we can detect where we started for _dirty and collision + let newNodes = []; + let nodes = doCompact ? this.nodes : Utils.sort(this.nodes, -1); // current column reverse sorting so we can insert last to front (limit collision) + // see if we have cached previous layout IFF we are going up in size (restore) otherwise always + // generate next size down from where we are (looks more natural as you gradually size down). + if (column > prevColumn && this._layouts) { + const cacheNodes = this._layouts[column] || []; + // ...if not, start with the largest layout (if not already there) as down-scaling is more accurate + // by pretending we came from that larger column by assigning those values as starting point + const lastIndex = this._layouts.length - 1; + if (!cacheNodes.length && prevColumn !== lastIndex && this._layouts[lastIndex]?.length) { + prevColumn = lastIndex; + this._layouts[lastIndex].forEach(cacheNode => { + const n = nodes.find(n => n._id === cacheNode._id); + if (n) { + // still current, use cache info positions + if (!doCompact && !cacheNode.autoPosition) { + n.x = cacheNode.x ?? n.x; + n.y = cacheNode.y ?? n.y; + } + n.w = cacheNode.w ?? n.w; + if (cacheNode.x == undefined || cacheNode.y === undefined) + n.autoPosition = true; + } + }); + } + // if we found cache re-use those nodes that are still current + cacheNodes.forEach(cacheNode => { + const j = nodes.findIndex(n => n._id === cacheNode._id); + if (j !== -1) { + const n = nodes[j]; + // still current, use cache info positions + if (doCompact) { + n.w = cacheNode.w; // only w is used, and don't trim the list + return; + } + if (cacheNode.autoPosition || isNaN(cacheNode.x) || isNaN(cacheNode.y)) { + this.findEmptyPosition(cacheNode, newNodes); + } + if (!cacheNode.autoPosition) { + n.x = cacheNode.x ?? n.x; + n.y = cacheNode.y ?? n.y; + n.w = cacheNode.w ?? n.w; + newNodes.push(n); + } + nodes.splice(j, 1); + } + }); + } + // much simpler layout that just compacts + if (doCompact) { + this.compact(layout, false); + } + else { + // ...and add any extra non-cached ones + if (nodes.length) { + if (typeof layout === 'function') { + layout(column, prevColumn, newNodes, nodes); + } + else { + const ratio = (doCompact || layout === 'none') ? 1 : column / prevColumn; + const move = (layout === 'move' || layout === 'moveScale'); + const scale = (layout === 'scale' || layout === 'moveScale'); + nodes.forEach(node => { + // NOTE: x + w could be outside of the grid, but addNode() below will handle that + node.x = (column === 1 ? 0 : (move ? Math.round(node.x * ratio) : Math.min(node.x, column - 1))); + node.w = ((column === 1 || prevColumn === 1) ? 1 : scale ? (Math.round(node.w * ratio) || 1) : (Math.min(node.w, column))); + newNodes.push(node); + }); + nodes = []; + } + } + // finally re-layout them in reverse order (to get correct placement) + newNodes = Utils.sort(newNodes, -1); + this._inColumnResize = true; // prevent cache update + this.nodes = []; // pretend we have no nodes to start with (add() will use same structures) to simplify layout + newNodes.forEach(node => { + this.addNode(node, false); // 'false' for add event trigger + delete node._orig; // make sure the commit doesn't try to restore things back to original + }); + } + this.nodes.forEach(n => delete n._orig); // clear _orig before batch=false so it doesn't handle float=true restore + this.batchUpdate(false, !doCompact); + delete this._inColumnResize; + return this; + } + /** + * call to cache the given layout internally to the given location so we can restore back when column changes size + * @param nodes list of nodes + * @param column corresponding column index to save it under + * @param clear if true, will force other caches to be removed (default false) + */ + cacheLayout(nodes, column, clear = false) { + const copy = []; + nodes.forEach((n, i) => { + // make sure we have an id in case this is new layout, else re-use id already set + if (n._id === undefined) { + const existing = n.id ? this.nodes.find(n2 => n2.id === n.id) : undefined; // find existing node using users id + n._id = existing?._id ?? GridStackEngine._idSeq++; + } + copy[i] = { x: n.x, y: n.y, w: n.w, _id: n._id }; // only thing we change is x,y,w and id to find it back + }); + this._layouts = clear ? [] : this._layouts || []; // use array to find larger quick + this._layouts[column] = copy; + return this; + } + /** + * call to cache the given node layout internally to the given location so we can restore back when column changes size + * @param node single node to cache + * @param column corresponding column index to save it under + */ + cacheOneLayout(n, column) { + n._id = n._id ?? GridStackEngine._idSeq++; + const l = { x: n.x, y: n.y, w: n.w, _id: n._id }; + if (n.autoPosition || n.x === undefined) { + delete l.x; + delete l.y; + if (n.autoPosition) + l.autoPosition = true; + } + this._layouts = this._layouts || []; + this._layouts[column] = this._layouts[column] || []; + const index = this.findCacheLayout(n, column); + if (index === -1) + this._layouts[column].push(l); + else + this._layouts[column][index] = l; + return this; + } + findCacheLayout(n, column) { + return this._layouts?.[column]?.findIndex(l => l._id === n._id) ?? -1; + } + removeNodeFromLayoutCache(n) { + if (!this._layouts) { + return; + } + for (let i = 0; i < this._layouts.length; i++) { + const index = this.findCacheLayout(n, i); + if (index !== -1) { + this._layouts[i].splice(index, 1); + } + } + } + /** called to remove all internal values but the _id */ + cleanupNode(node) { + for (const prop in node) { + if (prop[0] === '_' && prop !== '_id') + delete node[prop]; + } + return this; + } +} +/** @internal unique global internal _id counter */ +GridStackEngine._idSeq = 0; + +//# sourceMappingURL=gridstack-engine.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/types.js +/** + * types.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ +/** + * Default values for grid options - used during initialization and when saving out grid configuration. + * These values are applied when options are not explicitly provided. + */ +const gridDefaults = { + alwaysShowResizeHandle: 'mobile', + animate: true, + auto: true, + cellHeight: 'auto', + cellHeightThrottle: 100, + cellHeightUnit: 'px', + column: 12, + draggable: { handle: '.grid-stack-item-content', appendTo: 'body', scroll: true }, + handle: '.grid-stack-item-content', + itemClass: 'grid-stack-item', + margin: 10, + marginUnit: 'px', + maxRow: 0, + minRow: 0, + placeholderClass: 'grid-stack-placeholder', + placeholderText: '', + removableOptions: { accept: 'grid-stack-item', decline: 'grid-stack-non-removable' }, + resizable: { handles: 'se' }, + rtl: 'auto', + // **** same as not being set **** + // disableDrag: false, + // disableResize: false, + // float: false, + // handleClass: null, + // removable: false, + // staticGrid: false, + //removable +}; +//# sourceMappingURL=types.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-manager.js +/** + * dd-manager.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ +/** + * Global state manager for all Drag & Drop instances. + * + * This class maintains shared state across all drag & drop operations, + * ensuring proper coordination between multiple grids and drag/drop elements. + * All properties are static to provide global access throughout the DD system. + */ +class DDManager { +} +//# sourceMappingURL=dd-manager.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-touch.js +/** + * touch.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ + + +/** + * Detect touch support - Windows Surface devices and other touch devices + * should we use this instead ? (what we had for always showing resize handles) + * /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) + */ +const isTouch = typeof window !== 'undefined' && typeof document !== 'undefined' && + ('ontouchstart' in document + || 'ontouchstart' in window + // || !!window.TouchEvent // true on Windows 10 Chrome desktop so don't use this + // eslint-disable-next-line @typescript-eslint/no-explicit-any + || (window.DocumentTouch && document instanceof window.DocumentTouch) + || navigator.maxTouchPoints > 0 + // eslint-disable-next-line @typescript-eslint/no-explicit-any + || navigator.msMaxTouchPoints > 0); +// interface TouchCoord {x: number, y: number}; +class DDTouch { +} +/** +* Get the x,y position of a touch event +*/ +// function getTouchCoords(e: TouchEvent): TouchCoord { +// return { +// x: e.changedTouches[0].pageX, +// y: e.changedTouches[0].pageY +// }; +// } +/** + * Simulate a mouse event based on a corresponding touch event + * @param {Object} e A touch event + * @param {String} simulatedType The corresponding mouse event + */ +function simulateMouseEvent(e, simulatedType) { + // Ignore multi-touch events + if (e.touches.length > 1) + return; + // Prevent "Ignored attempt to cancel a touchmove event with cancelable=false" errors + if (e.cancelable) + e.preventDefault(); + // Dispatch the simulated event to the target element + Utils.simulateMouseEvent(e.changedTouches[0], simulatedType); +} +/** + * Simulate a mouse event based on a corresponding Pointer event + * @param {Object} e A pointer event + * @param {String} simulatedType The corresponding mouse event + */ +function simulatePointerMouseEvent(e, simulatedType) { + // Prevent "Ignored attempt to cancel a touchmove event with cancelable=false" errors + if (e.cancelable) + e.preventDefault(); + // Dispatch the simulated event to the target element + Utils.simulateMouseEvent(e, simulatedType); +} +/** + * Handle the touchstart events + * @param {Object} e The widget element's touchstart event + */ +function touchstart(e) { + // Ignore the event if another widget is already being handled + if (DDTouch.touchHandled) + return; + DDTouch.touchHandled = true; + // Simulate the mouse events + // simulateMouseEvent(e, 'mouseover'); + // simulateMouseEvent(e, 'mousemove'); + simulateMouseEvent(e, 'mousedown'); +} +/** + * Handle the touchmove events + * @param {Object} e The document's touchmove event + */ +function touchmove(e) { + // Ignore event if not handled by us + if (!DDTouch.touchHandled) + return; + simulateMouseEvent(e, 'mousemove'); +} +/** + * Handle the touchend events + * @param {Object} e The document's touchend event + */ +function touchend(e) { + // Ignore event if not handled + if (!DDTouch.touchHandled) + return; + // cancel delayed leave event when we release on ourself which happens BEFORE we get this! + if (DDTouch.pointerLeaveTimeout) { + window.clearTimeout(DDTouch.pointerLeaveTimeout); + delete DDTouch.pointerLeaveTimeout; + } + const wasDragging = !!DDManager.dragElement; + // Simulate the mouseup event + simulateMouseEvent(e, 'mouseup'); + // simulateMouseEvent(event, 'mouseout'); + // If the touch interaction did not move, it should trigger a click + if (!wasDragging) { + simulateMouseEvent(e, 'click'); + } + // Unset the flag to allow other widgets to inherit the touch event + DDTouch.touchHandled = false; +} +/** + * Note we don't get touchenter/touchleave (which are deprecated) + * see https://stackoverflow.com/questions/27908339/js-touch-equivalent-for-mouseenter + * so instead of PointerEvent to still get enter/leave and send the matching mouse event. + */ +function pointerdown(e) { + // console.log("pointer down") + if (e.pointerType === 'mouse') + return; + e.target.releasePointerCapture(e.pointerId); // <- Important! +} +function pointerenter(e) { + // ignore the initial one we get on pointerdown on ourself + if (!DDManager.dragElement) { + // console.log('pointerenter ignored'); + return; + } + // console.log('pointerenter'); + if (e.pointerType === 'mouse') + return; + simulatePointerMouseEvent(e, 'mouseenter'); +} +function pointerleave(e) { + // ignore the leave on ourself we get before releasing the mouse over ourself + // by delaying sending the event and having the up event cancel us + if (!DDManager.dragElement) { + // console.log('pointerleave ignored'); + return; + } + if (e.pointerType === 'mouse') + return; + DDTouch.pointerLeaveTimeout = window.setTimeout(() => { + delete DDTouch.pointerLeaveTimeout; + // console.log('pointerleave delayed'); + simulatePointerMouseEvent(e, 'mouseleave'); + }, 10); +} +//# sourceMappingURL=dd-touch.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-resizable-handle.js +/** + * dd-resizable-handle.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ + +class DDResizableHandle { + constructor(host, dir, option) { + this.host = host; + this.dir = dir; + this.option = option; + /** @internal true after we've moved enough pixels to start a resize */ + this.moving = false; + // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions) + this._mouseDown = this._mouseDown.bind(this); + this._mouseMove = this._mouseMove.bind(this); + this._mouseUp = this._mouseUp.bind(this); + this._keyEvent = this._keyEvent.bind(this); + this._init(); + } + /** @internal */ + _init() { + const el = this.el = document.createElement('div'); + el.classList.add('ui-resizable-handle'); + el.classList.add(`${DDResizableHandle.prefix}${this.dir}`); + el.style.zIndex = '100'; + el.style.userSelect = 'none'; + this.host.appendChild(this.el); + this.el.addEventListener('mousedown', this._mouseDown); + if (isTouch) { + this.el.addEventListener('touchstart', touchstart); + this.el.addEventListener('pointerdown', pointerdown); + // this.el.style.touchAction = 'none'; // not needed unlike pointerdown doc comment + } + return this; + } + /** call this when resize handle needs to be removed and cleaned up */ + destroy() { + if (this.moving) + this._mouseUp(this.mouseDownEvent); + this.el.removeEventListener('mousedown', this._mouseDown); + if (isTouch) { + this.el.removeEventListener('touchstart', touchstart); + this.el.removeEventListener('pointerdown', pointerdown); + } + this.host.removeChild(this.el); + delete this.el; + delete this.host; + return this; + } + /** @internal called on mouse down on us: capture move on the entire document (mouse might not stay on us) until we release the mouse */ + _mouseDown(e) { + this.mouseDownEvent = e; + document.addEventListener('mousemove', this._mouseMove, { capture: true, passive: true }); // capture, not bubble + document.addEventListener('mouseup', this._mouseUp, true); + if (isTouch) { + this.el.addEventListener('touchmove', touchmove); + this.el.addEventListener('touchend', touchend); + } + e.stopPropagation(); + e.preventDefault(); + } + /** @internal */ + _mouseMove(e) { + const s = this.mouseDownEvent; + if (this.moving) { + this._triggerEvent('move', e); + } + else if (Math.abs(e.x - s.x) + Math.abs(e.y - s.y) > 2) { + // don't start unless we've moved at least 3 pixels + this.moving = true; + this._triggerEvent('start', this.mouseDownEvent); + this._triggerEvent('move', e); + // now track keyboard events to cancel + document.addEventListener('keydown', this._keyEvent); + } + e.stopPropagation(); + // e.preventDefault(); passive = true + } + /** @internal */ + _mouseUp(e) { + if (this.moving) { + this._triggerEvent('stop', e); + document.removeEventListener('keydown', this._keyEvent); + } + document.removeEventListener('mousemove', this._mouseMove, true); + document.removeEventListener('mouseup', this._mouseUp, true); + if (isTouch) { + this.el.removeEventListener('touchmove', touchmove); + this.el.removeEventListener('touchend', touchend); + } + delete this.moving; + delete this.mouseDownEvent; + e.stopPropagation(); + e.preventDefault(); + } + /** @internal call when keys are being pressed - use Esc to cancel */ + _keyEvent(e) { + if (e.key === 'Escape') { + this.host.gridstackNode?.grid?.engine.restoreInitial(); + this._mouseUp(this.mouseDownEvent); + } + } + /** @internal */ + _triggerEvent(name, event) { + if (this.option[name]) + this.option[name](event); + return this; + } +} +/** @internal */ +DDResizableHandle.prefix = 'ui-resizable-'; + +//# sourceMappingURL=dd-resizable-handle.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-base-impl.js +/** + * dd-base-impl.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ +/** + * Abstract base class for all drag & drop implementations. + * Provides common functionality for event handling, enable/disable state, + * and lifecycle management used by draggable, droppable, and resizable implementations. + */ +class DDBaseImplement { + constructor() { + /** @internal */ + this._eventRegister = {}; + } + /** + * Returns the current disabled state. + * Note: Use enable()/disable() methods to change state as other operations need to happen. + */ + get disabled() { return this._disabled; } + /** + * Register an event callback for the specified event. + * + * @param event - Event name to listen for + * @param callback - Function to call when event occurs + */ + on(event, callback) { + this._eventRegister[event] = callback; + } + /** + * Unregister an event callback for the specified event. + * + * @param event - Event name to stop listening for + */ + off(event) { + delete this._eventRegister[event]; + } + /** + * Enable this drag & drop implementation. + * Subclasses should override to perform additional setup. + */ + enable() { + this._disabled = false; + } + /** + * Disable this drag & drop implementation. + * Subclasses should override to perform additional cleanup. + */ + disable() { + this._disabled = true; + } + /** + * Destroy this drag & drop implementation and clean up resources. + * Removes all event handlers and clears internal state. + */ + destroy() { + delete this._eventRegister; + } + /** + * Trigger a registered event callback if one exists and the implementation is enabled. + * + * @param eventName - Name of the event to trigger + * @param event - DOM event object to pass to the callback + * @returns Result from the callback function, if any + */ + triggerEvent(eventName, event) { + if (!this.disabled && this._eventRegister && this._eventRegister[eventName]) + return this._eventRegister[eventName](event); + } +} +//# sourceMappingURL=dd-base-impl.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-resizable.js +/** + * dd-resizable.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ + + + + +class DDResizable extends DDBaseImplement { + // have to be public else complains for HTMLElementExtendOpt ? + constructor(el, option = {}) { + super(); + this.el = el; + this.option = option; + /** @internal */ + this.rectScale = { x: 1, y: 1 }; + /** @internal */ + this._ui = () => { + const containmentEl = this.el.parentElement; + const containmentRect = containmentEl.getBoundingClientRect(); + const newRect = { + width: this.originalRect.width, + height: this.originalRect.height + this.scrolled, + left: this.originalRect.left, + top: this.originalRect.top - this.scrolled + }; + const rect = this.temporalRect || newRect; + return { + position: { + left: (rect.left - containmentRect.left) * this.rectScale.x, + top: (rect.top - containmentRect.top) * this.rectScale.y + }, + size: { + width: rect.width * this.rectScale.x, + height: rect.height * this.rectScale.y + } + /* Gridstack ONLY needs position set above... keep around in case. + element: [this.el], // The object representing the element to be resized + helper: [], // TODO: not support yet - The object representing the helper that's being resized + originalElement: [this.el],// we don't wrap here, so simplify as this.el //The object representing the original element before it is wrapped + originalPosition: { // The position represented as { left, top } before the resizable is resized + left: this.originalRect.left - containmentRect.left, + top: this.originalRect.top - containmentRect.top + }, + originalSize: { // The size represented as { width, height } before the resizable is resized + width: this.originalRect.width, + height: this.originalRect.height + } + */ + }; + }; + // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions) + this._mouseOver = this._mouseOver.bind(this); + this._mouseOut = this._mouseOut.bind(this); + this.enable(); + this._setupAutoHide(this.option.autoHide); + this._setupHandlers(); + } + on(event, callback) { + super.on(event, callback); + } + off(event) { + super.off(event); + } + enable() { + super.enable(); + this.el.classList.remove('ui-resizable-disabled'); + this._setupAutoHide(this.option.autoHide); + } + disable() { + super.disable(); + this.el.classList.add('ui-resizable-disabled'); + this._setupAutoHide(false); + } + destroy() { + this._removeHandlers(); + this._setupAutoHide(false); + delete this.el; + super.destroy(); + } + updateOption(opts) { + const updateHandles = (opts.handles && opts.handles !== this.option.handles); + const updateAutoHide = (opts.autoHide && opts.autoHide !== this.option.autoHide); + Object.keys(opts).forEach(key => this.option[key] = opts[key]); + if (updateHandles) { + this._removeHandlers(); + this._setupHandlers(); + } + if (updateAutoHide) { + this._setupAutoHide(this.option.autoHide); + } + return this; + } + /** @internal turns auto hide on/off */ + _setupAutoHide(auto) { + if (auto) { + this.el.classList.add('ui-resizable-autohide'); + // use mouseover and not mouseenter to get better performance and track for nested cases + this.el.addEventListener('mouseover', this._mouseOver); + this.el.addEventListener('mouseout', this._mouseOut); + } + else { + this.el.classList.remove('ui-resizable-autohide'); + this.el.removeEventListener('mouseover', this._mouseOver); + this.el.removeEventListener('mouseout', this._mouseOut); + if (DDManager.overResizeElement === this) { + delete DDManager.overResizeElement; + } + } + return this; + } + /** @internal */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _mouseOver(e) { + // console.log(`${count++} pre-enter ${(this.el as GridItemHTMLElement).gridstackNode._id}`) + // already over a child, ignore. Ideally we just call e.stopPropagation() but see https://github.com/gridstack/gridstack.js/issues/2018 + if (DDManager.overResizeElement || DDManager.dragElement) + return; + DDManager.overResizeElement = this; + // console.log(`${count++} enter ${(this.el as GridItemHTMLElement).gridstackNode._id}`) + this.el.classList.remove('ui-resizable-autohide'); + } + /** @internal */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _mouseOut(e) { + // console.log(`${count++} pre-leave ${(this.el as GridItemHTMLElement).gridstackNode._id}`) + if (DDManager.overResizeElement !== this) + return; + delete DDManager.overResizeElement; + // console.log(`${count++} leave ${(this.el as GridItemHTMLElement).gridstackNode._id}`) + this.el.classList.add('ui-resizable-autohide'); + } + /** @internal */ + _setupHandlers() { + this.handlers = this.option.handles.split(',') + .map(dir => dir.trim()) + .map(dir => new DDResizableHandle(this.el, dir, { + start: (event) => { + this._resizeStart(event); + }, + stop: (event) => { + this._resizeStop(event); + }, + move: (event) => { + this._resizing(event, dir); + } + })); + return this; + } + /** @internal */ + _resizeStart(event) { + this.sizeToContent = Utils.shouldSizeToContent(this.el.gridstackNode, true); // strick true only and not number + this.originalRect = this.el.getBoundingClientRect(); + this.scrollEl = Utils.getScrollElement(this.el); + this.scrollY = this.scrollEl.scrollTop; + this.scrolled = 0; + this.startEvent = event; + this._setupHelper(); + this._applyChange(); + const ev = Utils.initEvent(event, { type: 'resizestart', target: this.el }); + if (this.option.start) { + this.option.start(ev, this._ui()); + } + this.el.classList.add('ui-resizable-resizing'); + this.triggerEvent('resizestart', ev); + return this; + } + /** @internal */ + _resizing(event, dir) { + this.scrolled = this.scrollEl.scrollTop - this.scrollY; + this.temporalRect = this._getChange(event, dir); + this._applyChange(); + const ev = Utils.initEvent(event, { type: 'resize', target: this.el }); + if (this.option.resize) { + this.option.resize(ev, this._ui()); + } + this.triggerEvent('resize', ev); + return this; + } + /** @internal */ + _resizeStop(event) { + const ev = Utils.initEvent(event, { type: 'resizestop', target: this.el }); + // Remove style attr now, so the stop handler can rebuild style attrs + this._cleanHelper(); + if (this.option.stop) { + this.option.stop(ev); // Note: ui() not used by gridstack so don't pass + } + this.el.classList.remove('ui-resizable-resizing'); + this.triggerEvent('resizestop', ev); + delete this.startEvent; + delete this.originalRect; + delete this.temporalRect; + delete this.scrollY; + delete this.scrolled; + return this; + } + /** @internal */ + _setupHelper() { + this.elOriginStyleVal = DDResizable._originStyleProp.map(prop => this.el.style[prop]); + this.parentOriginStylePosition = this.el.parentElement.style.position; + const parent = this.el.parentElement; + const dragTransform = Utils.getValuesFromTransformedElement(parent); + this.rectScale = { + x: dragTransform.xScale, + y: dragTransform.yScale + }; + if (getComputedStyle(this.el.parentElement).position.match(/static/)) { + this.el.parentElement.style.position = 'relative'; + } + this.el.style.position = 'absolute'; + this.el.style.opacity = '0.8'; + return this; + } + /** @internal */ + _cleanHelper() { + DDResizable._originStyleProp.forEach((prop, i) => { + this.el.style[prop] = this.elOriginStyleVal[i] || null; + }); + this.el.parentElement.style.position = this.parentOriginStylePosition || null; + return this; + } + /** @internal */ + _getChange(event, dir) { + const oEvent = this.startEvent; + const newRect = { + width: this.originalRect.width, + height: this.originalRect.height + this.scrolled, + left: this.originalRect.left, + top: this.originalRect.top - this.scrolled + }; + const offsetX = event.clientX - oEvent.clientX; + const offsetY = this.sizeToContent ? 0 : event.clientY - oEvent.clientY; // prevent vert resize + let moveLeft; + let moveUp; + if (dir.indexOf('e') > -1) { + newRect.width += offsetX; + } + else if (dir.indexOf('w') > -1) { + newRect.width -= offsetX; + newRect.left += offsetX; + moveLeft = true; + } + if (dir.indexOf('s') > -1) { + newRect.height += offsetY; + } + else if (dir.indexOf('n') > -1) { + newRect.height -= offsetY; + newRect.top += offsetY; + moveUp = true; + } + const constrain = this._constrainSize(newRect.width, newRect.height, moveLeft, moveUp); + if (Math.round(newRect.width) !== Math.round(constrain.width)) { // round to ignore slight round-off errors + if (dir.indexOf('w') > -1) { + newRect.left += newRect.width - constrain.width; + } + newRect.width = constrain.width; + } + if (Math.round(newRect.height) !== Math.round(constrain.height)) { + if (dir.indexOf('n') > -1) { + newRect.top += newRect.height - constrain.height; + } + newRect.height = constrain.height; + } + return newRect; + } + /** @internal constrain the size to the set min/max values */ + _constrainSize(oWidth, oHeight, moveLeft, moveUp) { + const o = this.option; + const maxWidth = (moveLeft ? o.maxWidthMoveLeft : o.maxWidth) || Number.MAX_SAFE_INTEGER; + const minWidth = o.minWidth / this.rectScale.x || oWidth; + const maxHeight = (moveUp ? o.maxHeightMoveUp : o.maxHeight) || Number.MAX_SAFE_INTEGER; + const minHeight = o.minHeight / this.rectScale.y || oHeight; + const width = Math.min(maxWidth, Math.max(minWidth, oWidth)); + const height = Math.min(maxHeight, Math.max(minHeight, oHeight)); + return { width, height }; + } + /** @internal */ + _applyChange() { + let containmentRect = { left: 0, top: 0, width: 0, height: 0 }; + if (this.el.style.position === 'absolute') { + const containmentEl = this.el.parentElement; + const { left, top } = containmentEl.getBoundingClientRect(); + containmentRect = { left, top, width: 0, height: 0 }; + } + if (!this.temporalRect) + return this; + Object.keys(this.temporalRect).forEach(key => { + const value = this.temporalRect[key]; + const scaleReciprocal = key === 'width' || key === 'left' ? this.rectScale.x : key === 'height' || key === 'top' ? this.rectScale.y : 1; + this.el.style[key] = (value - containmentRect[key]) * scaleReciprocal + 'px'; + }); + return this; + } + /** @internal */ + _removeHandlers() { + this.handlers.forEach(handle => handle.destroy()); + delete this.handlers; + return this; + } +} +/** @internal */ +DDResizable._originStyleProp = ['width', 'height', 'position', 'left', 'top', 'opacity', 'zIndex']; + +//# sourceMappingURL=dd-resizable.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-draggable.js +/** + * dd-draggable.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ + + + + +// make sure we are not clicking on known object that handles mouseDown +const skipMouseDown = 'input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle'; +// let count = 0; // TEST +class DDDraggable extends DDBaseImplement { + constructor(el, option = {}) { + super(); + this.el = el; + this.option = option; + /** @internal */ + this.dragTransform = { + xScale: 1, + yScale: 1, + xOffset: 0, + yOffset: 0 + }; + // get the element that is actually supposed to be dragged by + const handleName = option?.handle?.substring(1); + const n = el.gridstackNode; + this.dragEls = !handleName || el.classList.contains(handleName) ? [el] : (n?.subGrid ? [el.querySelector(option.handle) || el] : Array.from(el.querySelectorAll(option.handle))); + if (this.dragEls.length === 0) { + this.dragEls = [el]; + } + // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions) + this._mouseDown = this._mouseDown.bind(this); + this._mouseMove = this._mouseMove.bind(this); + this._mouseUp = this._mouseUp.bind(this); + this._keyEvent = this._keyEvent.bind(this); + this.enable(); + } + on(event, callback) { + super.on(event, callback); + } + off(event) { + super.off(event); + } + enable() { + if (this.disabled === false) + return; + super.enable(); + this.dragEls.forEach(dragEl => { + dragEl.addEventListener('mousedown', this._mouseDown); + if (isTouch) { + dragEl.addEventListener('touchstart', touchstart); + dragEl.addEventListener('pointerdown', pointerdown); + // dragEl.style.touchAction = 'none'; // not needed unlike pointerdown doc comment + } + }); + this.el.classList.remove('ui-draggable-disabled'); + } + disable(forDestroy = false) { + if (this.disabled === true) + return; + super.disable(); + this.dragEls.forEach(dragEl => { + dragEl.removeEventListener('mousedown', this._mouseDown); + if (isTouch) { + dragEl.removeEventListener('touchstart', touchstart); + dragEl.removeEventListener('pointerdown', pointerdown); + } + }); + if (!forDestroy) + this.el.classList.add('ui-draggable-disabled'); + } + destroy() { + if (this.dragTimeout) + window.clearTimeout(this.dragTimeout); + delete this.dragTimeout; + if (this.mouseDownEvent) + this._mouseUp(this.mouseDownEvent); + this.disable(true); + delete this.el; + delete this.helper; + delete this.option; + super.destroy(); + } + updateOption(opts) { + Object.keys(opts).forEach(key => this.option[key] = opts[key]); + return this; + } + /** @internal call when mouse goes down before a dragstart happens */ + _mouseDown(e) { + // don't let more than one widget handle mouseStart + if (DDManager.mouseHandled) + return; + if (e.button !== 0) + return true; // only left click + // make sure we are not clicking on known object that handles mouseDown, or ones supplied by the user + if (!this.dragEls.find(el => el === e.target) && e.target.closest(skipMouseDown)) + return true; + if (this.option.cancel) { + if (e.target.closest(this.option.cancel)) + return true; + } + this.mouseDownEvent = e; + delete this.dragging; + delete DDManager.dragElement; + delete DDManager.dropElement; + // document handler so we can continue receiving moves as the item is 'fixed' position, and capture=true so WE get a first crack + document.addEventListener('mousemove', this._mouseMove, { capture: true, passive: true }); // true=capture, not bubble + document.addEventListener('mouseup', this._mouseUp, true); + if (isTouch) { + e.currentTarget.addEventListener('touchmove', touchmove); + e.currentTarget.addEventListener('touchend', touchend); + } + e.preventDefault(); + // preventDefault() prevents blur event which occurs just after mousedown event. + // if an editable content has focus, then blur must be call + if (document.activeElement) + document.activeElement.blur(); + DDManager.mouseHandled = true; + return true; + } + /** @internal method to call actual drag event */ + _callDrag(e) { + if (!this.dragging) + return; + const ev = Utils.initEvent(e, { target: this.el, type: 'drag' }); + if (this.option.drag) { + this.option.drag(ev, this.ui()); + } + this.triggerEvent('drag', ev); + } + /** @internal called when the main page (after successful mousedown) receives a move event to drag the item around the screen */ + _mouseMove(e) { + // console.log(`${count++} move ${e.x},${e.y}`) + const s = this.mouseDownEvent; + this.lastDrag = e; + if (this.dragging) { + this._dragFollow(e); + // delay actual grid handling drag until we pause for a while if set + if (DDManager.pauseDrag) { + const pause = Number.isInteger(DDManager.pauseDrag) ? DDManager.pauseDrag : 100; + if (this.dragTimeout) + window.clearTimeout(this.dragTimeout); + this.dragTimeout = window.setTimeout(() => this._callDrag(e), pause); + } + else { + this._callDrag(e); + } + } + else if (Math.abs(e.x - s.x) + Math.abs(e.y - s.y) > 3) { + /** + * don't start unless we've moved at least 3 pixels + */ + this.dragging = true; + DDManager.dragElement = this; + // if we're dragging an actual grid item, set the current drop as the grid (to detect enter/leave) + const grid = this.el.gridstackNode?.grid; + if (grid) { + DDManager.dropElement = grid.el.ddElement.ddDroppable; + } + else { + delete DDManager.dropElement; + } + this.helper = this._createHelper(); + this._setupHelperContainmentStyle(); + this.dragTransform = Utils.getValuesFromTransformedElement(this.helperContainment); + this.dragOffset = this._getDragOffset(e, this.el, this.helperContainment); + this._setupHelperStyle(e); + const ev = Utils.initEvent(e, { target: this.el, type: 'dragstart' }); + if (this.option.start) { + this.option.start(ev, this.ui()); + } + this.triggerEvent('dragstart', ev); + // now track keyboard events to cancel or rotate + document.addEventListener('keydown', this._keyEvent); + } + // e.preventDefault(); // passive = true. OLD: was needed otherwise we get text sweep text selection as we drag around + return true; + } + /** @internal call when the mouse gets released to drop the item at current location */ + _mouseUp(e) { + document.removeEventListener('mousemove', this._mouseMove, true); + document.removeEventListener('mouseup', this._mouseUp, true); + if (isTouch && e.currentTarget) { // destroy() during nested grid call us again wit fake _mouseUp + e.currentTarget.removeEventListener('touchmove', touchmove, true); + e.currentTarget.removeEventListener('touchend', touchend, true); + } + if (this.dragging) { + delete this.dragging; + delete this.el.gridstackNode?._origRotate; + document.removeEventListener('keydown', this._keyEvent); + // reset the drop target if dragging over ourself (already parented, just moving during stop callback below) + if (DDManager.dropElement?.el === this.el.parentElement) { + delete DDManager.dropElement; + } + this.helperContainment.style.position = this.parentOriginStylePosition || null; + if (this.helper !== this.el) + this.helper.remove(); // hide now + this._removeHelperStyle(); + const ev = Utils.initEvent(e, { target: this.el, type: 'dragstop' }); + if (this.option.stop) { + this.option.stop(ev); // NOTE: destroy() will be called when removing item, so expect NULL ptr after! + } + this.triggerEvent('dragstop', ev); + // call the droppable method to receive the item + if (DDManager.dropElement) { + DDManager.dropElement.drop(e); + } + } + delete this.helper; + delete this.mouseDownEvent; + delete DDManager.dragElement; + delete DDManager.dropElement; + delete DDManager.mouseHandled; + e.preventDefault(); + } + /** @internal call when keys are being pressed - use Esc to cancel, R to rotate */ + _keyEvent(e) { + const n = this.el.gridstackNode; + const grid = n?.grid || DDManager.dropElement?.el?.gridstack; + if (e.key === 'Escape') { + if (n && n._origRotate) { + n._orig = n._origRotate; + delete n._origRotate; + } + grid?.cancelDrag(); + this._mouseUp(this.mouseDownEvent); + } + else if (n && grid && (e.key === 'r' || e.key === 'R')) { + if (!Utils.canBeRotated(n)) + return; + n._origRotate = n._origRotate || { ...n._orig }; // store the real orig size in case we Esc after doing rotation + delete n._moving; // force rotate to happen (move waits for >50% coverage otherwise) + grid.setAnimation(false) // immediate rotate so _getDragOffset() gets the right dom size below + .rotate(n.el, { top: -this.dragOffset.offsetTop, left: -this.dragOffset.offsetLeft }) + .setAnimation(); + n._moving = true; + this.dragOffset = this._getDragOffset(this.lastDrag, n.el, this.helperContainment); + this.helper.style.width = this.dragOffset.width + 'px'; + this.helper.style.height = this.dragOffset.height + 'px'; + Utils.swap(n._orig, 'w', 'h'); + delete n._rect; + this._mouseMove(this.lastDrag); + } + } + /** @internal create a clone copy (or user defined method) of the original drag item if set */ + _createHelper() { + let helper = this.el; + if (typeof this.option.helper === 'function') { + helper = this.option.helper(this.el); + } + else if (this.option.helper === 'clone') { + helper = Utils.cloneNode(this.el); + } + if (!helper.parentElement) { + Utils.appendTo(helper, this.option.appendTo === 'parent' ? this.el.parentElement : this.option.appendTo); + } + this.dragElementOriginStyle = DDDraggable.originStyleProp.map(prop => this.el.style[prop]); + return helper; + } + /** @internal set the fix position of the dragged item */ + _setupHelperStyle(e) { + this.helper.classList.add('ui-draggable-dragging'); + this.el.gridstackNode?.grid?.el.classList.add('grid-stack-dragging'); + // TODO: set all at once with style.cssText += ... ? https://stackoverflow.com/questions/3968593 + const style = this.helper.style; + style.pointerEvents = 'none'; // needed for over items to get enter/leave + // style.cursor = 'move'; // TODO: can't set with pointerEvents=none ! (no longer in CSS either as no-op) + style.width = this.dragOffset.width + 'px'; + style.height = this.dragOffset.height + 'px'; + style.willChange = 'left, top'; + style.position = 'fixed'; // let us drag between grids by not clipping as parent .grid-stack is position: 'relative' + this._dragFollow(e); // now position it + style.transition = 'none'; // show up instantly + setTimeout(() => { + if (this.helper) { + style.transition = null; // recover animation + } + }, 0); + return this; + } + /** @internal restore back the original style before dragging */ + _removeHelperStyle() { + this.helper.classList.remove('ui-draggable-dragging'); + this.el.gridstackNode?.grid?.el.classList.remove('grid-stack-dragging'); + const node = this.helper?.gridstackNode; + // don't bother restoring styles if we're gonna remove anyway... + if (!node?._isAboutToRemove && this.dragElementOriginStyle) { + const helper = this.helper; + // don't animate, otherwise we animate offseted when switching back to 'absolute' from 'fixed'. + // TODO: this also removes resizing animation which doesn't have this issue, but others. + // Ideally both would animate ('move' would immediately restore 'absolute' and adjust coordinate to match, + // then trigger a delay (repaint) to restore to final dest with animate) but then we need to make sure 'resizestop' + // is called AFTER 'transitionend' event is received (see https://github.com/gridstack/gridstack.js/issues/2033) + const transition = this.dragElementOriginStyle['transition'] || null; + helper.style.transition = this.dragElementOriginStyle['transition'] = 'none'; // can't be NULL #1973 + DDDraggable.originStyleProp.forEach(prop => helper.style[prop] = this.dragElementOriginStyle[prop] || null); + setTimeout(() => helper.style.transition = transition, 50); // recover animation from saved vars after a pause (0 isn't enough #1973) + } + delete this.dragElementOriginStyle; + return this; + } + /** @internal updates the top/left position to follow the mouse */ + _dragFollow(e) { + const containmentRect = { left: 0, top: 0 }; + // if (this.helper.style.position === 'absolute') { // we use 'fixed' + // const { left, top } = this.helperContainment.getBoundingClientRect(); + // containmentRect = { left, top }; + // } + const style = this.helper.style; + const offset = this.dragOffset; + style.left = (e.clientX + offset.offsetLeft - containmentRect.left) * this.dragTransform.xScale + 'px'; + style.top = (e.clientY + offset.offsetTop - containmentRect.top) * this.dragTransform.yScale + 'px'; + } + /** @internal */ + _setupHelperContainmentStyle() { + this.helperContainment = this.helper.parentElement; + if (this.helper.style.position !== 'fixed') { + this.parentOriginStylePosition = this.helperContainment.style.position; + if (getComputedStyle(this.helperContainment).position.match(/static/)) { + this.helperContainment.style.position = 'relative'; + } + } + return this; + } + /** @internal */ + _getDragOffset(event, el, parent) { + // in case ancestor has transform/perspective css properties that change the viewpoint + let xformOffsetX = 0; + let xformOffsetY = 0; + if (parent) { + xformOffsetX = this.dragTransform.xOffset; + xformOffsetY = this.dragTransform.yOffset; + } + const targetOffset = el.getBoundingClientRect(); + return { + left: targetOffset.left, + top: targetOffset.top, + offsetLeft: -event.clientX + targetOffset.left - xformOffsetX, + offsetTop: -event.clientY + targetOffset.top - xformOffsetY, + width: targetOffset.width * this.dragTransform.xScale, + height: targetOffset.height * this.dragTransform.yScale + }; + } + /** @internal TODO: set to public as called by DDDroppable! */ + ui() { + const containmentEl = this.el.parentElement; + const containmentRect = containmentEl.getBoundingClientRect(); + const offset = this.helper.getBoundingClientRect(); + return { + position: { + top: (offset.top - containmentRect.top) * this.dragTransform.yScale, + left: (offset.left - containmentRect.left) * this.dragTransform.xScale + } + /* not used by GridStack for now... + helper: [this.helper], //The object arr representing the helper that's being dragged. + offset: { top: offset.top, left: offset.left } // Current offset position of the helper as { top, left } object. + */ + }; + } +} +/** @internal properties we change during dragging, and restore back */ +DDDraggable.originStyleProp = ['width', 'height', 'transform', 'transform-origin', 'transition', 'pointerEvents', 'position', 'left', 'top', 'minWidth', 'willChange']; + +//# sourceMappingURL=dd-draggable.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-droppable.js +/** + * dd-droppable.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ + + + + +// let count = 0; // TEST +class DDDroppable extends DDBaseImplement { + constructor(el, option = {}) { + super(); + this.el = el; + this.option = option; + // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions) + this._mouseEnter = this._mouseEnter.bind(this); + this._mouseLeave = this._mouseLeave.bind(this); + this.enable(); + this._setupAccept(); + } + on(event, callback) { + super.on(event, callback); + } + off(event) { + super.off(event); + } + enable() { + if (this.disabled === false) + return; + super.enable(); + this.el.classList.add('ui-droppable'); + this.el.classList.remove('ui-droppable-disabled'); + this.el.addEventListener('mouseenter', this._mouseEnter); + this.el.addEventListener('mouseleave', this._mouseLeave); + if (isTouch) { + this.el.addEventListener('pointerenter', pointerenter); + this.el.addEventListener('pointerleave', pointerleave); + } + } + disable(forDestroy = false) { + if (this.disabled === true) + return; + super.disable(); + this.el.classList.remove('ui-droppable'); + if (!forDestroy) + this.el.classList.add('ui-droppable-disabled'); + this.el.removeEventListener('mouseenter', this._mouseEnter); + this.el.removeEventListener('mouseleave', this._mouseLeave); + if (isTouch) { + this.el.removeEventListener('pointerenter', pointerenter); + this.el.removeEventListener('pointerleave', pointerleave); + } + } + destroy() { + this.disable(true); + this.el.classList.remove('ui-droppable'); + this.el.classList.remove('ui-droppable-disabled'); + super.destroy(); + } + updateOption(opts) { + Object.keys(opts).forEach(key => this.option[key] = opts[key]); + this._setupAccept(); + return this; + } + /** @internal called when the cursor enters our area - prepare for a possible drop and track leaving */ + _mouseEnter(e) { + // console.log(`${count++} Enter ${this.el.id || (this.el as GridHTMLElement).gridstack.opts.id}`); // TEST + if (!DDManager.dragElement) + return; + if (!this._canDrop(DDManager.dragElement.el)) + return; + e.preventDefault(); + e.stopPropagation(); + // make sure when we enter this, that the last one gets a leave FIRST to correctly cleanup as we don't always do + if (DDManager.dropElement && DDManager.dropElement !== this) { + DDManager.dropElement._mouseLeave(e, true); // calledByEnter = true + } + DDManager.dropElement = this; + const ev = Utils.initEvent(e, { target: this.el, type: 'dropover' }); + if (this.option.over) { + this.option.over(ev, this._ui(DDManager.dragElement)); + } + this.triggerEvent('dropover', ev); + this.el.classList.add('ui-droppable-over'); + // console.log('tracking'); // TEST + } + /** @internal called when the item is leaving our area, stop tracking if we had moving item */ + _mouseLeave(e, calledByEnter = false) { + // console.log(`${count++} Leave ${this.el.id || (this.el as GridHTMLElement).gridstack.opts.id}`); // TEST + if (!DDManager.dragElement || DDManager.dropElement !== this) + return; + e.preventDefault(); + e.stopPropagation(); + const ev = Utils.initEvent(e, { target: this.el, type: 'dropout' }); + if (this.option.out) { + this.option.out(ev, this._ui(DDManager.dragElement)); + } + this.triggerEvent('dropout', ev); + if (DDManager.dropElement === this) { + delete DDManager.dropElement; + // console.log('not tracking'); // TEST + // if we're still over a parent droppable, send it an enter as we don't get one from leaving nested children + if (!calledByEnter) { + let parentDrop; + let parent = this.el.parentElement; + while (!parentDrop && parent) { + parentDrop = parent.ddElement?.ddDroppable; + parent = parent.parentElement; + } + if (parentDrop) { + parentDrop._mouseEnter(e); + } + } + } + } + /** item is being dropped on us - called by the drag mouseup handler - this calls the client drop event */ + drop(e) { + e.preventDefault(); + const ev = Utils.initEvent(e, { target: this.el, type: 'drop' }); + if (this.option.drop) { + this.option.drop(ev, this._ui(DDManager.dragElement)); + } + this.triggerEvent('drop', ev); + } + /** @internal true if element matches the string/method accept option */ + _canDrop(el) { + return el && (!this.accept || this.accept(el)); + } + /** @internal */ + _setupAccept() { + if (!this.option.accept) + return this; + if (typeof this.option.accept === 'string') { + this.accept = (el) => el.classList.contains(this.option.accept) || el.matches(this.option.accept); + } + else { + this.accept = this.option.accept; + } + return this; + } + /** @internal */ + _ui(drag) { + return { + draggable: drag.el, + ...drag.ui() + }; + } +} +//# sourceMappingURL=dd-droppable.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-element.js +/** + * dd-elements.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ + + + +class DDElement { + static init(el) { + if (!el.ddElement) { + el.ddElement = new DDElement(el); + } + return el.ddElement; + } + constructor(el) { + this.el = el; + } + on(eventName, callback) { + if (this.ddDraggable && ['drag', 'dragstart', 'dragstop'].indexOf(eventName) > -1) { + this.ddDraggable.on(eventName, callback); + } + else if (this.ddDroppable && ['drop', 'dropover', 'dropout'].indexOf(eventName) > -1) { + this.ddDroppable.on(eventName, callback); + } + else if (this.ddResizable && ['resizestart', 'resize', 'resizestop'].indexOf(eventName) > -1) { + this.ddResizable.on(eventName, callback); + } + return this; + } + off(eventName) { + if (this.ddDraggable && ['drag', 'dragstart', 'dragstop'].indexOf(eventName) > -1) { + this.ddDraggable.off(eventName); + } + else if (this.ddDroppable && ['drop', 'dropover', 'dropout'].indexOf(eventName) > -1) { + this.ddDroppable.off(eventName); + } + else if (this.ddResizable && ['resizestart', 'resize', 'resizestop'].indexOf(eventName) > -1) { + this.ddResizable.off(eventName); + } + return this; + } + setupDraggable(opts) { + if (!this.ddDraggable) { + this.ddDraggable = new DDDraggable(this.el, opts); + } + else { + this.ddDraggable.updateOption(opts); + } + return this; + } + cleanDraggable() { + if (this.ddDraggable) { + this.ddDraggable.destroy(); + delete this.ddDraggable; + } + return this; + } + setupResizable(opts) { + if (!this.ddResizable) { + this.ddResizable = new DDResizable(this.el, opts); + } + else { + this.ddResizable.updateOption(opts); + } + return this; + } + cleanResizable() { + if (this.ddResizable) { + this.ddResizable.destroy(); + delete this.ddResizable; + } + return this; + } + setupDroppable(opts) { + if (!this.ddDroppable) { + this.ddDroppable = new DDDroppable(this.el, opts); + } + else { + this.ddDroppable.updateOption(opts); + } + return this; + } + cleanDroppable() { + if (this.ddDroppable) { + this.ddDroppable.destroy(); + delete this.ddDroppable; + } + return this; + } +} +//# sourceMappingURL=dd-element.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/dd-gridstack.js +/** + * dd-gridstack.ts 12.3.2 + * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license + */ + + + +// let count = 0; // TEST +/** + * HTML Native Mouse and Touch Events Drag and Drop functionality. + * + * This class provides the main drag & drop implementation for GridStack, + * handling resizing, dragging, and dropping of grid items using native HTML5 events. + * It manages the interaction between different DD components and the grid system. + */ +class DDGridStack { + /** + * Enable/disable/configure resizing for grid elements. + * + * @param el - Grid item element(s) to configure + * @param opts - Resize options or command ('enable', 'disable', 'destroy', 'option', or config object) + * @param key - Option key when using 'option' command + * @param value - Option value when using 'option' command + * @returns this instance for chaining + * + * @example + * dd.resizable(element, 'enable'); // Enable resizing + * dd.resizable(element, 'option', 'minWidth', 100); // Set minimum width + */ + resizable(el, opts, key, value) { + this._getDDElements(el, opts).forEach(dEl => { + if (opts === 'disable' || opts === 'enable') { + dEl.ddResizable && dEl.ddResizable[opts](); // can't create DD as it requires options for setupResizable() + } + else if (opts === 'destroy') { + dEl.ddResizable && dEl.cleanResizable(); + } + else if (opts === 'option') { + dEl.setupResizable({ [key]: value }); + } + else { + const n = dEl.el.gridstackNode; + const grid = n.grid; + let handles = dEl.el.getAttribute('gs-resize-handles') || grid.opts.resizable.handles || 'e,s,se'; + if (handles === 'all') + handles = 'n,e,s,w,se,sw,ne,nw'; + // NOTE: keep the resize handles as e,w don't have enough space (10px) to show resize corners anyway. limit during drag instead + // restrict vertical resize if height is done to match content anyway... odd to have it spring back + // if (Utils.shouldSizeToContent(n, true)) { + // const doE = handles.indexOf('e') !== -1; + // const doW = handles.indexOf('w') !== -1; + // handles = doE ? (doW ? 'e,w' : 'e') : (doW ? 'w' : ''); + // } + const autoHide = !grid.opts.alwaysShowResizeHandle; + dEl.setupResizable({ + ...grid.opts.resizable, + ...{ handles, autoHide }, + ...{ + start: opts.start, + stop: opts.stop, + resize: opts.resize + } + }); + } + }); + return this; + } + /** + * Enable/disable/configure dragging for grid elements. + * + * @param el - Grid item element(s) to configure + * @param opts - Drag options or command ('enable', 'disable', 'destroy', 'option', or config object) + * @param key - Option key when using 'option' command + * @param value - Option value when using 'option' command + * @returns this instance for chaining + * + * @example + * dd.draggable(element, 'enable'); // Enable dragging + * dd.draggable(element, {handle: '.drag-handle'}); // Configure drag handle + */ + draggable(el, opts, key, value) { + this._getDDElements(el, opts).forEach(dEl => { + if (opts === 'disable' || opts === 'enable') { + dEl.ddDraggable && dEl.ddDraggable[opts](); // can't create DD as it requires options for setupDraggable() + } + else if (opts === 'destroy') { + dEl.ddDraggable && dEl.cleanDraggable(); + } + else if (opts === 'option') { + dEl.setupDraggable({ [key]: value }); + } + else { + const grid = dEl.el.gridstackNode.grid; + dEl.setupDraggable({ + ...grid.opts.draggable, + ...{ + // containment: (grid.parentGridNode && grid.opts.dragOut === false) ? grid.el.parentElement : (grid.opts.draggable.containment || null), + start: opts.start, + stop: opts.stop, + drag: opts.drag + } + }); + } + }); + return this; + } + dragIn(el, opts) { + this._getDDElements(el).forEach(dEl => dEl.setupDraggable(opts)); + return this; + } + droppable(el, opts, key, value) { + if (typeof opts.accept === 'function' && !opts._accept) { + opts._accept = opts.accept; + opts.accept = (el) => opts._accept(el); + } + this._getDDElements(el, opts).forEach(dEl => { + if (opts === 'disable' || opts === 'enable') { + dEl.ddDroppable && dEl.ddDroppable[opts](); + } + else if (opts === 'destroy') { + dEl.ddDroppable && dEl.cleanDroppable(); + } + else if (opts === 'option') { + dEl.setupDroppable({ [key]: value }); + } + else { + dEl.setupDroppable(opts); + } + }); + return this; + } + /** true if element is droppable */ + isDroppable(el) { + return !!(el?.ddElement?.ddDroppable && !el.ddElement.ddDroppable.disabled); + } + /** true if element is draggable */ + isDraggable(el) { + return !!(el?.ddElement?.ddDraggable && !el.ddElement.ddDraggable.disabled); + } + /** true if element is draggable */ + isResizable(el) { + return !!(el?.ddElement?.ddResizable && !el.ddElement.ddResizable.disabled); + } + on(el, name, callback) { + this._getDDElements(el).forEach(dEl => dEl.on(name, (event) => { + callback(event, DDManager.dragElement ? DDManager.dragElement.el : event.target, DDManager.dragElement ? DDManager.dragElement.helper : null); + })); + return this; + } + off(el, name) { + this._getDDElements(el).forEach(dEl => dEl.off(name)); + return this; + } + /** @internal returns a list of DD elements, creating them on the fly by default unless option is to destroy or disable */ + _getDDElements(els, opts) { + // don't force create if we're going to destroy it, unless it's a grid which is used as drop target for it's children + const create = els.gridstack || opts !== 'destroy' && opts !== 'disable'; + const hosts = Utils.getElements(els); + if (!hosts.length) + return []; + const list = hosts.map(e => e.ddElement || (create ? DDElement.init(e) : null)).filter(d => d); // remove nulls + return list; + } +} +//# sourceMappingURL=dd-gridstack.js.map +;// CONCATENATED MODULE: ../node_modules/.pnpm/gridstack@12.3.3/node_modules/gridstack/dist/gridstack.js +/*! + * GridStack 12.3.2 + * https://gridstackjs.com/ + * + * Copyright (c) 2021-2025 Alain Dumesny + * see root license https://github.com/gridstack/gridstack.js/tree/master/LICENSE + */ + + + +/* + * and include D&D by default + * TODO: while we could generate a gridstack-static.js at smaller size - saves about 31k (41k -> 72k) + * I don't know how to generate the DD only code at the remaining 31k to delay load as code depends on Gridstack.ts + * also it caused loading issues in prod - see https://github.com/gridstack/gridstack.js/issues/2039 + */ + + + +const dd = new DDGridStack; +// export all dependent file as well to make it easier for users to just import the main file + + + + + + + + + + + +/** + * Main gridstack class - you will need to call `GridStack.init()` first to initialize your grid. + * Note: your grid elements MUST have the following classes for the CSS layout to work: + * @example + *
+ *
+ *
Item 1
+ *
+ *
+ */ +class GridStack { + /** + * initializing the HTML element, or selector string, into a grid will return the grid. Calling it again will + * simply return the existing instance (ignore any passed options). There is also an initAll() version that support + * multiple grids initialization at once. Or you can use addGrid() to create the entire grid from JSON. + * @param options grid options (optional) + * @param elOrString element or CSS selector (first one used) to convert to a grid (default to '.grid-stack' class selector) + * + * @example + * const grid = GridStack.init(); + * + * Note: the HTMLElement (of type GridHTMLElement) will store a `gridstack: GridStack` value that can be retrieve later + * const grid = document.querySelector('.grid-stack').gridstack; + */ + static init(options = {}, elOrString = '.grid-stack') { + if (typeof document === 'undefined') + return null; // temp workaround SSR + const el = GridStack.getGridElement(elOrString); + if (!el) { + if (typeof elOrString === 'string') { + console.error('GridStack.initAll() no grid was found with selector "' + elOrString + '" - element missing or wrong selector ?' + + '\nNote: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.'); + } + else { + console.error('GridStack.init() no grid element was passed.'); + } + return null; + } + if (!el.gridstack) { + el.gridstack = new GridStack(el, Utils.cloneDeep(options)); + } + return el.gridstack; + } + /** + * Will initialize a list of elements (given a selector) and return an array of grids. + * @param options grid options (optional) + * @param selector elements selector to convert to grids (default to '.grid-stack' class selector) + * + * @example + * const grids = GridStack.initAll(); + * grids.forEach(...) + */ + static initAll(options = {}, selector = '.grid-stack') { + const grids = []; + if (typeof document === 'undefined') + return grids; // temp workaround SSR + GridStack.getGridElements(selector).forEach(el => { + if (!el.gridstack) { + el.gridstack = new GridStack(el, Utils.cloneDeep(options)); + } + grids.push(el.gridstack); + }); + if (grids.length === 0) { + console.error('GridStack.initAll() no grid was found with selector "' + selector + '" - element missing or wrong selector ?' + + '\nNote: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.'); + } + return grids; + } + /** + * call to create a grid with the given options, including loading any children from JSON structure. This will call GridStack.init(), then + * grid.load() on any passed children (recursively). Great alternative to calling init() if you want entire grid to come from + * JSON serialized data, including options. + * @param parent HTML element parent to the grid + * @param opt grids options used to initialize the grid, and list of children + */ + static addGrid(parent, opt = {}) { + if (!parent) + return null; + let el = parent; + if (el.gridstack) { + // already a grid - set option and load data + const grid = el.gridstack; + if (opt) + grid.opts = { ...grid.opts, ...opt }; + if (opt.children !== undefined) + grid.load(opt.children); + return grid; + } + // create the grid element, but check if the passed 'parent' already has grid styling and should be used instead + const parentIsGrid = parent.classList.contains('grid-stack'); + if (!parentIsGrid || GridStack.addRemoveCB) { + if (GridStack.addRemoveCB) { + el = GridStack.addRemoveCB(parent, opt, true, true); + } + else { + el = Utils.createDiv(['grid-stack', opt.class], parent); + } + } + // create grid class and load any children + const grid = GridStack.init(opt, el); + return grid; + } + /** call this method to register your engine instead of the default one. + * See instead `GridStackOptions.engineClass` if you only need to + * replace just one instance. + */ + static registerEngine(engineClass) { + GridStack.engineClass = engineClass; + } + /** + * @internal create placeholder DIV as needed + * @returns the placeholder element for indicating drop zones during drag operations + */ + get placeholder() { + if (!this._placeholder) { + this._placeholder = Utils.createDiv([this.opts.placeholderClass, gridDefaults.itemClass, this.opts.itemClass]); + const placeholderChild = Utils.createDiv(['placeholder-content'], this._placeholder); + if (this.opts.placeholderText) { + placeholderChild.textContent = this.opts.placeholderText; + } + } + return this._placeholder; + } + /** + * Construct a grid item from the given element and options + * @param el the HTML element tied to this grid after it's been initialized + * @param opts grid options - public for classes to access, but use methods to modify! + */ + constructor(el, opts = {}) { + this.el = el; + this.opts = opts; + /** time to wait for animation (if enabled) to be done so content sizing can happen */ + this.animationDelay = 300 + 10; + /** @internal */ + this._gsEventHandler = {}; + /** @internal extra row added when dragging at the bottom of the grid */ + this._extraDragRow = 0; + /** @internal meant to store the scale of the active grid */ + this.dragTransform = { xScale: 1, yScale: 1, xOffset: 0, yOffset: 0 }; + el.gridstack = this; + this.opts = opts = opts || {}; // handles null/undefined/0 + if (!el.classList.contains('grid-stack')) { + this.el.classList.add('grid-stack'); + } + // if row property exists, replace minRow and maxRow instead + if (opts.row) { + opts.minRow = opts.maxRow = opts.row; + delete opts.row; + } + const rowAttr = Utils.toNumber(el.getAttribute('gs-row')); + // flag only valid in sub-grids (handled by parent, not here) + if (opts.column === 'auto') { + delete opts.column; + } + // save original setting so we can restore on save + if (opts.alwaysShowResizeHandle !== undefined) { + opts._alwaysShowResizeHandle = opts.alwaysShowResizeHandle; + } + // cleanup responsive opts (must have columnWidth | breakpoints) then sort breakpoints by size (so we can match during resize) + const resp = opts.columnOpts; + if (resp) { + const bk = resp.breakpoints; + if (!resp.columnWidth && !bk?.length) { + delete opts.columnOpts; + } + else { + resp.columnMax = resp.columnMax || 12; + if (bk?.length > 1) + bk.sort((a, b) => (b.w || 0) - (a.w || 0)); + } + } + // elements DOM attributes override any passed options (like CSS style) - merge the two together + const defaults = { + ...Utils.cloneDeep(gridDefaults), + column: Utils.toNumber(el.getAttribute('gs-column')) || gridDefaults.column, + minRow: rowAttr ? rowAttr : Utils.toNumber(el.getAttribute('gs-min-row')) || gridDefaults.minRow, + maxRow: rowAttr ? rowAttr : Utils.toNumber(el.getAttribute('gs-max-row')) || gridDefaults.maxRow, + staticGrid: Utils.toBool(el.getAttribute('gs-static')) || gridDefaults.staticGrid, + sizeToContent: Utils.toBool(el.getAttribute('gs-size-to-content')) || undefined, + draggable: { + handle: (opts.handleClass ? '.' + opts.handleClass : (opts.handle ? opts.handle : '')) || gridDefaults.draggable.handle, + }, + removableOptions: { + accept: opts.itemClass || gridDefaults.removableOptions.accept, + decline: gridDefaults.removableOptions.decline + }, + }; + if (el.getAttribute('gs-animate')) { // default to true, but if set to false use that instead + defaults.animate = Utils.toBool(el.getAttribute('gs-animate')); + } + opts = Utils.defaults(opts, defaults); + this._initMargin(); // part of settings defaults... + // Now check if we're loading into !12 column mode FIRST so we don't do un-necessary work (like cellHeight = width / 12 then go 1 column) + this.checkDynamicColumn(); + this._updateColumnVar(opts); + if (opts.rtl === 'auto') { + opts.rtl = (el.style.direction === 'rtl'); + } + if (opts.rtl) { + this.el.classList.add('grid-stack-rtl'); + } + // check if we're been nested, and if so update our style and keep pointer around (used during save) + const parentGridItem = this.el.closest('.' + gridDefaults.itemClass); + const parentNode = parentGridItem?.gridstackNode; + if (parentNode) { + parentNode.subGrid = this; + this.parentGridNode = parentNode; + this.el.classList.add('grid-stack-nested'); + parentNode.el.classList.add('grid-stack-sub-grid'); + } + this._isAutoCellHeight = (opts.cellHeight === 'auto'); + if (this._isAutoCellHeight || opts.cellHeight === 'initial') { + // make the cell content square initially (will use resize/column event to keep it square) + this.cellHeight(undefined); + } + else { + // append unit if any are set + if (typeof opts.cellHeight == 'number' && opts.cellHeightUnit && opts.cellHeightUnit !== gridDefaults.cellHeightUnit) { + opts.cellHeight = opts.cellHeight + opts.cellHeightUnit; + delete opts.cellHeightUnit; + } + const val = opts.cellHeight; + delete opts.cellHeight; // force initial cellHeight() call to set the value + this.cellHeight(val); + } + // see if we need to adjust auto-hide + if (opts.alwaysShowResizeHandle === 'mobile') { + opts.alwaysShowResizeHandle = isTouch; + } + this._setStaticClass(); + const engineClass = opts.engineClass || GridStack.engineClass || GridStackEngine; + this.engine = new engineClass({ + column: this.getColumn(), + float: opts.float, + maxRow: opts.maxRow, + onChange: (cbNodes) => { + cbNodes.forEach(n => { + const el = n.el; + if (!el) + return; + if (n._removeDOM) { + if (el) + el.remove(); + delete n._removeDOM; + } + else { + this._writePosAttr(el, n); + } + }); + this._updateContainerHeight(); + } + }); + if (opts.auto) { + this.batchUpdate(); // prevent in between re-layout #1535 TODO: this only set float=true, need to prevent collision check... + this.engine._loading = true; // loading collision check + this.getGridItems().forEach(el => this._prepareElement(el)); + delete this.engine._loading; + this.batchUpdate(false); + } + // load any passed in children as well, which overrides any DOM layout done above + if (opts.children) { + const children = opts.children; + delete opts.children; + if (children.length) + this.load(children); // don't load empty + } + this.setAnimation(); + // dynamic grids require pausing during drag to detect over to nest vs push + if (opts.subGridDynamic && !DDManager.pauseDrag) + DDManager.pauseDrag = true; + if (opts.draggable?.pause !== undefined) + DDManager.pauseDrag = opts.draggable.pause; + this._setupRemoveDrop(); + this._setupAcceptWidget(); + this._updateResizeEvent(); + } + _updateColumnVar(opts = this.opts) { + this.el.classList.add('gs-' + opts.column); + if (typeof opts.column === 'number') + this.el.style.setProperty('--gs-column-width', `${100 / opts.column}%`); + } + /** + * add a new widget and returns it. + * + * Widget will be always placed even if result height is more than actual grid height. + * You need to use `willItFit()` before calling addWidget for additional check. + * See also `makeWidget(el)` for DOM element. + * + * @example + * const grid = GridStack.init(); + * grid.addWidget({w: 3, content: 'hello'}); + * + * @param w GridStackWidget definition. used MakeWidget(el) if you have dom element instead. + */ + addWidget(w) { + if (!w) + return; + if (typeof w === 'string') { + console.error('V11: GridStack.addWidget() does not support string anymore. see #2736'); + return; + } + if (w.ELEMENT_NODE) { + console.error('V11: GridStack.addWidget() does not support HTMLElement anymore. use makeWidget()'); + return this.makeWidget(w); + } + let el; + let node = w; + node.grid = this; + if (node.el) { + el = node.el; // re-use element stored in the node + } + else if (GridStack.addRemoveCB) { + el = GridStack.addRemoveCB(this.el, w, true, false); + } + else { + el = this.createWidgetDivs(node); + } + if (!el) + return; + // if the caller ended up initializing the widget in addRemoveCB, or we stared with one already, skip the rest + node = el.gridstackNode; + if (node && el.parentElement === this.el && this.engine.nodes.find(n => n._id === node._id)) + return el; + // Tempting to initialize the passed in opt with default and valid values, but this break knockout demos + // as the actual value are filled in when _prepareElement() calls el.getAttribute('gs-xyz') before adding the node. + // So make sure we load any DOM attributes that are not specified in passed in options (which override) + const domAttr = this._readAttr(el); + Utils.defaults(w, domAttr); + this.engine.prepareNode(w); + // this._writeAttr(el, w); why write possibly incorrect values back when makeWidget() will ? + this.el.appendChild(el); + this.makeWidget(el, w); + return el; + } + /** + * Create the default grid item divs and content (possibly lazy loaded) by using GridStack.renderCB(). + * + * @param n GridStackNode definition containing widget configuration + * @returns the created HTML element with proper grid item structure + * + * @example + * const element = grid.createWidgetDivs({ w: 2, h: 1, content: 'Hello World' }); + */ + createWidgetDivs(n) { + const el = Utils.createDiv(['grid-stack-item', this.opts.itemClass]); + const cont = Utils.createDiv(['grid-stack-item-content'], el); + if (Utils.lazyLoad(n)) { + if (!n.visibleObservable) { + n.visibleObservable = new IntersectionObserver(([entry]) => { + if (entry.isIntersecting) { + n.visibleObservable?.disconnect(); + delete n.visibleObservable; + GridStack.renderCB(cont, n); + n.grid?.prepareDragDrop(n.el); + } + }); + window.setTimeout(() => n.visibleObservable?.observe(el)); // wait until callee sets position attributes + } + } + else + GridStack.renderCB(cont, n); + return el; + } + /** + * Convert an existing gridItem element into a sub-grid with the given (optional) options, else inherit them + * from the parent's subGrid options. + * @param el gridItem element to convert + * @param ops (optional) sub-grid options, else default to node, then parent settings, else defaults + * @param nodeToAdd (optional) node to add to the newly created sub grid (used when dragging over existing regular item) + * @param saveContent if true (default) the html inside .grid-stack-content will be saved to child widget + * @returns newly created grid + */ + makeSubGrid(el, ops, nodeToAdd, saveContent = true) { + let node = el.gridstackNode; + if (!node) { + node = this.makeWidget(el).gridstackNode; + } + if (node.subGrid?.el) + return node.subGrid; // already done + // find the template subGrid stored on a parent as fallback... + let subGridTemplate; // eslint-disable-next-line @typescript-eslint/no-this-alias + let grid = this; + while (grid && !subGridTemplate) { + subGridTemplate = grid.opts?.subGridOpts; + grid = grid.parentGridNode?.grid; + } + //... and set the create options + ops = Utils.cloneDeep({ + // by default sub-grid inherit from us | parent, other than id, children, etc... + ...this.opts, id: undefined, children: undefined, column: 'auto', columnOpts: undefined, layout: 'list', subGridOpts: undefined, + ...(subGridTemplate || {}), + ...(ops || node.subGridOpts || {}) + }); + node.subGridOpts = ops; + // if column special case it set, remember that flag and set default + let autoColumn; + if (ops.column === 'auto') { + autoColumn = true; + ops.column = Math.max(node.w || 1, nodeToAdd?.w || 1); + delete ops.columnOpts; // driven by parent + } + // if we're converting an existing full item, move over the content to be the first sub item in the new grid + let content = node.el.querySelector('.grid-stack-item-content'); + let newItem; + let newItemOpt; + if (saveContent) { + this._removeDD(node.el); // remove D&D since it's set on content div + newItemOpt = { ...node, x: 0, y: 0 }; + Utils.removeInternalForSave(newItemOpt); + delete newItemOpt.subGridOpts; + if (node.content) { + newItemOpt.content = node.content; + delete node.content; + } + if (GridStack.addRemoveCB) { + newItem = GridStack.addRemoveCB(this.el, newItemOpt, true, false); + } + else { + newItem = Utils.createDiv(['grid-stack-item']); + newItem.appendChild(content); + content = Utils.createDiv(['grid-stack-item-content'], node.el); + } + this.prepareDragDrop(node.el); // ... and restore original D&D + } + // if we're adding an additional item, make the container large enough to have them both + if (nodeToAdd) { + const w = autoColumn ? ops.column : node.w; + const h = node.h + nodeToAdd.h; + const style = node.el.style; + style.transition = 'none'; // show up instantly so we don't see scrollbar with nodeToAdd + this.update(node.el, { w, h }); + setTimeout(() => style.transition = null); // recover animation + } + const subGrid = node.subGrid = GridStack.addGrid(content, ops); + if (nodeToAdd?._moving) + subGrid._isTemp = true; // prevent re-nesting as we add over + if (autoColumn) + subGrid._autoColumn = true; + // add the original content back as a child of the newly created grid + if (saveContent) { + subGrid.makeWidget(newItem, newItemOpt); + } + // now add any additional node + if (nodeToAdd) { + if (nodeToAdd._moving) { + // create an artificial event even for the just created grid to receive this item + window.setTimeout(() => Utils.simulateMouseEvent(nodeToAdd._event, 'mouseenter', subGrid.el), 0); + } + else { + subGrid.makeWidget(node.el, node); + } + } + // if sizedToContent, we need to re-calc the size of ourself + this.resizeToContentCheck(false, node); + return subGrid; + } + /** + * called when an item was converted into a nested grid to accommodate a dragged over item, but then item leaves - return back + * to the original grid-item. Also called to remove empty sub-grids when last item is dragged out (since re-creating is simple) + */ + removeAsSubGrid(nodeThatRemoved) { + const pGrid = this.parentGridNode?.grid; + if (!pGrid) + return; + pGrid.batchUpdate(); + pGrid.removeWidget(this.parentGridNode.el, true, true); + this.engine.nodes.forEach(n => { + // migrate any children over and offsetting by our location + n.x += this.parentGridNode.x; + n.y += this.parentGridNode.y; + pGrid.makeWidget(n.el, n); + }); + pGrid.batchUpdate(false); + if (this.parentGridNode) + delete this.parentGridNode.subGrid; + delete this.parentGridNode; + // create an artificial event for the original grid now that this one is gone (got a leave, but won't get enter) + if (nodeThatRemoved) { + window.setTimeout(() => Utils.simulateMouseEvent(nodeThatRemoved._event, 'mouseenter', pGrid.el), 0); + } + } + /** + * saves the current layout returning a list of widgets for serialization which might include any nested grids. + * @param saveContent if true (default) the latest html inside .grid-stack-content will be saved to GridStackWidget.content field, else it will + * be removed. + * @param saveGridOpt if true (default false), save the grid options itself, so you can call the new GridStack.addGrid() + * to recreate everything from scratch. GridStackOptions.children would then contain the widget list instead. + * @param saveCB callback for each node -> widget, so application can insert additional data to be saved into the widget data structure. + * @param column if provided, the grid will be saved for the given column size (IFF we have matching internal saved layout, or current layout). + * Otherwise it will use the largest possible layout (say 12 even if rendering at 1 column) so we can restore to all layouts. + * NOTE: if you want to save to currently display layout, pass this.getColumn() as column. + * NOTE2: nested grids will ALWAYS save to the container size to be in sync with parent. + * @returns list of widgets or full grid option, including .children list of widgets + */ + save(saveContent = true, saveGridOpt = false, saveCB = GridStack.saveCB, column) { + // return copied GridStackWidget (with optionally .el) we can modify at will... + const list = this.engine.save(saveContent, saveCB, column); + // check for HTML content and nested grids + list.forEach(n => { + if (saveContent && n.el && !n.subGrid && !saveCB) { // sub-grid are saved differently, not plain content + const itemContent = n.el.querySelector('.grid-stack-item-content'); + n.content = itemContent?.innerHTML; + if (!n.content) + delete n.content; + } + else { + if (!saveContent && !saveCB) { + delete n.content; + } + // check for nested grid - make sure it saves to the given container size to be consistent + if (n.subGrid?.el) { + const column = n.w || n.subGrid.getColumn(); + const listOrOpt = n.subGrid.save(saveContent, saveGridOpt, saveCB, column); + n.subGridOpts = (saveGridOpt ? listOrOpt : { children: listOrOpt }); + delete n.subGrid; + } + } + delete n.el; + }); + // check if save entire grid options (needed for recursive) + children... + if (saveGridOpt) { + const o = Utils.cloneDeep(this.opts); + // delete default values that will be recreated on launch + if (o.marginBottom === o.marginTop && o.marginRight === o.marginLeft && o.marginTop === o.marginRight) { + o.margin = o.marginTop; + delete o.marginTop; + delete o.marginRight; + delete o.marginBottom; + delete o.marginLeft; + } + if (o.rtl === (this.el.style.direction === 'rtl')) { + o.rtl = 'auto'; + } + if (this._isAutoCellHeight) { + o.cellHeight = 'auto'; + } + if (this._autoColumn) { + o.column = 'auto'; + } + const origShow = o._alwaysShowResizeHandle; + delete o._alwaysShowResizeHandle; + if (origShow !== undefined) { + o.alwaysShowResizeHandle = origShow; + } + else { + delete o.alwaysShowResizeHandle; + } + Utils.removeInternalAndSame(o, gridDefaults); + o.children = list; + return o; + } + return list; + } + /** + * Load widgets from a list. This will call update() on each (matching by id) or add/remove widgets that are not there. + * Used to restore a grid layout for a saved layout list (see `save()`). + * + * @param items list of widgets definition to update/create + * @param addRemove boolean (default true) or callback method can be passed to control if and how missing widgets can be added/removed, giving + * the user control of insertion. + * @returns the grid instance for chaining + * + * @example + * // Basic usage with saved layout + * const savedLayout = grid.save(); // Save current layout + * // ... later restore it + * grid.load(savedLayout); + * + * // Load with custom add/remove callback + * grid.load(layout, (items, grid, add) => { + * if (add) { + * // Custom logic for adding new widgets + * items.forEach(item => { + * const el = document.createElement('div'); + * el.innerHTML = item.content || ''; + * grid.addWidget(el, item); + * }); + * } else { + * // Custom logic for removing widgets + * items.forEach(item => grid.removeWidget(item.el)); + * } + * }); + * + * // Load without adding/removing missing widgets + * grid.load(layout, false); + * + * @see {@link http://gridstackjs.com/demo/serialization.html} for complete example + */ + load(items, addRemove = GridStack.addRemoveCB || true) { + items = Utils.cloneDeep(items); // so we can mod + const column = this.getColumn(); + // make sure size 1x1 (default) is present as it may need to override current sizes + items.forEach(n => { n.w = n.w || n.minW || 1; n.h = n.h || n.minH || 1; }); + // sort items. those without coord will be appended last + items = Utils.sort(items); + this.engine.skipCacheUpdate = this._ignoreLayoutsNodeChange = true; // skip layout update + // if we're loading a layout into for example 1 column and items don't fit, make sure to save + // the original wanted layout so we can scale back up correctly #1471 + let maxColumn = 0; + items.forEach(n => { maxColumn = Math.max(maxColumn, (n.x || 0) + n.w); }); + if (maxColumn > this.engine.defaultColumn) + this.engine.defaultColumn = maxColumn; + if (maxColumn > column) { + // if we're loading (from empty) into a smaller column, check for special responsive layout + if (this.engine.nodes.length === 0 && this.responseLayout) { + this.engine.nodes = items; + this.engine.columnChanged(maxColumn, column, this.responseLayout); + items = this.engine.nodes; + this.engine.nodes = []; + delete this.responseLayout; + } + else + this.engine.cacheLayout(items, maxColumn, true); + } + // if given a different callback, temporally set it as global option so creating will use it + const prevCB = GridStack.addRemoveCB; + if (typeof (addRemove) === 'function') + GridStack.addRemoveCB = addRemove; + const removed = []; + this.batchUpdate(); + // if we are loading from empty temporarily remove animation + const blank = !this.engine.nodes.length; + const noAnim = blank && this.opts.animate; + if (noAnim) + this.setAnimation(false); + // see if any items are missing from new layout and need to be removed first + if (!blank && addRemove) { + const copyNodes = [...this.engine.nodes]; // don't loop through array you modify + copyNodes.forEach(n => { + if (!n.id) + return; + const item = Utils.find(items, n.id); + if (!item) { + if (GridStack.addRemoveCB) + GridStack.addRemoveCB(this.el, n, false, false); + removed.push(n); // batch keep track + this.removeWidget(n.el, true, false); + } + }); + } + // now add/update the widgets - starting with removing items in the new layout we will reposition + // to reduce collision and add no-coord ones at next available spot + this.engine._loading = true; // help with collision + const updateNodes = []; + this.engine.nodes = this.engine.nodes.filter(n => { + if (Utils.find(items, n.id)) { + updateNodes.push(n); + return false; + } // remove if found from list + return true; + }); + items.forEach(w => { + const item = Utils.find(updateNodes, w.id); + if (item) { + // if item sizes to content, re-use the exiting height so it's a better guess at the final size (same if width doesn't change) + if (Utils.shouldSizeToContent(item)) + w.h = item.h; + // check if missing coord, in which case find next empty slot with new (or old if missing) sizes + this.engine.nodeBoundFix(w); + if (w.autoPosition || w.x === undefined || w.y === undefined) { + w.w = w.w || item.w; + w.h = w.h || item.h; + this.engine.findEmptyPosition(w); + } + // add back to current list BUT force a collision check if it 'appears' we didn't change to make sure we don't overlap others now + this.engine.nodes.push(item); + if (Utils.samePos(item, w) && this.engine.nodes.length > 1) { + this.moveNode(item, { ...w, forceCollide: true }); + Utils.copyPos(w, item); // use possily updated values before update() is called next (no-op since already moved) + } + this.update(item.el, w); + if (w.subGridOpts?.children) { // update any sub grid as well + const sub = item.el.querySelector('.grid-stack'); + if (sub && sub.gridstack) { + sub.gridstack.load(w.subGridOpts.children); // TODO: support updating grid options ? + } + } + } + else if (addRemove) { + this.addWidget(w); + } + }); + delete this.engine._loading; // done loading + this.engine.removedNodes = removed; + this.batchUpdate(false); + // after commit, clear that flag + delete this._ignoreLayoutsNodeChange; + delete this.engine.skipCacheUpdate; + prevCB ? GridStack.addRemoveCB = prevCB : delete GridStack.addRemoveCB; + if (noAnim) + this.setAnimation(true, true); // delay adding animation back + return this; + } + /** + * use before calling a bunch of `addWidget()` to prevent un-necessary relayouts in between (more efficient) + * and get a single event callback. You will see no changes until `batchUpdate(false)` is called. + */ + batchUpdate(flag = true) { + this.engine.batchUpdate(flag); + if (!flag) { + this._updateContainerHeight(); + this._triggerRemoveEvent(); + this._triggerAddEvent(); + this._triggerChangeEvent(); + } + return this; + } + /** + * Gets the current cell height in pixels. This takes into account the unit type and converts to pixels if necessary. + * + * @param forcePixel if true, forces conversion to pixels even when cellHeight is specified in other units + * @returns the cell height in pixels + * + * @example + * const height = grid.getCellHeight(); + * console.log('Cell height:', height, 'px'); + * + * // Force pixel conversion + * const pixelHeight = grid.getCellHeight(true); + */ + getCellHeight(forcePixel = false) { + if (this.opts.cellHeight && this.opts.cellHeight !== 'auto' && + (!forcePixel || !this.opts.cellHeightUnit || this.opts.cellHeightUnit === 'px')) { + return this.opts.cellHeight; + } + // do rem/em/cm/mm to px conversion + if (this.opts.cellHeightUnit === 'rem') { + return this.opts.cellHeight * parseFloat(getComputedStyle(document.documentElement).fontSize); + } + if (this.opts.cellHeightUnit === 'em') { + return this.opts.cellHeight * parseFloat(getComputedStyle(this.el).fontSize); + } + if (this.opts.cellHeightUnit === 'cm') { + // 1cm = 96px/2.54. See https://www.w3.org/TR/css-values-3/#absolute-lengths + return this.opts.cellHeight * (96 / 2.54); + } + if (this.opts.cellHeightUnit === 'mm') { + return this.opts.cellHeight * (96 / 2.54) / 10; + } + // else get first cell height + const el = this.el.querySelector('.' + this.opts.itemClass); + if (el) { + const h = Utils.toNumber(el.getAttribute('gs-h')) || 1; // since we don't write 1 anymore + return Math.round(el.offsetHeight / h); + } + // else do entire grid and # of rows (but doesn't work if min-height is the actual constrain) + const rows = parseInt(this.el.getAttribute('gs-current-row')); + return rows ? Math.round(this.el.getBoundingClientRect().height / rows) : this.opts.cellHeight; + } + /** + * Update current cell height - see `GridStackOptions.cellHeight` for format by updating eh Browser CSS variable. + * + * @param val the cell height. Options: + * - `undefined`: cells content will be made square (match width minus margin) + * - `0`: the CSS will be generated by the application instead + * - number: height in pixels + * - string: height with units (e.g., '70px', '5rem', '2em') + * @returns the grid instance for chaining + * + * @example + * grid.cellHeight(100); // 100px height + * grid.cellHeight('70px'); // explicit pixel height + * grid.cellHeight('5rem'); // relative to root font size + * grid.cellHeight(grid.cellWidth() * 1.2); // aspect ratio + * grid.cellHeight('auto'); // auto-size based on content + */ + cellHeight(val) { + // if not called internally, check if we're changing mode + if (val !== undefined) { + if (this._isAutoCellHeight !== (val === 'auto')) { + this._isAutoCellHeight = (val === 'auto'); + this._updateResizeEvent(); + } + } + if (val === 'initial' || val === 'auto') { + val = undefined; + } + // make item content be square + if (val === undefined) { + const marginDiff = -this.opts.marginRight - this.opts.marginLeft + + this.opts.marginTop + this.opts.marginBottom; + val = this.cellWidth() + marginDiff; + } + const data = Utils.parseHeight(val); + if (this.opts.cellHeightUnit === data.unit && this.opts.cellHeight === data.h) { + return this; + } + this.opts.cellHeightUnit = data.unit; + this.opts.cellHeight = data.h; + // finally update var and container + this.el.style.setProperty('--gs-cell-height', `${this.opts.cellHeight}${this.opts.cellHeightUnit}`); + this._updateContainerHeight(); + this.resizeToContentCheck(); + return this; + } + /** Gets current cell width. */ + /** + * Gets the current cell width in pixels. This is calculated based on the grid container width divided by the number of columns. + * + * @returns the cell width in pixels + * + * @example + * const width = grid.cellWidth(); + * console.log('Cell width:', width, 'px'); + * + * // Use cell width to calculate widget dimensions + * const widgetWidth = width * 3; // For a 3-column wide widget + */ + cellWidth() { + return this._widthOrContainer() / this.getColumn(); + } + /** return our expected width (or parent) , and optionally of window for dynamic column check */ + _widthOrContainer(forBreakpoint = false) { + // use `offsetWidth` or `clientWidth` (no scrollbar) ? + // https://stackoverflow.com/questions/21064101/understanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively + return forBreakpoint && this.opts.columnOpts?.breakpointForWindow ? window.innerWidth : (this.el.clientWidth || this.el.parentElement.clientWidth || window.innerWidth); + } + /** checks for dynamic column count for our current size, returning true if changed */ + checkDynamicColumn() { + const resp = this.opts.columnOpts; + if (!resp || (!resp.columnWidth && !resp.breakpoints?.length)) + return false; + const column = this.getColumn(); + let newColumn = column; + const w = this._widthOrContainer(true); + if (resp.columnWidth) { + newColumn = Math.min(Math.round(w / resp.columnWidth) || 1, resp.columnMax); + } + else { + // find the closest breakpoint (already sorted big to small) that matches + newColumn = resp.columnMax; + let i = 0; + while (i < resp.breakpoints.length && w <= resp.breakpoints[i].w) { + newColumn = resp.breakpoints[i++].c || column; + } + } + if (newColumn !== column) { + const bk = resp.breakpoints?.find(b => b.c === newColumn); + this.column(newColumn, bk?.layout || resp.layout); + return true; + } + return false; + } + /** + * Re-layout grid items to reclaim any empty space. This is useful after removing widgets + * or when you want to optimize the layout. + * + * @param layout layout type. Options: + * - 'compact' (default): might re-order items to fill any empty space + * - 'list': keep the widget left->right order the same, even if that means leaving an empty slot if things don't fit + * @param doSort re-sort items first based on x,y position. Set to false to do your own sorting ahead (default: true) + * @returns the grid instance for chaining + * + * @example + * // Compact layout after removing widgets + * grid.removeWidget('.widget-to-remove'); + * grid.compact(); + * + * // Use list layout (preserve order) + * grid.compact('list'); + * + * // Compact without sorting first + * grid.compact('compact', false); + */ + compact(layout = 'compact', doSort = true) { + this.engine.compact(layout, doSort); + this._triggerChangeEvent(); + return this; + } + /** + * Set the number of columns in the grid. Will update existing widgets to conform to new number of columns, + * as well as cache the original layout so you can revert back to previous positions without loss. + * + * Requires `gridstack-extra.css` or `gridstack-extra.min.css` for [2-11] columns, + * else you will need to generate correct CSS. + * See: https://github.com/gridstack/gridstack.js#change-grid-columns + * + * @param column Integer > 0 (default 12) + * @param layout specify the type of re-layout that will happen. Options: + * - 'moveScale' (default): scale widget positions and sizes + * - 'move': keep widget sizes, only move positions + * - 'scale': keep widget positions, only scale sizes + * - 'none': don't change widget positions or sizes + * Note: items will never be outside of the current column boundaries. + * Ignored for `column=1` as we always want to vertically stack. + * @returns the grid instance for chaining + * + * @example + * // Change to 6 columns with default scaling + * grid.column(6); + * + * // Change to 4 columns, only move positions + * grid.column(4, 'move'); + * + * // Single column layout (vertical stack) + * grid.column(1); + */ + column(column, layout = 'moveScale') { + if (!column || column < 1 || this.opts.column === column) + return this; + const oldColumn = this.getColumn(); + this.opts.column = column; + if (!this.engine) { + // called in constructor, noting else to do but remember that breakpoint layout + this.responseLayout = layout; + return this; + } + this.engine.column = column; + this.el.classList.remove('gs-' + oldColumn); + this._updateColumnVar(); + // update the items now + this.engine.columnChanged(oldColumn, column, layout); + if (this._isAutoCellHeight) + this.cellHeight(); + this.resizeToContentCheck(true); // wait for width resizing + // and trigger our event last... + this._ignoreLayoutsNodeChange = true; // skip layout update + this._triggerChangeEvent(); + delete this._ignoreLayoutsNodeChange; + return this; + } + /** + * Get the number of columns in the grid (default 12). + * + * @returns the current number of columns in the grid + * + * @example + * const columnCount = grid.getColumn(); // returns 12 by default + */ + getColumn() { return this.opts.column; } + /** + * Returns an array of grid HTML elements (no placeholder) - used to iterate through our children in DOM order. + * This method excludes placeholder elements and returns only actual grid items. + * + * @returns array of GridItemHTMLElement instances representing all grid items + * + * @example + * const items = grid.getGridItems(); + * items.forEach(item => { + * console.log('Item ID:', item.gridstackNode.id); + * }); + */ + getGridItems() { + return Array.from(this.el.children) + .filter((el) => el.matches('.' + this.opts.itemClass) && !el.matches('.' + this.opts.placeholderClass)); + } + /** + * Returns true if change callbacks should be ignored due to column change, sizeToContent, loading, etc. + * This is useful for callers who want to implement dirty flag functionality. + * + * @returns true if change callbacks are currently being ignored + * + * @example + * if (!grid.isIgnoreChangeCB()) { + * // Process the change event + * console.log('Grid layout changed'); + * } + */ + isIgnoreChangeCB() { return this._ignoreLayoutsNodeChange; } + /** + * Destroys a grid instance. DO NOT CALL any methods or access any vars after this as it will free up members. + * @param removeDOM if `false` grid and items HTML elements will not be removed from the DOM (Optional. Default `true`). + */ + destroy(removeDOM = true) { + if (!this.el) + return; // prevent multiple calls + this.offAll(); + this._updateResizeEvent(true); + this.setStatic(true, false); // permanently removes DD but don't set CSS class (we're going away) + this.setAnimation(false); + if (!removeDOM) { + this.removeAll(removeDOM); + this.el.removeAttribute('gs-current-row'); + } + else { + this.el.parentNode.removeChild(this.el); + } + if (this.parentGridNode) + delete this.parentGridNode.subGrid; + delete this.parentGridNode; + delete this.opts; + delete this._placeholder?.gridstackNode; + delete this._placeholder; + delete this.engine; + delete this.el.gridstack; // remove circular dependency that would prevent a freeing + delete this.el; + return this; + } + /** + * Enable/disable floating widgets (default: `false`). When enabled, widgets can float up to fill empty spaces. + * See [example](http://gridstackjs.com/demo/float.html) + * + * @param val true to enable floating, false to disable + * @returns the grid instance for chaining + * + * @example + * grid.float(true); // Enable floating + * grid.float(false); // Disable floating (default) + */ + float(val) { + if (this.opts.float !== val) { + this.opts.float = this.engine.float = val; + this._triggerChangeEvent(); + } + return this; + } + /** + * Get the current float mode setting. + * + * @returns true if floating is enabled, false otherwise + * + * @example + * const isFloating = grid.getFloat(); + * console.log('Floating enabled:', isFloating); + */ + getFloat() { + return this.engine.float; + } + /** + * Get the position of the cell under a pixel on screen. + * @param position the position of the pixel to resolve in + * absolute coordinates, as an object with top and left properties + * @param useDocRelative if true, value will be based on document position vs parent position (Optional. Default false). + * Useful when grid is within `position: relative` element + * + * Returns an object with properties `x` and `y` i.e. the column and row in the grid. + */ + getCellFromPixel(position, useDocRelative = false) { + const box = this.el.getBoundingClientRect(); + // console.log(`getBoundingClientRect left: ${box.left} top: ${box.top} w: ${box.w} h: ${box.h}`) + let containerPos; + if (useDocRelative) { + containerPos = { top: box.top + document.documentElement.scrollTop, left: box.left }; + // console.log(`getCellFromPixel scrollTop: ${document.documentElement.scrollTop}`) + } + else { + containerPos = { top: this.el.offsetTop, left: this.el.offsetLeft }; + // console.log(`getCellFromPixel offsetTop: ${containerPos.left} offsetLeft: ${containerPos.top}`) + } + const relativeLeft = position.left - containerPos.left; + const relativeTop = position.top - containerPos.top; + const columnWidth = (box.width / this.getColumn()); + const rowHeight = (box.height / parseInt(this.el.getAttribute('gs-current-row'))); + return { x: Math.floor(relativeLeft / columnWidth), y: Math.floor(relativeTop / rowHeight) }; + } + /** + * Returns the current number of rows, which will be at least `minRow` if set. + * The row count is based on the highest positioned widget in the grid. + * + * @returns the current number of rows in the grid + * + * @example + * const rowCount = grid.getRow(); + * console.log('Grid has', rowCount, 'rows'); + */ + getRow() { + return Math.max(this.engine.getRow(), this.opts.minRow || 0); + } + /** + * Checks if the specified rectangular area is empty (no widgets occupy any part of it). + * + * @param x the x coordinate (column) of the area to check + * @param y the y coordinate (row) of the area to check + * @param w the width in columns of the area to check + * @param h the height in rows of the area to check + * @returns true if the area is completely empty, false if any widget overlaps + * + * @example + * // Check if a 2x2 area at position (1,1) is empty + * if (grid.isAreaEmpty(1, 1, 2, 2)) { + * console.log('Area is available for placement'); + * } + */ + isAreaEmpty(x, y, w, h) { + return this.engine.isAreaEmpty(x, y, w, h); + } + /** + * If you add elements to your grid by hand (or have some framework creating DOM), you have to tell gridstack afterwards to make them widgets. + * If you want gridstack to add the elements for you, use `addWidget()` instead. + * Makes the given element a widget and returns it. + * + * @param els widget or single selector to convert. + * @param options widget definition to use instead of reading attributes or using default sizing values + * @returns the converted GridItemHTMLElement + * + * @example + * const grid = GridStack.init(); + * + * // Create HTML content manually, possibly looking like: + * //
+ * grid.el.innerHTML = '
'; + * + * // Convert existing elements to widgets + * grid.makeWidget('#item-1'); // Uses gs-* attributes from DOM + * grid.makeWidget('#item-2', {w: 2, h: 1, content: 'Hello World'}); + * + * // Or pass DOM element directly + * const element = document.getElementById('item-3'); + * grid.makeWidget(element, {x: 0, y: 1, w: 4, h: 2}); + */ + makeWidget(els, options) { + const el = GridStack.getElement(els); + if (!el || el.gridstackNode) + return el; + if (!el.parentElement) + this.el.appendChild(el); + this._prepareElement(el, true, options); + const node = el.gridstackNode; + this._updateContainerHeight(); + // see if there is a sub-grid to create + if (node.subGridOpts) { + this.makeSubGrid(el, node.subGridOpts, undefined, false); // node.subGrid will be used as option in method, no need to pass + } + // if we're adding an item into 1 column make sure + // we don't override the larger 12 column layout that was already saved. #1985 + let resetIgnoreLayoutsNodeChange; + if (this.opts.column === 1 && !this._ignoreLayoutsNodeChange) { + resetIgnoreLayoutsNodeChange = this._ignoreLayoutsNodeChange = true; + } + this._triggerAddEvent(); + this._triggerChangeEvent(); + if (resetIgnoreLayoutsNodeChange) + delete this._ignoreLayoutsNodeChange; + return el; + } + on(name, callback) { + // check for array of names being passed instead + if (name.indexOf(' ') !== -1) { + const names = name.split(' '); + names.forEach(name => this.on(name, callback)); + return this; + } + // native CustomEvent handlers - cash the generic handlers so we can easily remove + if (name === 'change' || name === 'added' || name === 'removed' || name === 'enable' || name === 'disable') { + const noData = (name === 'enable' || name === 'disable'); + if (noData) { + this._gsEventHandler[name] = (event) => callback(event); + } + else { + this._gsEventHandler[name] = (event) => { if (event.detail) + callback(event, event.detail); }; + } + this.el.addEventListener(name, this._gsEventHandler[name]); + } + else if (name === 'drag' || name === 'dragstart' || name === 'dragstop' || name === 'resizestart' || name === 'resize' + || name === 'resizestop' || name === 'dropped' || name === 'resizecontent') { + // drag&drop stop events NEED to be call them AFTER we update node attributes so handle them ourself. + // do same for start event to make it easier... + this._gsEventHandler[name] = callback; + } + else { + console.error('GridStack.on(' + name + ') event not supported'); + } + return this; + } + /** + * unsubscribe from the 'on' event GridStackEvent + * @param name of the event (see possible values) or list of names space separated + */ + off(name) { + // check for array of names being passed instead + if (name.indexOf(' ') !== -1) { + const names = name.split(' '); + names.forEach(name => this.off(name)); + return this; + } + if (name === 'change' || name === 'added' || name === 'removed' || name === 'enable' || name === 'disable') { + // remove native CustomEvent handlers + if (this._gsEventHandler[name]) { + this.el.removeEventListener(name, this._gsEventHandler[name]); + } + } + delete this._gsEventHandler[name]; + return this; + } + /** + * Remove all event handlers from the grid. This is useful for cleanup when destroying a grid. + * + * @returns the grid instance for chaining + * + * @example + * grid.offAll(); // Remove all event listeners + */ + offAll() { + Object.keys(this._gsEventHandler).forEach((key) => this.off(key)); + return this; + } + /** + * Removes widget from the grid. + * @param el widget or selector to modify + * @param removeDOM if `false` DOM element won't be removed from the tree (Default? true). + * @param triggerEvent if `false` (quiet mode) element will not be added to removed list and no 'removed' callbacks will be called (Default? true). + */ + removeWidget(els, removeDOM = true, triggerEvent = true) { + if (!els) { + console.error('Error: GridStack.removeWidget(undefined) called'); + return this; + } + GridStack.getElements(els).forEach(el => { + if (el.parentElement && el.parentElement !== this.el) + return; // not our child! + let node = el.gridstackNode; + // For Meteor support: https://github.com/gridstack/gridstack.js/pull/272 + if (!node) { + node = this.engine.nodes.find(n => el === n.el); + } + if (!node) + return; + if (removeDOM && GridStack.addRemoveCB) { + GridStack.addRemoveCB(this.el, node, false, false); + } + // remove our DOM data (circular link) and drag&drop permanently + delete el.gridstackNode; + this._removeDD(el); + this.engine.removeNode(node, removeDOM, triggerEvent); + if (removeDOM && el.parentElement) { + el.remove(); // in batch mode engine.removeNode doesn't call back to remove DOM + } + }); + if (triggerEvent) { + this._triggerRemoveEvent(); + this._triggerChangeEvent(); + } + return this; + } + /** + * Removes all widgets from the grid. + * @param removeDOM if `false` DOM elements won't be removed from the tree (Default? `true`). + * @param triggerEvent if `false` (quiet mode) element will not be added to removed list and no 'removed' callbacks will be called (Default? true). + */ + removeAll(removeDOM = true, triggerEvent = true) { + // always remove our DOM data (circular link) before list gets emptied and drag&drop permanently + this.engine.nodes.forEach(n => { + if (removeDOM && GridStack.addRemoveCB) { + GridStack.addRemoveCB(this.el, n, false, false); + } + delete n.el.gridstackNode; + if (!this.opts.staticGrid) + this._removeDD(n.el); + }); + this.engine.removeAll(removeDOM, triggerEvent); + if (triggerEvent) + this._triggerRemoveEvent(); + return this; + } + /** + * Toggle the grid animation state. Toggles the `grid-stack-animate` class. + * @param doAnimate if true the grid will animate. + * @param delay if true setting will be set on next event loop. + */ + setAnimation(doAnimate = this.opts.animate, delay) { + if (delay) { + // delay, but check to make sure grid (opt) is still around + setTimeout(() => { if (this.opts) + this.setAnimation(doAnimate); }); + } + else if (doAnimate) { + this.el.classList.add('grid-stack-animate'); + } + else { + this.el.classList.remove('grid-stack-animate'); + } + this.opts.animate = doAnimate; + return this; + } + /** @internal */ + hasAnimationCSS() { return this.el.classList.contains('grid-stack-animate'); } + /** + * Toggle the grid static state, which permanently removes/add Drag&Drop support, unlike disable()/enable() that just turns it off/on. + * Also toggle the grid-stack-static class. + * @param val if true the grid become static. + * @param updateClass true (default) if css class gets updated + * @param recurse true (default) if sub-grids also get updated + */ + setStatic(val, updateClass = true, recurse = true) { + if (!!this.opts.staticGrid === val) + return this; + val ? this.opts.staticGrid = true : delete this.opts.staticGrid; + this._setupRemoveDrop(); + this._setupAcceptWidget(); + this.engine.nodes.forEach(n => { + this.prepareDragDrop(n.el); // either delete or init Drag&drop + if (n.subGrid && recurse) + n.subGrid.setStatic(val, updateClass, recurse); + }); + if (updateClass) { + this._setStaticClass(); + } + return this; + } + /** + * Updates the passed in options on the grid (similar to update(widget) for for the grid options). + * @param options PARTIAL grid options to update - only items specified will be updated. + * NOTE: not all options updating are currently supported (lot of code, unlikely to change) + */ + updateOptions(o) { + const opts = this.opts; + if (o === opts) + return this; // nothing to do + if (o.acceptWidgets !== undefined) { + opts.acceptWidgets = o.acceptWidgets; + this._setupAcceptWidget(); + } + if (o.animate !== undefined) + this.setAnimation(o.animate); + if (o.cellHeight) + this.cellHeight(o.cellHeight); + if (o.class !== undefined && o.class !== opts.class) { + if (opts.class) + this.el.classList.remove(opts.class); + if (o.class) + this.el.classList.add(o.class); + } + // responsive column take over actual count (keep what we have now) + if (o.columnOpts) { + this.opts.columnOpts = o.columnOpts; + this.checkDynamicColumn(); + } + else if (o.columnOpts === null && this.opts.columnOpts) { + delete this.opts.columnOpts; + this._updateResizeEvent(); + } + else if (typeof (o.column) === 'number') + this.column(o.column); + if (o.margin !== undefined) + this.margin(o.margin); + if (o.staticGrid !== undefined) + this.setStatic(o.staticGrid); + if (o.disableDrag !== undefined && !o.staticGrid) + this.enableMove(!o.disableDrag); + if (o.disableResize !== undefined && !o.staticGrid) + this.enableResize(!o.disableResize); + if (o.float !== undefined) + this.float(o.float); + if (o.row !== undefined) { + opts.minRow = opts.maxRow = opts.row = o.row; + this._updateContainerHeight(); + } + else { + if (o.minRow !== undefined) { + opts.minRow = o.minRow; + this._updateContainerHeight(); + } + if (o.maxRow !== undefined) + opts.maxRow = o.maxRow; + } + if (o.children?.length) + this.load(o.children); + // TBD if we have a real need for these (more complex code) + // alwaysShowResizeHandle, draggable, handle, handleClass, itemClass, layout, placeholderClass, placeholderText, resizable, removable, row,... + return this; + } + /** + * Updates widget position/size and other info. This is used to change widget properties after creation. + * Can update position, size, content, and other widget properties. + * + * Note: If you need to call this on all nodes, use load() instead which will update what changed. + * Setting the same x,y for multiple items will be indeterministic and likely unwanted. + * + * @param els widget element(s) or selector to modify + * @param opt new widget options (x,y,w,h, etc.). Only those set will be updated. + * @returns the grid instance for chaining + * + * @example + * // Update widget size and position + * grid.update('.my-widget', { x: 2, y: 1, w: 3, h: 2 }); + * + * // Update widget content + * grid.update(widget, { content: '

New content

' }); + * + * // Update multiple properties + * grid.update('#my-widget', { + * w: 4, + * h: 3, + * noResize: true, + * locked: true + * }); + */ + update(els, opt) { + GridStack.getElements(els).forEach(el => { + const n = el?.gridstackNode; + if (!n) + return; + const w = { ...Utils.copyPos({}, n), ...Utils.cloneDeep(opt) }; // make a copy we can modify in case they re-use it or multiple items + this.engine.nodeBoundFix(w); + delete w.autoPosition; + // move/resize widget if anything changed + const keys = ['x', 'y', 'w', 'h']; + let m; + if (keys.some(k => w[k] !== undefined && w[k] !== n[k])) { + m = {}; + keys.forEach(k => { + m[k] = (w[k] !== undefined) ? w[k] : n[k]; + delete w[k]; + }); + } + // for a move as well IFF there is any min/max fields set + if (!m && (w.minW || w.minH || w.maxW || w.maxH)) { + m = {}; // will use node position but validate values + } + // check for content changing + if (w.content !== undefined) { + const itemContent = el.querySelector('.grid-stack-item-content'); + if (itemContent && itemContent.textContent !== w.content) { + n.content = w.content; + GridStack.renderCB(itemContent, w); + // restore any sub-grid back + if (n.subGrid?.el) { + itemContent.appendChild(n.subGrid.el); + n.subGrid._updateContainerHeight(); + } + } + delete w.content; + } + // any remaining fields are assigned, but check for dragging changes, resize constrain + let changed = false; + let ddChanged = false; + for (const key in w) { + if (key[0] !== '_' && n[key] !== w[key]) { + n[key] = w[key]; + changed = true; + ddChanged = ddChanged || (!this.opts.staticGrid && (key === 'noResize' || key === 'noMove' || key === 'locked')); + } + } + Utils.sanitizeMinMax(n); + // finally move the widget and update attr + if (m) { + const widthChanged = (m.w !== undefined && m.w !== n.w); + this.moveNode(n, m); + if (widthChanged && n.subGrid) { + // if we're animating the client size hasn't changed yet, so force a change (not exact size) + n.subGrid.onResize(this.hasAnimationCSS() ? n.w : undefined); + } + else { + this.resizeToContentCheck(widthChanged, n); + } + delete n._orig; // clear out original position now that we moved #2669 + } + if (m || changed) { + this._writeAttr(el, n); + } + if (ddChanged) { + this.prepareDragDrop(n.el); + } + if (GridStack.updateCB) + GridStack.updateCB(n); // call user callback so they know widget got updated + }); + return this; + } + moveNode(n, m) { + const wasUpdating = n._updating; + if (!wasUpdating) + this.engine.cleanNodes().beginUpdate(n); + this.engine.moveNode(n, m); + this._updateContainerHeight(); + if (!wasUpdating) { + this._triggerChangeEvent(); + this.engine.endUpdate(); + } + } + /** + * Updates widget height to match the content height to avoid vertical scrollbars or dead space. + * This automatically adjusts the widget height based on its content size. + * + * Note: This assumes only 1 child under resizeToContentParent='.grid-stack-item-content' + * (sized to gridItem minus padding) that represents the entire content size. + * + * @param el the grid item element to resize + * + * @example + * // Resize a widget to fit its content + * const widget = document.querySelector('.grid-stack-item'); + * grid.resizeToContent(widget); + * + * // This is commonly used with dynamic content: + * widget.querySelector('.content').innerHTML = 'New longer content...'; + * grid.resizeToContent(widget); + */ + resizeToContent(el) { + if (!el) + return; + el.classList.remove('size-to-content-max'); + if (!el.clientHeight) + return; // 0 when hidden, skip + const n = el.gridstackNode; + if (!n) + return; + const grid = n.grid; + if (!grid || el.parentElement !== grid.el) + return; // skip if we are not inside a grid + const cell = grid.getCellHeight(true); + if (!cell) + return; + let height = n.h ? n.h * cell : el.clientHeight; // getBoundingClientRect().height seem to flicker back and forth + let item; + if (n.resizeToContentParent) + item = el.querySelector(n.resizeToContentParent); + if (!item) + item = el.querySelector(GridStack.resizeToContentParent); + if (!item) + return; + const padding = el.clientHeight - item.clientHeight; // full - available height to our child (minus border, padding...) + const itemH = n.h ? n.h * cell - padding : item.clientHeight; // calculated to what cellHeight is or will become (rather than actual to prevent waiting for animation to finish) + let wantedH; + if (n.subGrid) { + // sub-grid - use their actual row count * their cell height, BUT append any content outside of the grid (eg: above text) + wantedH = n.subGrid.getRow() * n.subGrid.getCellHeight(true); + const subRec = n.subGrid.el.getBoundingClientRect(); + const parentRec = el.getBoundingClientRect(); + wantedH += subRec.top - parentRec.top; + } + else if (n.subGridOpts?.children?.length) { + // not sub-grid just yet (case above) wait until we do + return; + } + else { + // NOTE: clientHeight & getBoundingClientRect() is undefined for text and other leaf nodes. use
container! + const child = item.firstElementChild; + if (!child) { + console.error(`Error: GridStack.resizeToContent() widget id:${n.id} '${GridStack.resizeToContentParent}'.firstElementChild is null, make sure to have a div like container. Skipping sizing.`); + return; + } + wantedH = child.getBoundingClientRect().height || itemH; + } + if (itemH === wantedH) + return; + height += wantedH - itemH; + let h = Math.ceil(height / cell); + // check for min/max and special sizing + const softMax = Number.isInteger(n.sizeToContent) ? n.sizeToContent : 0; + if (softMax && h > softMax) { + h = softMax; + el.classList.add('size-to-content-max'); // get v-scroll back + } + if (n.minH && h < n.minH) + h = n.minH; + else if (n.maxH && h > n.maxH) + h = n.maxH; + if (h !== n.h) { + grid._ignoreLayoutsNodeChange = true; + grid.moveNode(n, { h }); + delete grid._ignoreLayoutsNodeChange; + } + } + /** call the user resize (so they can do extra work) else our build in version */ + resizeToContentCBCheck(el) { + if (GridStack.resizeToContentCB) + GridStack.resizeToContentCB(el); + else + this.resizeToContent(el); + } + /** + * Rotate widgets by swapping their width and height. This is typically called when the user presses 'r' during dragging. + * The rotation swaps the w/h dimensions and adjusts min/max constraints accordingly. + * + * @param els widget element(s) or selector to rotate + * @param relative optional pixel coordinate relative to upper/left corner to rotate around (keeps that cell under cursor) + * @returns the grid instance for chaining + * + * @example + * // Rotate a specific widget + * grid.rotate('.my-widget'); + * + * // Rotate with relative positioning during drag + * grid.rotate(widget, { left: 50, top: 30 }); + */ + rotate(els, relative) { + GridStack.getElements(els).forEach(el => { + const n = el.gridstackNode; + if (!Utils.canBeRotated(n)) + return; + const rot = { w: n.h, h: n.w, minH: n.minW, minW: n.minH, maxH: n.maxW, maxW: n.maxH }; + // if given an offset, adjust x/y by column/row bounds when user presses 'r' during dragging + if (relative) { + const pivotX = relative.left > 0 ? Math.floor(relative.left / this.cellWidth()) : 0; + const pivotY = relative.top > 0 ? Math.floor(relative.top / this.opts.cellHeight) : 0; + rot.x = n.x + pivotX - (n.h - (pivotY + 1)); + rot.y = (n.y + pivotY) - pivotX; + } + Object.keys(rot).forEach(k => { if (rot[k] === undefined) + delete rot[k]; }); + const _orig = n._orig; + this.update(el, rot); + n._orig = _orig; // restore as move() will delete it + }); + return this; + } + /** + * Updates the margins which will set all 4 sides at once - see `GridStackOptions.margin` for format options. + * Supports CSS string format of 1, 2, or 4 values or a single number. + * + * @param value margin value - can be: + * - Single number: `10` (applies to all sides) + * - Two values: `'10px 20px'` (top/bottom, left/right) + * - Four values: `'10px 20px 5px 15px'` (top, right, bottom, left) + * @returns the grid instance for chaining + * + * @example + * grid.margin(10); // 10px all sides + * grid.margin('10px 20px'); // 10px top/bottom, 20px left/right + * grid.margin('5px 10px 15px 20px'); // Different for each side + */ + margin(value) { + const isMultiValue = (typeof value === 'string' && value.split(' ').length > 1); + // check if we can skip... won't check if multi values (too much hassle) + if (!isMultiValue) { + const data = Utils.parseHeight(value); + if (this.opts.marginUnit === data.unit && this.opts.margin === data.h) + return; + } + // re-use existing margin handling + this.opts.margin = value; + this.opts.marginTop = this.opts.marginBottom = this.opts.marginLeft = this.opts.marginRight = undefined; + this._initMargin(); + return this; + } + /** + * Returns the current margin value as a number (undefined if the 4 sides don't match). + * This only returns a number if all sides have the same margin value. + * + * @returns the margin value in pixels, or undefined if sides have different values + * + * @example + * const margin = grid.getMargin(); + * if (margin !== undefined) { + * console.log('Uniform margin:', margin, 'px'); + * } else { + * console.log('Margins are different on different sides'); + * } + */ + getMargin() { return this.opts.margin; } + /** + * Returns true if the height of the grid will be less than the vertical + * constraint. Always returns true if grid doesn't have height constraint. + * @param node contains x,y,w,h,auto-position options + * + * @example + * if (grid.willItFit(newWidget)) { + * grid.addWidget(newWidget); + * } else { + * alert('Not enough free space to place the widget'); + * } + */ + willItFit(node) { + // support legacy call for now + if (arguments.length > 1) { + console.warn('gridstack.ts: `willItFit(x,y,w,h,autoPosition)` is deprecated. Use `willItFit({x, y,...})`. It will be removed soon'); + // eslint-disable-next-line prefer-rest-params + const a = arguments; + let i = 0, w = { x: a[i++], y: a[i++], w: a[i++], h: a[i++], autoPosition: a[i++] }; + return this.willItFit(w); + } + return this.engine.willItFit(node); + } + /** @internal */ + _triggerChangeEvent() { + if (this.engine.batchMode) + return this; + const elements = this.engine.getDirtyNodes(true); // verify they really changed + if (elements && elements.length) { + if (!this._ignoreLayoutsNodeChange) { + this.engine.layoutsNodesChange(elements); + } + this._triggerEvent('change', elements); + } + this.engine.saveInitial(); // we called, now reset initial values & dirty flags + return this; + } + /** @internal */ + _triggerAddEvent() { + if (this.engine.batchMode) + return this; + if (this.engine.addedNodes?.length) { + if (!this._ignoreLayoutsNodeChange) { + this.engine.layoutsNodesChange(this.engine.addedNodes); + } + // prevent added nodes from also triggering 'change' event (which is called next) + this.engine.addedNodes.forEach(n => { delete n._dirty; }); + const addedNodes = [...this.engine.addedNodes]; + this.engine.addedNodes = []; + this._triggerEvent('added', addedNodes); + } + return this; + } + /** @internal */ + _triggerRemoveEvent() { + if (this.engine.batchMode) + return this; + if (this.engine.removedNodes?.length) { + const removedNodes = [...this.engine.removedNodes]; + this.engine.removedNodes = []; + this._triggerEvent('removed', removedNodes); + } + return this; + } + /** @internal */ + _triggerEvent(type, data) { + const event = data ? new CustomEvent(type, { bubbles: false, detail: data }) : new Event(type); + // check if we're nested, and if so call the outermost grid to trigger the event + // eslint-disable-next-line @typescript-eslint/no-this-alias + let grid = this; + while (grid.parentGridNode) + grid = grid.parentGridNode.grid; + grid.el.dispatchEvent(event); + return this; + } + /** @internal */ + _updateContainerHeight() { + if (!this.engine || this.engine.batchMode) + return this; + const parent = this.parentGridNode; + let row = this.getRow() + this._extraDragRow; // this checks for minRow already + const cellHeight = this.opts.cellHeight; + const unit = this.opts.cellHeightUnit; + if (!cellHeight) + return this; + // check for css min height (non nested grid). TODO: support mismatch, say: min % while unit is px. + // If `minRow` was applied, don't override it with this check, and avoid performance issues + // (reflows) using `getComputedStyle` + if (!parent && !this.opts.minRow) { + const cssMinHeight = Utils.parseHeight(getComputedStyle(this.el)['minHeight']); + if (cssMinHeight.h > 0 && cssMinHeight.unit === unit) { + const minRow = Math.floor(cssMinHeight.h / cellHeight); + if (row < minRow) { + row = minRow; + } + } + } + this.el.setAttribute('gs-current-row', String(row)); + this.el.style.removeProperty('min-height'); + this.el.style.removeProperty('height'); + if (row) { + // nested grids have 'insert:0' to fill the space of parent by default, but we may be taller so use min-height for possible scrollbars + this.el.style[parent ? 'minHeight' : 'height'] = row * cellHeight + unit; + } + // if we're a nested grid inside an sizeToContent item, tell it to resize itself too + if (parent && Utils.shouldSizeToContent(parent)) { + parent.grid.resizeToContentCBCheck(parent.el); + } + return this; + } + /** @internal */ + _prepareElement(el, triggerAddEvent = false, node) { + node = node || this._readAttr(el); + el.gridstackNode = node; + node.el = el; + node.grid = this; + node = this.engine.addNode(node, triggerAddEvent); + // write the dom sizes and class + this._writeAttr(el, node); + el.classList.add(gridDefaults.itemClass, this.opts.itemClass); + const sizeToContent = Utils.shouldSizeToContent(node); + sizeToContent ? el.classList.add('size-to-content') : el.classList.remove('size-to-content'); + if (sizeToContent) + this.resizeToContentCheck(false, node); + if (!Utils.lazyLoad(node)) + this.prepareDragDrop(node.el); + return this; + } + /** @internal write position CSS vars and x,y,w,h attributes (not used for CSS but by users) back to element */ + _writePosAttr(el, n) { + // Avoid overwriting the inline style of the element during drag/resize, but always update the placeholder + if ((!n._moving && !n._resizing) || this._placeholder === el) { + // width/height:1 x/y:0 is set by default in the main CSS, so no need to set inlined vars + el.style.top = n.y ? (n.y === 1 ? `var(--gs-cell-height)` : `calc(${n.y} * var(--gs-cell-height))`) : null; + el.style.left = n.x ? (n.x === 1 ? `var(--gs-column-width)` : `calc(${n.x} * var(--gs-column-width))`) : null; + el.style.width = n.w > 1 ? `calc(${n.w} * var(--gs-column-width))` : null; + el.style.height = n.h > 1 ? `calc(${n.h} * var(--gs-cell-height))` : null; + } + // NOTE: those are technically not needed anymore (v12+) as we have CSS vars for everything, but some users depends on them to render item size using CSS + n.x > 0 ? el.setAttribute('gs-x', String(n.x)) : el.removeAttribute('gs-x'); + n.y > 0 ? el.setAttribute('gs-y', String(n.y)) : el.removeAttribute('gs-y'); + n.w > 1 ? el.setAttribute('gs-w', String(n.w)) : el.removeAttribute('gs-w'); + n.h > 1 ? el.setAttribute('gs-h', String(n.h)) : el.removeAttribute('gs-h'); + return this; + } + /** @internal call to write any default attributes back to element */ + _writeAttr(el, node) { + if (!node) + return this; + this._writePosAttr(el, node); + const attrs /*: GridStackWidget but strings */ = { + // autoPosition: 'gs-auto-position', // no need to write out as already in node and doesn't affect CSS + noResize: 'gs-no-resize', + noMove: 'gs-no-move', + locked: 'gs-locked', + id: 'gs-id', + sizeToContent: 'gs-size-to-content', + }; + for (const key in attrs) { + if (node[key]) { // 0 is valid for x,y only but done above already and not in list anyway + el.setAttribute(attrs[key], String(node[key])); + } + else { + el.removeAttribute(attrs[key]); + } + } + return this; + } + /** @internal call to read any default attributes from element */ + _readAttr(el, clearDefaultAttr = true) { + const n = {}; + n.x = Utils.toNumber(el.getAttribute('gs-x')); + n.y = Utils.toNumber(el.getAttribute('gs-y')); + n.w = Utils.toNumber(el.getAttribute('gs-w')); + n.h = Utils.toNumber(el.getAttribute('gs-h')); + n.autoPosition = Utils.toBool(el.getAttribute('gs-auto-position')); + n.noResize = Utils.toBool(el.getAttribute('gs-no-resize')); + n.noMove = Utils.toBool(el.getAttribute('gs-no-move')); + n.locked = Utils.toBool(el.getAttribute('gs-locked')); + const attr = el.getAttribute('gs-size-to-content'); + if (attr) { + if (attr === 'true' || attr === 'false') + n.sizeToContent = Utils.toBool(attr); + else + n.sizeToContent = parseInt(attr, 10); + } + n.id = el.getAttribute('gs-id'); + // read but never written out + n.maxW = Utils.toNumber(el.getAttribute('gs-max-w')); + n.minW = Utils.toNumber(el.getAttribute('gs-min-w')); + n.maxH = Utils.toNumber(el.getAttribute('gs-max-h')); + n.minH = Utils.toNumber(el.getAttribute('gs-min-h')); + // v8.x optimization to reduce un-needed attr that don't render or are default CSS + if (clearDefaultAttr) { + if (n.w === 1) + el.removeAttribute('gs-w'); + if (n.h === 1) + el.removeAttribute('gs-h'); + if (n.maxW) + el.removeAttribute('gs-max-w'); + if (n.minW) + el.removeAttribute('gs-min-w'); + if (n.maxH) + el.removeAttribute('gs-max-h'); + if (n.minH) + el.removeAttribute('gs-min-h'); + } + // remove any key not found (null or false which is default, unless sizeToContent=false override) + for (const key in n) { + if (!n.hasOwnProperty(key)) + return; + if (!n[key] && n[key] !== 0 && key !== 'sizeToContent') { // 0 can be valid value (x,y only really) + delete n[key]; + } + } + return n; + } + /** @internal */ + _setStaticClass() { + const classes = ['grid-stack-static']; + if (this.opts.staticGrid) { + this.el.classList.add(...classes); + this.el.setAttribute('gs-static', 'true'); + } + else { + this.el.classList.remove(...classes); + this.el.removeAttribute('gs-static'); + } + return this; + } + /** + * called when we are being resized - check if the one Column Mode needs to be turned on/off + * and remember the prev columns we used, or get our count from parent, as well as check for cellHeight==='auto' (square) + * or `sizeToContent` gridItem options. + */ + onResize(clientWidth = this.el?.clientWidth) { + if (!clientWidth) + return; // return if we're gone or no size yet (will get called again) + if (this.prevWidth === clientWidth) + return; // no-op + this.prevWidth = clientWidth; + // console.log('onResize ', clientWidth); + this.batchUpdate(); + // see if we're nested and take our column count from our parent.... + let columnChanged = false; + if (this._autoColumn && this.parentGridNode) { + if (this.opts.column !== this.parentGridNode.w) { + this.column(this.parentGridNode.w, this.opts.layout || 'list'); + columnChanged = true; + } + } + else { + // else check for dynamic column + columnChanged = this.checkDynamicColumn(); + } + // make the cells content square again + if (this._isAutoCellHeight) + this.cellHeight(); + // update any nested grids, or items size + this.engine.nodes.forEach(n => { + if (n.subGrid) + n.subGrid.onResize(); + }); + if (!this._skipInitialResize) + this.resizeToContentCheck(columnChanged); // wait for anim of column changed (DOM reflow before we can size correctly) + delete this._skipInitialResize; + this.batchUpdate(false); + return this; + } + /** resizes content for given node (or all) if shouldSizeToContent() is true */ + resizeToContentCheck(delay = false, n = undefined) { + if (!this.engine) + return; // we've been deleted in between! + // update any gridItem height with sizeToContent, but wait for DOM $animation_speed to settle if we changed column count + // TODO: is there a way to know what the final (post animation) size of the content will be so we can animate the column width and height together rather than sequentially ? + if (delay && this.hasAnimationCSS()) + return setTimeout(() => this.resizeToContentCheck(false, n), this.animationDelay); + if (n) { + if (Utils.shouldSizeToContent(n)) + this.resizeToContentCBCheck(n.el); + } + else if (this.engine.nodes.some(n => Utils.shouldSizeToContent(n))) { + const nodes = [...this.engine.nodes]; // in case order changes while resizing one + this.batchUpdate(); + nodes.forEach(n => { + if (Utils.shouldSizeToContent(n)) + this.resizeToContentCBCheck(n.el); + }); + this._ignoreLayoutsNodeChange = true; // loop through each node will set/reset around each move, so set it here again + this.batchUpdate(false); + this._ignoreLayoutsNodeChange = false; + } + // call this regardless of shouldSizeToContent because widget might need to stretch to take available space after a resize + if (this._gsEventHandler['resizecontent']) + this._gsEventHandler['resizecontent'](null, n ? [n] : this.engine.nodes); + } + /** add or remove the grid element size event handler */ + _updateResizeEvent(forceRemove = false) { + // only add event if we're not nested (parent will call us) and we're auto sizing cells or supporting dynamic column (i.e. doing work) + // or supporting new sizeToContent option. + const trackSize = !this.parentGridNode && (this._isAutoCellHeight || this.opts.sizeToContent || this.opts.columnOpts + || this.engine.nodes.find(n => n.sizeToContent)); + if (!forceRemove && trackSize && !this.resizeObserver) { + this._sizeThrottle = Utils.throttle(() => this.onResize(), this.opts.cellHeightThrottle); + this.resizeObserver = new ResizeObserver(() => this._sizeThrottle()); + this.resizeObserver.observe(this.el); + this._skipInitialResize = true; // makeWidget will originally have called on startup + } + else if ((forceRemove || !trackSize) && this.resizeObserver) { + this.resizeObserver.disconnect(); + delete this.resizeObserver; + delete this._sizeThrottle; + } + return this; + } + /** @internal convert a potential selector into actual element */ + static getElement(els = '.grid-stack-item') { return Utils.getElement(els); } + /** @internal */ + static getElements(els = '.grid-stack-item') { return Utils.getElements(els); } + /** @internal */ + static getGridElement(els) { return GridStack.getElement(els); } + /** @internal */ + static getGridElements(els) { return Utils.getElements(els); } + /** @internal initialize margin top/bottom/left/right and units */ + _initMargin() { + let data; + let margin = 0; + // support passing multiple values like CSS (ex: '5px 10px 0 20px') + let margins = []; + if (typeof this.opts.margin === 'string') { + margins = this.opts.margin.split(' '); + } + if (margins.length === 2) { // top/bot, left/right like CSS + this.opts.marginTop = this.opts.marginBottom = margins[0]; + this.opts.marginLeft = this.opts.marginRight = margins[1]; + } + else if (margins.length === 4) { // Clockwise like CSS + this.opts.marginTop = margins[0]; + this.opts.marginRight = margins[1]; + this.opts.marginBottom = margins[2]; + this.opts.marginLeft = margins[3]; + } + else { + data = Utils.parseHeight(this.opts.margin); + this.opts.marginUnit = data.unit; + margin = this.opts.margin = data.h; + } + // see if top/bottom/left/right need to be set as well + const keys = ['marginTop', 'marginRight', 'marginBottom', 'marginLeft']; + keys.forEach(k => { + if (this.opts[k] === undefined) { + this.opts[k] = margin; + } + else { + data = Utils.parseHeight(this.opts[k]); + this.opts[k] = data.h; + delete this.opts.margin; + } + }); + this.opts.marginUnit = data.unit; // in case side were spelled out, use those units instead... + if (this.opts.marginTop === this.opts.marginBottom && this.opts.marginLeft === this.opts.marginRight && this.opts.marginTop === this.opts.marginRight) { + this.opts.margin = this.opts.marginTop; // makes it easier to check for no-ops in setMargin() + } + // finally Update the CSS margin variables (inside the cell height) */ + const style = this.el.style; + style.setProperty('--gs-item-margin-top', `${this.opts.marginTop}${this.opts.marginUnit}`); + style.setProperty('--gs-item-margin-bottom', `${this.opts.marginBottom}${this.opts.marginUnit}`); + style.setProperty('--gs-item-margin-right', `${this.opts.marginRight}${this.opts.marginUnit}`); + style.setProperty('--gs-item-margin-left', `${this.opts.marginLeft}${this.opts.marginUnit}`); + return this; + } + /* =========================================================================================== + * drag&drop methods that used to be stubbed out and implemented in dd-gridstack.ts + * but caused loading issues in prod - see https://github.com/gridstack/gridstack.js/issues/2039 + * =========================================================================================== + */ + /** + * Get the global drag & drop implementation instance. + * This provides access to the underlying drag & drop functionality. + * + * @returns the DDGridStack instance used for drag & drop operations + * + * @example + * const dd = GridStack.getDD(); + * // Access drag & drop functionality + */ + static getDD() { + return dd; + } + /** + * call to setup dragging in from the outside (say toolbar), by specifying the class selection and options. + * Called during GridStack.init() as options, but can also be called directly (last param are used) in case the toolbar + * is dynamically create and needs to be set later. + * @param dragIn string selector (ex: '.sidebar-item') or list of dom elements + * @param dragInOptions options - see DDDragOpt. (default: {handle: '.grid-stack-item-content', appendTo: 'body'} + * @param widgets GridStackWidget def to assign to each element which defines what to create on drop + * @param root optional root which defaults to document (for shadow dom pass the parent HTMLDocument) + */ + static setupDragIn(dragIn, dragInOptions, widgets, root = document) { + if (dragInOptions?.pause !== undefined) { + DDManager.pauseDrag = dragInOptions.pause; + } + dragInOptions = { appendTo: 'body', helper: 'clone', ...(dragInOptions || {}) }; // default to handle:undefined = drag by the whole item + const els = (typeof dragIn === 'string') ? Utils.getElements(dragIn, root) : dragIn; + els.forEach((el, i) => { + if (!dd.isDraggable(el)) + dd.dragIn(el, dragInOptions); + if (widgets?.[i]) + el.gridstackNode = widgets[i]; + }); + } + /** + * Enables/Disables dragging by the user for specific grid elements. + * For all items and future items, use enableMove() instead. No-op for static grids. + * + * Note: If you want to prevent an item from moving due to being pushed around by another + * during collision, use the 'locked' property instead. + * + * @param els widget element(s) or selector to modify + * @param val if true widget will be draggable, assuming the parent grid isn't noMove or static + * @returns the grid instance for chaining + * + * @example + * // Make specific widgets draggable + * grid.movable('.my-widget', true); + * + * // Disable dragging for specific widgets + * grid.movable('#fixed-widget', false); + */ + movable(els, val) { + if (this.opts.staticGrid) + return this; // can't move a static grid! + GridStack.getElements(els).forEach(el => { + const n = el.gridstackNode; + if (!n) + return; + val ? delete n.noMove : n.noMove = true; + this.prepareDragDrop(n.el); // init DD if need be, and adjust + }); + return this; + } + /** + * Enables/Disables user resizing for specific grid elements. + * For all items and future items, use enableResize() instead. No-op for static grids. + * + * @param els widget element(s) or selector to modify + * @param val if true widget will be resizable, assuming the parent grid isn't noResize or static + * @returns the grid instance for chaining + * + * @example + * // Make specific widgets resizable + * grid.resizable('.my-widget', true); + * + * // Disable resizing for specific widgets + * grid.resizable('#fixed-size-widget', false); + */ + resizable(els, val) { + if (this.opts.staticGrid) + return this; // can't resize a static grid! + GridStack.getElements(els).forEach(el => { + const n = el.gridstackNode; + if (!n) + return; + val ? delete n.noResize : n.noResize = true; + this.prepareDragDrop(n.el); // init DD if need be, and adjust + }); + return this; + } + /** + * Temporarily disables widgets moving/resizing. + * If you want a more permanent way (which freezes up resources) use `setStatic(true)` instead. + * + * Note: This is a no-op for static grids. + * + * This is a shortcut for: + * ```typescript + * grid.enableMove(false); + * grid.enableResize(false); + * ``` + * + * @param recurse if true (default), sub-grids also get updated + * @returns the grid instance for chaining + * + * @example + * // Disable all interactions + * grid.disable(); + * + * // Disable only this grid, not sub-grids + * grid.disable(false); + */ + disable(recurse = true) { + if (this.opts.staticGrid) + return; + this.enableMove(false, recurse); + this.enableResize(false, recurse); + this._triggerEvent('disable'); + return this; + } + /** + * Re-enables widgets moving/resizing - see disable(). + * Note: This is a no-op for static grids. + * + * This is a shortcut for: + * ```typescript + * grid.enableMove(true); + * grid.enableResize(true); + * ``` + * + * @param recurse if true (default), sub-grids also get updated + * @returns the grid instance for chaining + * + * @example + * // Re-enable all interactions + * grid.enable(); + * + * // Enable only this grid, not sub-grids + * grid.enable(false); + */ + enable(recurse = true) { + if (this.opts.staticGrid) + return; + this.enableMove(true, recurse); + this.enableResize(true, recurse); + this._triggerEvent('enable'); + return this; + } + /** + * Enables/disables widget moving for all widgets. No-op for static grids. + * Note: locally defined items (with noMove property) still override this setting. + * + * @param doEnable if true widgets will be movable, if false moving is disabled + * @param recurse if true (default), sub-grids also get updated + * @returns the grid instance for chaining + * + * @example + * // Enable moving for all widgets + * grid.enableMove(true); + * + * // Disable moving for all widgets + * grid.enableMove(false); + * + * // Enable only this grid, not sub-grids + * grid.enableMove(true, false); + */ + enableMove(doEnable, recurse = true) { + if (this.opts.staticGrid) + return this; // can't move a static grid! + doEnable ? delete this.opts.disableDrag : this.opts.disableDrag = true; // FIRST before we update children as grid overrides #1658 + this.engine.nodes.forEach(n => { + this.prepareDragDrop(n.el); + if (n.subGrid && recurse) + n.subGrid.enableMove(doEnable, recurse); + }); + return this; + } + /** + * Enables/disables widget resizing for all widgets. No-op for static grids. + * Note: locally defined items (with noResize property) still override this setting. + * + * @param doEnable if true widgets will be resizable, if false resizing is disabled + * @param recurse if true (default), sub-grids also get updated + * @returns the grid instance for chaining + * + * @example + * // Enable resizing for all widgets + * grid.enableResize(true); + * + * // Disable resizing for all widgets + * grid.enableResize(false); + * + * // Enable only this grid, not sub-grids + * grid.enableResize(true, false); + */ + enableResize(doEnable, recurse = true) { + if (this.opts.staticGrid) + return this; // can't size a static grid! + doEnable ? delete this.opts.disableResize : this.opts.disableResize = true; // FIRST before we update children as grid overrides #1658 + this.engine.nodes.forEach(n => { + this.prepareDragDrop(n.el); + if (n.subGrid && recurse) + n.subGrid.enableResize(doEnable, recurse); + }); + return this; + } + /** @internal call when drag (and drop) needs to be cancelled (Esc key) */ + cancelDrag() { + const n = this._placeholder?.gridstackNode; + if (!n) + return; + if (n._isExternal) { + // remove any newly inserted nodes (from outside) + n._isAboutToRemove = true; + this.engine.removeNode(n); + } + else if (n._isAboutToRemove) { + // restore any temp removed (dragged over trash) + GridStack._itemRemoving(n.el, false); + } + this.engine.restoreInitial(); + } + /** @internal removes any drag&drop present (called during destroy) */ + _removeDD(el) { + dd.draggable(el, 'destroy').resizable(el, 'destroy'); + if (el.gridstackNode) { + delete el.gridstackNode._initDD; // reset our DD init flag + } + delete el.ddElement; + return this; + } + /** @internal called to add drag over to support widgets being added externally */ + _setupAcceptWidget() { + // check if we need to disable things + if (this.opts.staticGrid || (!this.opts.acceptWidgets && !this.opts.removable)) { + dd.droppable(this.el, 'destroy'); + return this; + } + // vars shared across all methods + let cellHeight, cellWidth; + const onDrag = (event, el, helper) => { + helper = helper || el; + const node = helper.gridstackNode; + if (!node) + return; + // if the element is being dragged from outside, scale it down to match the grid's scale + // and slightly adjust its position relative to the mouse + if (!node.grid?.el) { + // this scales the helper down + helper.style.transform = `scale(${1 / this.dragTransform.xScale},${1 / this.dragTransform.yScale})`; + // this makes it so that the helper is well positioned relative to the mouse after scaling + const helperRect = helper.getBoundingClientRect(); + helper.style.left = helperRect.x + (this.dragTransform.xScale - 1) * (event.clientX - helperRect.x) / this.dragTransform.xScale + 'px'; + helper.style.top = helperRect.y + (this.dragTransform.yScale - 1) * (event.clientY - helperRect.y) / this.dragTransform.yScale + 'px'; + helper.style.transformOrigin = `0px 0px`; + } + let { top, left } = helper.getBoundingClientRect(); + const rect = this.el.getBoundingClientRect(); + left -= rect.left; + top -= rect.top; + const ui = { + position: { + top: top * this.dragTransform.xScale, + left: left * this.dragTransform.yScale + } + }; + if (node._temporaryRemoved) { + node.x = Math.max(0, Math.round(left / cellWidth)); + node.y = Math.max(0, Math.round(top / cellHeight)); + delete node.autoPosition; + this.engine.nodeBoundFix(node); + // don't accept *initial* location if doesn't fit #1419 (locked drop region, or can't grow), but maybe try if it will go somewhere + if (!this.engine.willItFit(node)) { + node.autoPosition = true; // ignore x,y and try for any slot... + if (!this.engine.willItFit(node)) { + dd.off(el, 'drag'); // stop calling us + return; // full grid or can't grow + } + if (node._willFitPos) { + // use the auto position instead #1687 + Utils.copyPos(node, node._willFitPos); + delete node._willFitPos; + } + } + // re-use the existing node dragging method + this._onStartMoving(helper, event, ui, node, cellWidth, cellHeight); + } + else { + // re-use the existing node dragging that does so much of the collision detection + this._dragOrResize(helper, event, ui, node, cellWidth, cellHeight); + } + }; + dd.droppable(this.el, { + accept: (el) => { + const node = el.gridstackNode || this._readAttr(el, false); + // set accept drop to true on ourself (which we ignore) so we don't get "can't drop" icon in HTML5 mode while moving + if (node?.grid === this) + return true; + if (!this.opts.acceptWidgets) + return false; + // check for accept method or class matching + let canAccept = true; + if (typeof this.opts.acceptWidgets === 'function') { + canAccept = this.opts.acceptWidgets(el); + } + else { + const selector = (this.opts.acceptWidgets === true ? '.grid-stack-item' : this.opts.acceptWidgets); + canAccept = el.matches(selector); + } + // finally check to make sure we actually have space left #1571 #2633 + if (canAccept && node && this.opts.maxRow) { + const n = { w: node.w, h: node.h, minW: node.minW, minH: node.minH }; // only width/height matters and autoPosition + canAccept = this.engine.willItFit(n); + } + return canAccept; + } + }) + /** + * entering our grid area + */ + .on(this.el, 'dropover', (event, el, helper) => { + // console.log(`over ${this.el.gridstack.opts.id} ${count++}`); // TEST + let node = helper?.gridstackNode || el.gridstackNode; + // ignore drop enter on ourself (unless we temporarily removed) which happens on a simple drag of our item + if (node?.grid === this && !node._temporaryRemoved) { + // delete node._added; // reset this to track placeholder again in case we were over other grid #1484 (dropout doesn't always clear) + return false; // prevent parent from receiving msg (which may be a grid as well) + } + // If sidebar item, restore the sidebar node size to ensure consistent behavior when dragging between grids + if (node?._sidebarOrig) { + node.w = node._sidebarOrig.w; + node.h = node._sidebarOrig.h; + } + // fix #1578 when dragging fast, we may not get a leave on the previous grid so force one now + if (node?.grid && node.grid !== this && !node._temporaryRemoved) { + // console.log('dropover without leave'); // TEST + const otherGrid = node.grid; + otherGrid._leave(el, helper); + } + helper = helper || el; + // cache cell dimensions (which don't change), position can animate if we removed an item in otherGrid that affects us... + cellWidth = this.cellWidth(); + cellHeight = this.getCellHeight(true); + // sidebar items: load any element attributes if we don't have a node on first enter from the sidebar + if (!node) { + const attr = helper.getAttribute('data-gs-widget') || helper.getAttribute('gridstacknode'); // TBD: temp support for old V11.0.0 attribute + if (attr) { + try { + node = JSON.parse(attr); + } + catch (error) { + console.error("Gridstack dropover: Bad JSON format: ", attr); + } + helper.removeAttribute('data-gs-widget'); + helper.removeAttribute('gridstacknode'); + } + if (!node) + node = this._readAttr(helper); // used to pass false for #2354, but now we clone top level node + // On first grid enter from sidebar, set the initial sidebar item size properties for the node + node._sidebarOrig = { w: node.w, h: node.h }; + } + if (!node.grid) { // sidebar item + if (!node.el) + node = { ...node }; // clone first time we're coming from sidebar (since 'clone' doesn't copy vars) + node._isExternal = true; + helper.gridstackNode = node; + } + // calculate the grid size based on element outer size + const w = node.w || Math.round(helper.offsetWidth / cellWidth) || 1; + const h = node.h || Math.round(helper.offsetHeight / cellHeight) || 1; + // if the item came from another grid, make a copy and save the original info in case we go back there + if (node.grid && node.grid !== this) { + // copy the node original values (min/max/id/etc...) but override width/height/other flags which are this grid specific + // console.log('dropover cloning node'); // TEST + if (!el._gridstackNodeOrig) + el._gridstackNodeOrig = node; // shouldn't have multiple nested! + el.gridstackNode = node = { ...node, w, h, grid: this }; + delete node.x; + delete node.y; + this.engine.cleanupNode(node) + .nodeBoundFix(node); + // restore some internal fields we need after clearing them all + node._initDD = + node._isExternal = // DOM needs to be re-parented on a drop + node._temporaryRemoved = true; // so it can be inserted onDrag below + } + else { + node.w = w; + node.h = h; + node._temporaryRemoved = true; // so we can insert it + } + // clear any marked for complete removal (Note: don't check _isAboutToRemove as that is cleared above - just do it) + GridStack._itemRemoving(node.el, false); + dd.on(el, 'drag', onDrag); + // make sure this is called at least once when going fast #1578 + onDrag(event, el, helper); + return false; // prevent parent from receiving msg (which may be a grid as well) + }) + /** + * Leaving our grid area... + */ + .on(this.el, 'dropout', (event, el, helper) => { + // console.log(`out ${this.el.gridstack.opts.id} ${count++}`); // TEST + const node = helper?.gridstackNode || el.gridstackNode; + if (!node) + return false; + // fix #1578 when dragging fast, we might get leave after other grid gets enter (which calls us to clean) + // so skip this one if we're not the active grid really.. + if (!node.grid || node.grid === this) { + this._leave(el, helper); + // if we were created as temporary nested grid, go back to before state + if (this._isTemp) { + this.removeAsSubGrid(node); + } + } + return false; // prevent parent from receiving msg (which may be grid as well) + }) + /** + * end - releasing the mouse + */ + .on(this.el, 'drop', (event, el, helper) => { + const node = helper?.gridstackNode || el.gridstackNode; + // ignore drop on ourself from ourself that didn't come from the outside - dragend will handle the simple move instead + if (node?.grid === this && !node._isExternal) + return false; + const wasAdded = !!this.placeholder.parentElement; // skip items not actually added to us because of constrains, but do cleanup #1419 + const wasSidebar = el !== helper; + this.placeholder.remove(); + delete this.placeholder.gridstackNode; + // disable animation when replacing a placeholder (already positioned) with actual content + if (wasAdded && this.opts.animate) { + this.setAnimation(false); + this.setAnimation(true, true); // delay adding back + } + // notify previous grid of removal + // console.log('drop delete _gridstackNodeOrig') // TEST + const origNode = el._gridstackNodeOrig; + delete el._gridstackNodeOrig; + if (wasAdded && origNode?.grid && origNode.grid !== this) { + const oGrid = origNode.grid; + oGrid.engine.removeNodeFromLayoutCache(origNode); + oGrid.engine.removedNodes.push(origNode); + oGrid._triggerRemoveEvent()._triggerChangeEvent(); + // if it's an empty sub-grid that got auto-created, nuke it + if (oGrid.parentGridNode && !oGrid.engine.nodes.length && oGrid.opts.subGridDynamic) { + oGrid.removeAsSubGrid(); + } + } + if (!node) + return false; + // use existing placeholder node as it's already in our list with drop location + if (wasAdded) { + this.engine.cleanupNode(node); // removes all internal _xyz values + node.grid = this; + } + delete node.grid?._isTemp; + dd.off(el, 'drag'); + // if we made a copy insert that instead of the original (sidebar item) + if (helper !== el) { + helper.remove(); + el = helper; + } + else { + el.remove(); // reduce flicker as we change depth here, and size further down + } + this._removeDD(el); + if (!wasAdded) + return false; + const subGrid = node.subGrid?.el?.gridstack; // set when actual sub-grid present + Utils.copyPos(node, this._readAttr(this.placeholder)); // placeholder values as moving VERY fast can throw things off #1578 + Utils.removePositioningStyles(el); + // give the user a chance to alter the widget that will get inserted if new sidebar item + if (wasSidebar && (node.content || node.subGridOpts || GridStack.addRemoveCB)) { + delete node.el; + el = this.addWidget(node); + } + else { + this._prepareElement(el, true, node); + this.el.appendChild(el); + // resizeToContent is skipped in _prepareElement() until node is visible (clientHeight=0) so call it now + this.resizeToContentCheck(false, node); + if (subGrid) { + subGrid.parentGridNode = node; + } + this._updateContainerHeight(); + } + this.engine.addedNodes.push(node); + this._triggerAddEvent(); + this._triggerChangeEvent(); + this.engine.endUpdate(); + if (this._gsEventHandler['dropped']) { + this._gsEventHandler['dropped']({ ...event, type: 'dropped' }, origNode && origNode.grid ? origNode : undefined, node); + } + return false; // prevent parent from receiving msg (which may be grid as well) + }); + return this; + } + /** @internal mark item for removal */ + static _itemRemoving(el, remove) { + if (!el) + return; + const node = el ? el.gridstackNode : undefined; + if (!node?.grid || el.classList.contains(node.grid.opts.removableOptions.decline)) + return; + remove ? node._isAboutToRemove = true : delete node._isAboutToRemove; + remove ? el.classList.add('grid-stack-item-removing') : el.classList.remove('grid-stack-item-removing'); + } + /** @internal called to setup a trash drop zone if the user specifies it */ + _setupRemoveDrop() { + if (typeof this.opts.removable !== 'string') + return this; + const trashEl = document.querySelector(this.opts.removable); + if (!trashEl) + return this; + // only register ONE static drop-over/dropout callback for the 'trash', and it will + // update the passed in item and parent grid because the '.trash' is a shared resource anyway, + // and Native DD only has 1 event CB (having a list and technically a per grid removableOptions complicates things greatly) + if (!this.opts.staticGrid && !dd.isDroppable(trashEl)) { + dd.droppable(trashEl, this.opts.removableOptions) + .on(trashEl, 'dropover', (event, el) => GridStack._itemRemoving(el, true)) + .on(trashEl, 'dropout', (event, el) => GridStack._itemRemoving(el, false)); + } + return this; + } + /** + * prepares the element for drag&drop - this is normally called by makeWidget() unless are are delay loading + * @param el GridItemHTMLElement of the widget + * @param [force=false] + * */ + prepareDragDrop(el, force = false) { + const node = el?.gridstackNode; + if (!node) + return; + const noMove = node.noMove || this.opts.disableDrag; + const noResize = node.noResize || this.opts.disableResize; + // check for disabled grid first + const disable = this.opts.staticGrid || (noMove && noResize); + if (force || disable) { + if (node._initDD) { + this._removeDD(el); // nukes everything instead of just disable, will add some styles back next + delete node._initDD; + } + if (disable) + el.classList.add('ui-draggable-disabled', 'ui-resizable-disabled'); // add styles one might depend on #1435 + if (!force) + return this; + } + if (!node._initDD) { + // variables used/cashed between the 3 start/move/end methods, in addition to node passed above + let cellWidth; + let cellHeight; + /** called when item starts moving/resizing */ + const onStartMoving = (event, ui) => { + // trigger any 'dragstart' / 'resizestart' manually + this.triggerEvent(event, event.target); + cellWidth = this.cellWidth(); + cellHeight = this.getCellHeight(true); // force pixels for calculations + this._onStartMoving(el, event, ui, node, cellWidth, cellHeight); + }; + /** called when item is being dragged/resized */ + const dragOrResize = (event, ui) => { + this._dragOrResize(el, event, ui, node, cellWidth, cellHeight); + }; + /** called when the item stops moving/resizing */ + const onEndMoving = (event) => { + this.placeholder.remove(); + delete this.placeholder.gridstackNode; + delete node._moving; + delete node._resizing; + delete node._event; + delete node._lastTried; + const widthChanged = node.w !== node._orig.w; + // if the item has moved to another grid, we're done here + const target = event.target; + if (!target.gridstackNode || target.gridstackNode.grid !== this) + return; + node.el = target; + if (node._isAboutToRemove) { + const grid = el.gridstackNode.grid; + if (grid._gsEventHandler[event.type]) { + grid._gsEventHandler[event.type](event, target); + } + grid.engine.nodes.push(node); // temp add it back so we can proper remove it next + grid.removeWidget(el, true, true); + } + else { + Utils.removePositioningStyles(target); + if (node._temporaryRemoved) { + // use last position we were at (not _orig as we may have pushed others and moved) and add it back + this._writePosAttr(target, node); + this.engine.addNode(node); + } + else { + // move to new placeholder location + this._writePosAttr(target, node); + } + this.triggerEvent(event, target); + } + // @ts-ignore + this._extraDragRow = 0; // @ts-ignore + this._updateContainerHeight(); // @ts-ignore + this._triggerChangeEvent(); + this.engine.endUpdate(); + if (event.type === 'resizestop') { + if (Number.isInteger(node.sizeToContent)) + node.sizeToContent = node.h; // new soft limit + this.resizeToContentCheck(widthChanged, node); // wait for width animation if changed + } + }; + dd.draggable(el, { + start: onStartMoving, + stop: onEndMoving, + drag: dragOrResize + }).resizable(el, { + start: onStartMoving, + stop: onEndMoving, + resize: dragOrResize + }); + node._initDD = true; // we've set DD support now + } + // finally fine tune move vs resize by disabling any part... + dd.draggable(el, noMove ? 'disable' : 'enable') + .resizable(el, noResize ? 'disable' : 'enable'); + return this; + } + /** @internal handles actual drag/resize start */ + _onStartMoving(el, event, ui, node, cellWidth, cellHeight) { + this.engine.cleanNodes() + .beginUpdate(node); + // @ts-ignore + this._writePosAttr(this.placeholder, node); + this.el.appendChild(this.placeholder); + this.placeholder.gridstackNode = node; + // console.log('_onStartMoving placeholder') // TEST + // if the element is inside a grid, it has already been scaled + // we can use that as a scale reference + if (node.grid?.el) { + this.dragTransform = Utils.getValuesFromTransformedElement(el); + } + // if the element is being dragged from outside (not from any grid) + // we use the grid as the transformation reference, since the helper is not subject to transformation + else if (this.placeholder && this.placeholder.closest('.grid-stack')) { + const gridEl = this.placeholder.closest('.grid-stack'); + this.dragTransform = Utils.getValuesFromTransformedElement(gridEl); + } + // Fallback + else { + this.dragTransform = { + xScale: 1, + xOffset: 0, + yScale: 1, + yOffset: 0, + }; + } + node.el = this.placeholder; + node._lastUiPosition = ui.position; + node._prevYPix = ui.position.top; + node._moving = (event.type === 'dragstart'); // 'dropover' are not initially moving so they can go exactly where they enter (will push stuff out of the way) + node._resizing = (event.type === 'resizestart'); + delete node._lastTried; + if (event.type === 'dropover' && node._temporaryRemoved) { + // console.log('engine.addNode x=' + node.x); // TEST + this.engine.addNode(node); // will add, fix collisions, update attr and clear _temporaryRemoved + node._moving = true; // AFTER, mark as moving object (wanted fix location before) + } + // set the min/max resize info taking into account the column count and position (so we don't resize outside the grid) + this.engine.cacheRects(cellWidth, cellHeight, this.opts.marginTop, this.opts.marginRight, this.opts.marginBottom, this.opts.marginLeft); + if (event.type === 'resizestart') { + const colLeft = this.getColumn() - node.x; + const rowLeft = (this.opts.maxRow || Number.MAX_SAFE_INTEGER) - node.y; + dd.resizable(el, 'option', 'minWidth', cellWidth * Math.min(node.minW || 1, colLeft)) + .resizable(el, 'option', 'minHeight', cellHeight * Math.min(node.minH || 1, rowLeft)) + .resizable(el, 'option', 'maxWidth', cellWidth * Math.min(node.maxW || Number.MAX_SAFE_INTEGER, colLeft)) + .resizable(el, 'option', 'maxWidthMoveLeft', cellWidth * Math.min(node.maxW || Number.MAX_SAFE_INTEGER, node.x + node.w)) + .resizable(el, 'option', 'maxHeight', cellHeight * Math.min(node.maxH || Number.MAX_SAFE_INTEGER, rowLeft)) + .resizable(el, 'option', 'maxHeightMoveUp', cellHeight * Math.min(node.maxH || Number.MAX_SAFE_INTEGER, node.y + node.h)); + } + } + /** @internal handles actual drag/resize */ + _dragOrResize(el, event, ui, node, cellWidth, cellHeight) { + const p = { ...node._orig }; // could be undefined (_isExternal) which is ok (drag only set x,y and w,h will default to node value) + let resizing; + let mLeft = this.opts.marginLeft, mRight = this.opts.marginRight, mTop = this.opts.marginTop, mBottom = this.opts.marginBottom; + // if margins (which are used to pass mid point by) are large relative to cell height/width, reduce them down #1855 + const mHeight = Math.round(cellHeight * 0.1), mWidth = Math.round(cellWidth * 0.1); + mLeft = Math.min(mLeft, mWidth); + mRight = Math.min(mRight, mWidth); + mTop = Math.min(mTop, mHeight); + mBottom = Math.min(mBottom, mHeight); + if (event.type === 'drag') { + if (node._temporaryRemoved) + return; // handled by dropover + const distance = ui.position.top - node._prevYPix; + node._prevYPix = ui.position.top; + if (this.opts.draggable.scroll !== false) { + Utils.updateScrollPosition(el, ui.position, distance); + } + // get new position taking into account the margin in the direction we are moving! (need to pass mid point by margin) + const left = ui.position.left + (ui.position.left > node._lastUiPosition.left ? -mRight : mLeft); + const top = ui.position.top + (ui.position.top > node._lastUiPosition.top ? -mBottom : mTop); + p.x = Math.round(left / cellWidth); + p.y = Math.round(top / cellHeight); + // @ts-ignore// if we're at the bottom hitting something else, grow the grid so cursor doesn't leave when trying to place below others + const prev = this._extraDragRow; + if (this.engine.collide(node, p)) { + const row = this.getRow(); + let extra = Math.max(0, (p.y + node.h) - row); + if (this.opts.maxRow && row + extra > this.opts.maxRow) { + extra = Math.max(0, this.opts.maxRow - row); + } // @ts-ignore + this._extraDragRow = extra; // @ts-ignore + } + else + this._extraDragRow = 0; // @ts-ignore + if (this._extraDragRow !== prev) + this._updateContainerHeight(); + if (node.x === p.x && node.y === p.y) + return; // skip same + // DON'T skip one we tried as we might have failed because of coverage <50% before + // if (node._lastTried && node._lastTried.x === x && node._lastTried.y === y) return; + } + else if (event.type === 'resize') { + if (p.x < 0) + return; + // Scrolling page if needed + Utils.updateScrollResize(event, el, cellHeight); + // get new size + p.w = Math.round((ui.size.width - mLeft) / cellWidth); + p.h = Math.round((ui.size.height - mTop) / cellHeight); + if (node.w === p.w && node.h === p.h) + return; + if (node._lastTried && node._lastTried.w === p.w && node._lastTried.h === p.h) + return; // skip one we tried (but failed) + // if we size on left/top side this might move us, so get possible new position as well + const left = ui.position.left + mLeft; + const top = ui.position.top + mTop; + p.x = Math.round(left / cellWidth); + p.y = Math.round(top / cellHeight); + resizing = true; + } + node._event = event; + node._lastTried = p; // set as last tried (will nuke if we go there) + const rect = { + x: ui.position.left + mLeft, + y: ui.position.top + mTop, + w: (ui.size ? ui.size.width : node.w * cellWidth) - mLeft - mRight, + h: (ui.size ? ui.size.height : node.h * cellHeight) - mTop - mBottom + }; + if (this.engine.moveNodeCheck(node, { ...p, cellWidth, cellHeight, rect, resizing })) { + node._lastUiPosition = ui.position; + this.engine.cacheRects(cellWidth, cellHeight, mTop, mRight, mBottom, mLeft); + delete node._skipDown; + if (resizing && node.subGrid) + node.subGrid.onResize(); + this._extraDragRow = 0; // @ts-ignore + this._updateContainerHeight(); + const target = event.target; // @ts-ignore + // Do not write sidebar item attributes back to the original sidebar el + if (!node._sidebarOrig) { + this._writePosAttr(target, node); + } + this.triggerEvent(event, target); + } + } + /** call given event callback on our main top-most grid (if we're nested) */ + triggerEvent(event, target) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + let grid = this; + while (grid.parentGridNode) + grid = grid.parentGridNode.grid; + if (grid._gsEventHandler[event.type]) { + grid._gsEventHandler[event.type](event, target); + } + } + /** @internal called when item leaving our area by either cursor dropout event + * or shape is outside our boundaries. remove it from us, and mark temporary if this was + * our item to start with else restore prev node values from prev grid it came from. + */ + _leave(el, helper) { + helper = helper || el; + const node = helper.gridstackNode; + if (!node) + return; + // remove the scale of the helper on leave + helper.style.transform = helper.style.transformOrigin = null; + dd.off(el, 'drag'); // no need to track while being outside + // this gets called when cursor leaves and shape is outside, so only do this once + if (node._temporaryRemoved) + return; + node._temporaryRemoved = true; + this.engine.removeNode(node); // remove placeholder as well, otherwise it's a sign node is not in our list, which is a bigger issue + node.el = node._isExternal && helper ? helper : el; // point back to real item being dragged + const sidebarOrig = node._sidebarOrig; + if (node._isExternal) + this.engine.cleanupNode(node); + // Restore sidebar item initial size info to stay consistent when dragging between multiple grids + node._sidebarOrig = sidebarOrig; + if (this.opts.removable === true) { // boolean vs a class string + // item leaving us and we are supposed to remove on leave (no need to drag onto trash) mark it so + GridStack._itemRemoving(el, true); + } + // finally if item originally came from another grid, but left us, restore things back to prev info + if (el._gridstackNodeOrig) { + // console.log('leave delete _gridstackNodeOrig') // TEST + el.gridstackNode = el._gridstackNodeOrig; + delete el._gridstackNodeOrig; + } + else if (node._isExternal) { + // item came from outside restore all nodes back to original + this.engine.restoreInitial(); + } + } + // legacy method removed + commit() { obsolete(this, this.batchUpdate(false), 'commit', 'batchUpdate', '5.2'); return this; } +} +/** + * callback to create the content of widgets so the app can control how to store and restore it + * By default this lib will do 'el.textContent = w.content' forcing text only support for avoiding potential XSS issues. + */ +GridStack.renderCB = (el, w) => { if (el && w?.content) + el.textContent = w.content; }; +/** parent class for sizing content. defaults to '.grid-stack-item-content' */ +GridStack.resizeToContentParent = '.grid-stack-item-content'; +/** scoping so users can call GridStack.Utils.sort() for example */ +GridStack.Utils = Utils; +/** scoping so users can call new GridStack.Engine(12) for example */ +GridStack.Engine = GridStackEngine; +/** @internal current version compiled in code */ +GridStack.GDRev = '12.3.2'; + +//# sourceMappingURL=gridstack.js.map +;// CONCATENATED MODULE: ./web/fluentdashboard/layout/gridstack-adapter.ts + + + +class GridstackAdapter { + container; + options; + grids = new Map(); + elements = new Map(); + nodes = []; + columns = 12; + editing = !1; + applying = !1; + notification; + listeners = new Set(); + mount(e, t) { + this.container = e, this.options = t; + } + setEditing(e) { + for (let t of (this.editing = e, this.grids.values()))t.setStatic(!e || 12 !== this.columns); + } + onChange(e) { + return this.listeners.add(e), ()=>this.listeners.delete(e); + } + apply(l, r) { + if (!this.container || !this.options) throw Error("Layout not mounted"); + this.applying = !0, this.nodes = l, this.columns = r; + let a = indexNodes(l), h = resolveLayout(l, r, { + includeHidden: this.editing, + collapsed: this.options.collapsed() + }), c = this.options.collapsed(), g = new Set([ + ...h.items.keys() + ].filter((e)=>!ancestorsOf(a, e).some((e)=>c.has(e.id)))); + for (let [e, t] of [ + ...this.grids + ].reverse())null !== e && (!g.has(e) || c.has(e)) && (t.destroy(!1), this.grids.delete(e)); + for (let [e, t] of [ + ...this.elements + ].reverse())if (!g.has(e)) { + let i = t.gridstackNode?.grid; + i?.engine && i.removeWidget(t, !0, !1), t.remove(), this.elements.delete(e); + } + let p = new Set(), m = (o, l)=>{ + let c = h.grids.get(o); + if (!c) return; + let g = this.grids.get(o); + for (let h of (g || (l.classList.add("grid-stack"), g = GridStack.init({ + column: c.columns, + cellHeight: 40, + margin: 6, + minRow: 2, + float: !0, + animate: !1, + staticGrid: !this.editing || 12 !== r, + handle: ".fluent-dashboard__card-header", + removable: !1, + acceptWidgets: (e)=>{ + let l = e.dataset.nodeId, r = indexNodes(this.nodes), a = l ? r.byId.get(l) : void 0; + if (!a || !this.editing || 12 !== this.columns || a.locked || ancestorsOf(r, a.id).some((e)=>e.locked)) return !1; + if (null === o) return !0; + let h = r.byId.get(o); + return h?.kind === "group" && !h.locked && !ancestorsOf(r, o).some((e)=>e.locked) && !isSelfOrAncestor(r, a.id, o) && depthOf(r, o) + 1 + groupLevels(r, a.id) <= 2 && a.tile.w <= h.tile.w; + } + }, l), this.grids.set(o, g), g.on("dragstop resizestop dropped", ()=>this.scheduleChange())), g.batchUpdate(), g.column(c.columns, "none"), g.setStatic(!this.editing || 12 !== r), c.items)){ + let e = a.byId.get(h.id); + if (!e) continue; + p.add(e.id); + let i = this.elements.get(e.id); + if (i && i.parentElement !== l && (i.gridstackNode?.grid?.engine && i.gridstackNode.grid.removeWidget(i, !1, !1), l.appendChild(i)), !i) { + (i = document.createElement("div")).className = "grid-stack-item", i.dataset.nodeId = e.id; + let t = document.createElement("div"); + t.className = "grid-stack-item-content", i.appendChild(t), this.elements.set(e.id, i), l.appendChild(i); + } + let s = i.querySelector(":scope > .grid-stack-item-content"), d = this.options?.render(e); + d && d.parentElement !== s && s.replaceChildren(d); + let n = !!(e.locked || ancestorsOf(a, e.id).some((e)=>e.locked)), o = { + id: e.id, + x: h.x, + y: h.y, + w: h.w, + h: h.h, + locked: n, + noMove: n, + noResize: n || "group" === e.kind, + minW: 1, + minH: 1, + maxH: 48 + }; + if (i.gridstackNode?.grid === g ? g.update(i, o) : g.makeWidget(i, o), "group" === e.kind) { + let t = d?.querySelector(".fluent-dashboard__group-body"); + t && (t.hidden = h.collapsed, h.collapsed || m(e.id, t)); + } + } + g.batchUpdate(!1); + }; + try { + m(null, this.container), this.options.visible(p); + } finally{ + this.applying = !1; + } + } + scheduleChange() { + !this.applying && this.editing && 12 === this.columns && (clearTimeout(this.notification), this.notification = setTimeout(()=>{ + let e = []; + for (let [i, s] of this.grids)for (let n of s.engine.nodes){ + let s = this.nodes.find((e)=>e.id === (n.el?.dataset.nodeId ?? n.id)); + if (!s || s.locked || ancestorsOf(indexNodes(this.nodes), s.id).some((e)=>e.locked)) continue; + let o = { + id: s.id, + parentId: i, + x: n.x ?? 0, + y: n.y ?? 0, + w: n.w ?? 1, + h: "group" === s.kind ? s.tile.h : n.h ?? 2 + }; + (o.parentId !== s.parentId || o.x !== s.tile.x || o.y !== s.tile.y || o.w !== s.tile.w || o.h !== s.tile.h) && e.push(o); + } + if (e.length) for (let t of this.listeners)t(e); + }, 0)); + } + destroy() { + for (let e of (clearTimeout(this.notification), [ + ...this.grids.values() + ].reverse()))e.engine && e.destroy(!1); + this.grids.clear(), this.elements.clear(), this.listeners.clear(), this.container?.replaceChildren(), this.container = void 0; + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/layout/responsive.ts +function columnsForWidth(e) { + return e >= 992 ? 12 : e >= 576 ? 6 : 2; +} +function observeColumns(e, t) { + let n = 0, o = new ResizeObserver(([e])=>{ + let o = columnsForWidth(e.contentRect.width); + o !== n && (n = o, t(o)); + }); + return o.observe(e), ()=>o.disconnect(); +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/frame.ts +class WidgetFrame { + element = document.createElement("section"); + header = document.createElement("header"); + body = document.createElement("div"); + status = document.createElement("p"); + title = document.createElement("h2"); + constructor(e, t, s, a){ + this.element.className = "fluent-dashboard__card", this.header.className = "fluent-dashboard__card-header", this.header.tabIndex = 0, this.title.className = "fluent-dashboard__card-title", this.body.className = "fluent-dashboard__card-content", this.status.className = "fluent-dashboard__widget-status", this.status.setAttribute("role", "status"); + let n = document.createElement("button"); + n.type = "button", n.textContent = _("Refresh"), n.addEventListener("click", (e)=>{ + e.stopPropagation(), s(); + }); + let d = document.createElement("button"); + d.type = "button", d.textContent = _("Fullscreen"), d.addEventListener("click", (e)=>{ + e.stopPropagation(), document.fullscreenElement === this.element ? document.exitFullscreen().catch(()=>{}) : this.element.requestFullscreen().catch(()=>this.setStatus(_("Fullscreen is unavailable."))); + }), this.header.append(this.title, n, d), this.header.addEventListener("click", (e)=>{ + e.target instanceof HTMLButtonElement || a(); + }), this.header.addEventListener("keydown", (e)=>{ + e.target === this.header && ("Enter" === e.key || " " === e.key) && (e.preventDefault(), a()); + }), this.element.append(this.header, this.status, this.body), this.update(e, t, !1); + } + update(e, t, s) { + this.title.textContent = e.title || t, this.element.classList.toggle("fluent-dashboard__card--locked", !!e.locked), this.element.classList.toggle("fluent-dashboard__card--hidden", !!e.hidden), this.element.classList.toggle("fluent-dashboard__card--editing", s); + } + setStatus(e) { + this.status.textContent = e, this.status.hidden = !e; + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/runtime.ts + +class WidgetRuntime { + registry; + data; + select; + mounted = new Map(); + constructor(e, t, i){ + this.registry = e, this.data = t, this.select = i; + } + render(t, i) { + let n = this.registry.get(t.widgetType), s = this.mounted.get(t.id); + if (s && (s.type !== t.widgetType || s.version !== t.widgetVersion) && (this.remove(t.id), s = void 0), !s) { + let i = new WidgetFrame(t, n?.title ?? t.widgetType, ()=>{ + this.data.refresh(n?.requiredData ?? []); + }, ()=>this.select(t.id)), o = new ResizeObserver((e)=>{ + let i = e[0]?.contentRect; + i && this.mounted.get(t.id)?.instance?.resize(i.width, i.height); + }); + if (s = { + frame: i, + type: t.widgetType, + version: t.widgetVersion, + config: "", + observer: o + }, this.mounted.set(t.id, s), o.observe(i.body), n) try { + let e = t.widgetVersion === n.version ? t.config : t.widgetVersion < n.version && n.migrateConfig ? n.migrateConfig(t.config, t.widgetVersion) : void 0; + if (!e || !n.validateConfig(e)) throw Error(_("Unsupported widget configuration version.")); + s.instance = n.createInstance({ + data: this.data, + config: e, + setStatus: (e)=>i.setStatus(e) + }), s.instance.mount(i.body), s.config = JSON.stringify(t.config); + } catch (e) { + s.instance?.destroy(), s.instance = void 0, i.setStatus(String(e)); + } + else i.setStatus(_("Widget extension unavailable. Configuration has been preserved.")); + } + let o = JSON.stringify(t.config); + if (s.instance && o !== s.config) { + let e = t.widgetVersion === n?.version ? t.config : t.widgetVersion < (n?.version ?? 0) ? n?.migrateConfig?.(t.config, t.widgetVersion) : void 0; + e && n?.validateConfig(e) ? (s.instance.updateConfig(e), s.config = o) : s.frame.setStatus(_("Invalid widget configuration.")); + } + return s.frame.update(t, n?.title ?? t.widgetType, i), s.frame.element; + } + retain(e, t) { + for (let [i, n] of this.mounted)e.has(i) ? n.instance?.setVisible(t.has(i)) : this.remove(i); + } + destroy() { + for (let e of this.mounted.keys())this.remove(e); + } + remove(e) { + let t = this.mounted.get(e); + t?.observer.disconnect(), t?.instance?.destroy(), t?.frame.element.remove(), this.mounted.delete(e); + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/editor/workbench.ts + + + + + + + + + +function workbench_k(e, t = "", i = "") { + let s = document.createElement(e); + return s.className = t, s.textContent = i, s; +} +function workbench_x(e, t, i = !1) { + let s = workbench_k("button", "cbi-button", e); + return s.type = "button", s.disabled = i, s.addEventListener("click", t), s; +} +function workbench_L(e, t, i = "text") { + let s = workbench_k("label", "fluent-dashboard__field", e), r = workbench_k("input"); + return r.type = i, r.value = t, s.append(r), [ + s, + r + ]; +} +class Workbench { + registry; + data; + persistence; + writable; + root = workbench_k("div", "fluent-dashboard"); + store; + toolbar = workbench_k("fieldset", "fluent-dashboard__toolbar"); + message = workbench_k("p", "fluent-dashboard__notice"); + workspace = workbench_k("div", "fluent-dashboard__workspace"); + library = workbench_k("fieldset", "fluent-dashboard__library"); + canvas = workbench_k("div", "fluent-dashboard__canvas"); + properties = workbench_k("fieldset", "fluent-dashboard__properties"); + adapter = new GridstackAdapter(); + runtime; + groups = new Map(); + off = []; + columns = 12; + mountedDashboard = ""; + busy = !1; + paused = !1; + destroyed = !1; + constructor(e, t, i, s, r){ + this.registry = t, this.data = i, this.persistence = s, this.writable = r, this.store = new DashboardStore(e), this.runtime = new WidgetRuntime(t, i, (e)=>this.select(e)), this.message.setAttribute("role", "status"), this.workspace.append(this.library, this.canvas, this.properties), this.root.append(workbench_k("h1", "", _("Fluent Dashboard")), this.toolbar, this.message, this.workspace), this.off.push(this.store.subscribe(()=>this.render())), this.off.push(observeColumns(this.canvas, (e)=>{ + this.columns = e, this.renderLayout(); + })); + let o = (e)=>this.onKey(e); + this.root.addEventListener("keydown", o), this.off.push(()=>this.root.removeEventListener("keydown", o)); + let a = (e)=>{ + this.store.history.dirty && (e.preventDefault(), e.returnValue = ""); + }; + window.addEventListener("beforeunload", a), this.off.push(()=>window.removeEventListener("beforeunload", a)), this.render(); + } + report(e) { + this.message.textContent = e instanceof Error ? e.message : String(e); + } + command(e) { + if (!this.busy) try { + this.store.execute(e); + } catch (e) { + this.report(e), this.renderLayout(); + } + } + select(e) { + this.store.isEditing && !this.busy && (this.store.selection.has(e) ? this.store.selection.delete(e) : this.store.selection.add(e), this.store.emit()); + } + render() { + if (this.destroyed) return; + this.store.history.dirty && this.writable && !this.persistence.cacheDraft(this.store.document) && (this.message.textContent = _("Browser draft storage is unavailable. Export your changes before leaving.")), this.toolbar.replaceChildren(); + let e = workbench_k("select"); + for (let t of (e.setAttribute("aria-label", _("Dashboard")), this.store.document.dashboards)){ + let i = workbench_k("option", "", t.name); + i.value = t.id, i.selected = t.id === this.store.activeDashboard.id, e.append(i); + } + if (e.addEventListener("change", ()=>this.store.switchDashboard(e.value)), this.toolbar.append(e, workbench_x(this.paused ? _("Resume") : _("Pause"), ()=>{ + this.paused = !this.paused, this.data.pause("manual", this.paused), this.render(); + }), workbench_x(_("Export"), ()=>this.exportDocument(this.store.document))), this.store.isEditing) { + let e = workbench_k("select"); + for (let [t, i] of (e.setAttribute("aria-label", _("Preview width")), [ + [ + "0", + _("Automatic width") + ], + [ + "12", + _("Desktop") + ], + [ + "6", + _("Tablet") + ], + [ + "2", + _("Phone") + ] + ])){ + let s = workbench_k("option", "", i); + s.value = t, e.append(s); + } + e.value = String(this.store.previewColumns ?? 0), e.addEventListener("change", ()=>{ + this.store.previewColumns = Number(e.value) || null, this.renderLayout(); + }), this.toolbar.append(workbench_x(_("Undo"), ()=>this.store.undo(), !this.store.history.canUndo), workbench_x(_("Redo"), ()=>this.store.redo(), !this.store.history.canRedo), e, workbench_x(_("Save"), ()=>{ + this.save(); + }, !this.store.history.dirty), workbench_x(_("Cancel"), ()=>{ + this.persistence.clearDraft(), this.store.cancel(); + }), workbench_x(_("New dashboard"), ()=>{ + let e = createId("dashboard"); + this.command(new EditCommand("New dashboard", (t)=>{ + t.dashboards.push({ + id: e, + name: _("New dashboard"), + nodes: [] + }); + })), this.store.document.dashboards.some((t)=>t.id === e) && this.store.switchDashboard(e); + }), workbench_x(_("Duplicate dashboard"), ()=>this.duplicateDashboard()), workbench_x(_("Import"), ()=>this.importDocument()), workbench_x(_("Restore defaults"), ()=>this.replaceDocument(createDefaultDocument()))); + } else this.writable && this.toolbar.append(workbench_x(_("Edit"), ()=>this.store.edit())); + let t = this.persistence.readDraft(); + t && !this.store.isEditing && this.writable && this.toolbar.append(workbench_x(_("Restore draft"), ()=>{ + if (t.revision !== this.store.document.revision) { + this.report(_("This draft belongs to an older revision. It has been exported so you can review it before importing.")), this.exportDocument(t); + return; + } + this.store.edit(), this.replaceDocument(t); + })), this.library.hidden = this.properties.hidden = !this.store.isEditing, this.workspace.classList.toggle("fluent-dashboard__workspace--editing", this.store.isEditing), this.renderLibrary(), this.renderProperties(), this.renderLayout(), this.setBusy(this.busy); + } + renderLibrary() { + for (let t of (this.library.replaceChildren(workbench_k("legend", "", _("Widget library"))), this.registry.list()))this.library.append(workbench_x(`${t.category} \xb7 ${t.title}`, ()=>{ + let i = presetDimensions(t.defaultSize, t.constraints), s = { + id: createId("widget"), + parentId: null, + kind: "widget", + widgetType: t.type, + widgetVersion: t.version, + config: { + ...t.defaultConfig + }, + tile: { + ...i, + size: t.defaultSize, + x: 0, + y: 0, + order: this.store.activeDashboard.nodes.length + } + }; + this.command(new AddNodeCommand(this.store.activeDashboard.id, s)); + })); + this.library.append(workbench_x(_("Add group"), ()=>this.command(new AddNodeCommand(this.store.activeDashboard.id, { + kind: "group", + id: createId("group"), + title: _("Group"), + parentId: null, + tile: { + x: 0, + y: 0, + w: 12, + h: 8, + order: this.store.activeDashboard.nodes.length, + size: "full" + } + })))); + } + renderProperties() { + let e = this.store.activeDashboard; + this.properties.replaceChildren(workbench_k("legend", "", _("Properties"))); + let [p, c] = workbench_L(_("Dashboard name"), e.name); + this.properties.append(p, workbench_x(_("Rename"), ()=>this.command(new EditCommand("Rename dashboard", (t)=>{ + let i = t.dashboards.find((t)=>t.id === e.id); + i && (i.name = c.value); + }))), workbench_x(_("Set as default"), ()=>this.command(new EditCommand("Default dashboard", (t)=>{ + t.defaultDashboardId = e.id; + }))), workbench_x(_("Delete dashboard"), ()=>this.command(new EditCommand("Delete dashboard", (t)=>{ + t.dashboards = t.dashboards.filter((t)=>t.id !== e.id), t.defaultDashboardId === e.id && (t.defaultDashboardId = t.dashboards[0]?.id); + })), this.store.document.dashboards.length <= 1)); + let u = e.nodes.filter((e)=>this.store.selection.has(e.id)); + if (!u.length) return void this.properties.append(workbench_k("p", "", _("Select tile headers to edit one or more tiles."))); + let f = u.filter((t)=>!ancestorsOf(indexNodes(e.nodes), t.id).some((e)=>this.store.selection.has(e.id))), w = (e)=>this.command(new BatchCommand(f.map((t)=>e(t.id)))); + this.properties.append(workbench_x(_("Lock / unlock"), ()=>w((t)=>new ToggleLockCommand(e.id, t))), workbench_x(_("Show / hide"), ()=>w((t)=>new ToggleHideCommand(e.id, t))), workbench_x(_("Remove selected and contents"), ()=>w((t)=>new RemoveNodeCommand(e.id, t)))); + let v = workbench_k("select"); + v.setAttribute("aria-label", _("Move to group")); + let D = workbench_k("option", "", _("Root")); + for (let t of (D.value = "", v.append(D), e.nodes.filter((e)=>"group" === e.kind))){ + let e = workbench_k("option", "", t.title); + e.value = t.id, v.append(e); + } + if (this.properties.append(v, workbench_x(_("Move to group"), ()=>this.command(new MoveNodeCommand(e.id, f.map((e)=>({ + id: e.id, + parentId: v.value || null, + ...e.tile, + x: 0, + y: 0 + })))))), 1 !== u.length) return; + let E = u[0], [S, I] = workbench_L(_("Title"), E.title ?? ""); + if (I.maxLength = 256, this.properties.append(S), "widget" === E.kind) { + let t = this.registry.get(E.widgetType), i = []; + if (t?.type === "network.traffic-trend" || t?.type.startsWith("network.interface-")) { + let [e, t] = workbench_L(_("Interface name (empty: first)"), String(E.config.interface ?? "")); + this.properties.append(e), i.push([ + "interface", + t + ]); + } + if (t?.type === "wireless.radio-status" || t?.type === "wireless.channel") { + let [e, t] = workbench_L(_("Radio name (empty: first)"), String(E.config.radio ?? "")); + this.properties.append(e), i.push([ + "radio", + t + ]); + } + if (t?.type === "network.traffic-trend") { + let [e, t] = workbench_L(_("History samples (10\u2013120)"), String(E.config.history ?? 40), "number"); + t.min = "10", t.max = "120", this.properties.append(e), i.push([ + "history", + t + ]); + } + if ([ + "network.interfaces", + "wireless.radios", + "dhcp.leases", + "wireless.clients" + ].includes(E.widgetType)) { + let [e, t] = workbench_L(_("Filter text"), String(E.config.query ?? "")), [s, r] = workbench_L(_("Maximum rows"), String(E.config.limit ?? 200), "number"); + r.min = "1", r.max = "1000"; + let [o, a] = workbench_L(_("Sort field (for example: name, signal, expires)"), String(E.config.sortBy ?? "")), [d, n] = workbench_L(_("Descending"), "", "checkbox"); + n.checked = !!E.config.descending, this.properties.append(e, s, o, d), i.push([ + "query", + t + ], [ + "limit", + r + ], [ + "sortBy", + a + ], [ + "descending", + n + ]); + } + if ("navigation.shortcuts" === E.widgetType) { + let [e, t] = workbench_L(_("Quick links (status, interfaces, wireless, dhcp, firewall, system)"), Array.isArray(E.config.links) ? E.config.links.join(", ") : ""); + this.properties.append(e), i.push([ + "links", + t + ]); + } + if (this.properties.append(workbench_x(_("Apply properties"), ()=>{ + let t = { + ...E.config + }; + for (let [e, s] of i)t[e] = "links" === e ? s.value.split(",").map((e)=>e.trim()).filter(Boolean) : "checkbox" === s.type ? s.checked : "number" === s.type ? Number(s.value) : s.value; + this.registry.get(E.widgetType)?.validateConfig(t) ? this.command(new UpdateConfigCommand(e.id, E.id, t, I.value)) : this.report(_("Invalid widget configuration.")); + })), t) for (let i of allowedPresets(t.constraints))this.properties.append(workbench_x(i, ()=>{ + let { w: s, h: r } = presetDimensions(i, t.constraints); + this.command(new ResizeNodeCommand(e.id, E.id, s, r)); + })); + } else { + let [t, r] = workbench_L(_("Description"), E.description ?? ""); + r.maxLength = 2048, this.properties.append(t, workbench_x(_("Apply group properties"), ()=>this.command(new EditCommand("Configure group", (t)=>{ + let i = t.dashboards.find((t)=>t.id === e.id)?.nodes.find((e)=>e.id === E.id); + i?.kind !== "group" || i.locked || (i.title = I.value, i.description = r.value); + }))), workbench_x(_("Default collapsed / expanded"), ()=>this.command(new ToggleCollapseCommand(e.id, E.id))), workbench_x(_("Dissolve and keep contents"), ()=>this.command(new DissolveGroupCommand(e.id, E.id)))); + } + this.properties.append(workbench_x(_("Earlier"), ()=>this.reorder(E, -1)), workbench_x(_("Later"), ()=>this.reorder(E, 1)), workbench_x(_("Duplicate tile"), ()=>this.duplicateNode(E))); + } + renderLayout() { + if (this.destroyed) return; + let e = this.store.activeDashboard; + for (let [t, i] of (e.id !== this.mountedDashboard && (this.adapter.destroy(), this.runtime.destroy(), this.groups.clear(), this.adapter = new GridstackAdapter(), this.adapter.mount(this.canvas, { + render: (e)=>this.renderNode(e), + collapsed: ()=>this.store.isEditing ? new Set() : this.store.collapsed, + visible: (e)=>this.runtime.retain(new Set(this.store.activeDashboard.nodes.filter((e)=>"widget" === e.kind).map((e)=>e.id)), e) + }), this.adapter.onChange((e)=>this.command(new MoveNodeCommand(this.store.activeDashboard.id, e))), this.mountedDashboard = e.id), this.adapter.setEditing(this.store.isEditing && !this.busy), this.adapter.apply(e.nodes, this.store.previewColumns ?? this.columns), this.groups))e.nodes.some((e)=>e.id === t) || (i.remove(), this.groups.delete(t)); + for (let e of this.canvas.querySelectorAll("[data-node-id]"))e.classList.toggle("fluent-dashboard__tile--selected", this.store.selection.has(e.dataset.nodeId ?? "")); + } + renderNode(e) { + if ("widget" === e.kind) return this.runtime.render(e, this.store.isEditing); + let t = this.groups.get(e.id); + if (!t) { + t = workbench_k("section", "fluent-dashboard__group"); + let i = workbench_k("header", "fluent-dashboard__card-header"); + i.tabIndex = 0, i.append(workbench_k("h2", "fluent-dashboard__card-title")), i.append(workbench_x(_("Collapse / expand"), ()=>{ + this.store.isEditing ? this.command(new ToggleCollapseCommand(this.store.activeDashboard.id, e.id)) : (this.store.collapsed.has(e.id) ? this.store.collapsed.delete(e.id) : this.store.collapsed.add(e.id), this.renderLayout()); + })), i.addEventListener("click", (t)=>{ + t.target instanceof HTMLButtonElement || this.select(e.id); + }), i.addEventListener("keydown", (t)=>{ + t.target === i && ("Enter" === t.key || " " === t.key) && (t.preventDefault(), this.select(e.id)); + }), t.append(i, workbench_k("div", "fluent-dashboard__group-body")), this.groups.set(e.id, t); + } + let i = t.querySelector("h2"); + i && (i.textContent = e.title); + let s = t.querySelector(".fluent-dashboard__group-description"); + return e.description ? (s || (s = workbench_k("p", "fluent-dashboard__group-description"), t.querySelector(".fluent-dashboard__card-header")?.after(s)), s.textContent = e.description) : s?.remove(), t; + } + reorder(e, t) { + this.command(new EditCommand("Reorder tile", (i)=>{ + let s = i.dashboards.find((e)=>e.id === this.store.activeDashboard.id); + if (!s || e.locked) return; + let r = s.nodes.filter((t)=>t.parentId === e.parentId).sort((e, t)=>e.tile.order - t.tile.order), o = r.findIndex((t)=>t.id === e.id), a = o + t; + a < 0 || a >= r.length || r[a].locked || ([r[o], r[a]] = [ + r[a], + r[o] + ], r.forEach((e, t)=>{ + e.tile.order = t; + })); + })); + } + duplicateNode(e) { + this.command(new EditCommand("Duplicate tile", (t)=>{ + let i = t.dashboards.find((e)=>e.id === this.store.activeDashboard.id); + if (!i) return; + let s = indexNodes(i.nodes), r = i.nodes.filter((t)=>t.id === e.id || ancestorsOf(s, t.id).some((t)=>t.id === e.id)), o = new Map(r.map((e)=>[ + e.id, + createId(e.kind) + ])), a = Math.max(0, ...i.nodes.filter((t)=>t.parentId === e.parentId).map((e)=>e.tile.y + e.tile.h)); + for (let t of r){ + let s = JSON.parse(JSON.stringify(t)); + s.id = o.get(t.id), s.parentId = t.parentId ? o.get(t.parentId) ?? t.parentId : null, t.id === e.id && (s.tile.y = a, s.tile.order = i.nodes.length), i.nodes.push(s); + } + })); + } + duplicateDashboard() { + let e = createId("dashboard"); + this.command(new EditCommand("Duplicate dashboard", (t)=>{ + let i = JSON.parse(JSON.stringify(this.store.activeDashboard)); + i.id = e, i.name = `${i.name} (${_("Copy")})`, t.dashboards.push(i); + })), this.store.document.dashboards.some((t)=>t.id === e) && this.store.switchDashboard(e); + } + replaceDocument(e) { + this.command(new EditCommand("Replace layout", (t)=>{ + let i = migrateDocument(e); + i.revision = t.revision, Object.assign(t, i); + })); + } + exportDocument(e) { + let t = URL.createObjectURL(new Blob([ + JSON.stringify(e, null, 2) + ], { + type: "application/json" + })), i = workbench_k("a"); + i.href = t, i.download = "fluentdashboard.json", i.click(), setTimeout(()=>URL.revokeObjectURL(t), 1000); + } + importDocument() { + let e = workbench_k("input"); + e.type = "file", e.accept = ".json,application/json", e.addEventListener("change", ()=>{ + let t = e.files?.[0]; + if (t) { + if (t.size > 262144) return void this.report(_("Layout file is too large.")); + t.text().then((e)=>{ + this.destroyed || this.replaceDocument(migrateDocument(JSON.parse(e))); + }).catch((e)=>this.report(e)); + } + }), e.click(); + } + async save() { + if (!this.busy) { + this.setBusy(!0), this.adapter.setEditing(!1); + try { + let e = await this.persistence.save(this.store.document); + this.destroyed || (this.store.saved(e), this.message.textContent = _("Shared layout saved.")); + } catch (e) { + this.destroyed || this.report(e); + } finally{ + this.destroyed || (this.setBusy(!1), this.renderLayout()); + } + } + } + setBusy(e) { + this.busy = e, this.toolbar.disabled = this.library.disabled = this.properties.disabled = e; + } + onKey(e) { + if (!this.store.isEditing || this.busy || e.target instanceof Element && e.target.closest("input, textarea, select")) return; + (e.ctrlKey || e.metaKey) && "z" === e.key.toLowerCase() && (e.preventDefault(), e.shiftKey ? this.store.redo() : this.store.undo()); + let t = { + ArrowLeft: [ + -1, + 0 + ], + ArrowRight: [ + 1, + 0 + ], + ArrowUp: [ + 0, + -1 + ], + ArrowDown: [ + 0, + 1 + ] + }; + if (!t[e.key] || !this.store.selection.size) return; + e.preventDefault(); + let [i, s] = t[e.key], o = indexNodes(this.store.activeDashboard.nodes), a = this.store.activeDashboard.nodes.filter((e)=>this.store.selection.has(e.id) && !ancestorsOf(o, e.id).some((e)=>this.store.selection.has(e.id))); + if ((this.store.previewColumns ?? this.columns) !== 12) { + 1 === a.length && this.reorder(a[0], i || s); + return; + } + this.command(new MoveNodeCommand(this.store.activeDashboard.id, a.map((t)=>({ + id: t.id, + parentId: t.parentId, + x: t.tile.x + (e.shiftKey ? 0 : i), + y: t.tile.y + (e.shiftKey ? 0 : s), + w: t.tile.w + (e.shiftKey ? i : 0), + h: t.tile.h + (e.shiftKey ? s : 0) + })))); + } + destroy() { + for (let e of (this.destroyed = !0, this.off))e(); + this.adapter.destroy(), this.runtime.destroy(), this.data.destroy(); + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/persistence/uci.ts + +class RevisionConflictError extends Error { + revision; + constructor(r){ + super("Dashboard changed on another device. Export your draft or reload the shared layout before saving."), this.revision = r; + } +} +class DashboardPersistence { + transport; + storage; + draftKey; + saving = !1; + constructor(r, t, e = "fluentdashboard.draft.v1"){ + this.transport = r, this.storage = t, this.draftKey = e; + } + async load() { + let r = await this.transport.load(); + if (r.error) throw Error(r.message ?? r.error); + return null === r.document && 0 === r.revision ? createDefaultDocument() : migrateDocument(r.document); + } + async save(t) { + if (this.saving) throw Error("A save is already in progress"); + validateDocument(t); + let a = cloneDocument(t); + a.meta = { + ...a.meta, + updatedAt: new Date().toISOString() + }, this.saving = !0; + try { + let r = await this.transport.save(JSON.stringify(a), t.revision); + if ("conflict" === r.error) throw new RevisionConflictError(r.revision ?? 0); + if (r.error) throw Error(r.message ?? r.error); + let s = migrateDocument(r.document); + if (s.revision <= t.revision) throw Error("Server returned a non-increasing revision"); + return this.clearDraft(), s; + } finally{ + this.saving = !1; + } + } + cacheDraft(r) { + try { + return validateDocument(r), this.storage?.setItem(this.draftKey, JSON.stringify(r)), !!this.storage; + } catch { + return !1; + } + } + readDraft() { + try { + let r = this.storage?.getItem(this.draftKey); + return r ? migrateDocument(JSON.parse(r)) : void 0; + } catch { + return; + } + } + clearDraft() { + try { + this.storage?.removeItem(this.draftKey); + } catch {} + } +} + ;// CONCATENATED MODULE: ./web/fluentdashboard/model.ts function model_t(t) { return null === t || "object" != typeof t || Array.isArray(t) ? {} : t; @@ -167,42 +8187,35 @@ function formatLocalTime(t) { }).format(new Date(1000 * t)); } -;// CONCATENATED MODULE: ./web/fluentdashboard/index.tsx +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/cards.tsx -let fluentdashboard_l = rpc.declare({ +let cards_l = rpc.declare({ object: "system", method: "board" -}), fluentdashboard_o = rpc.declare({ +}), cards_d = rpc.declare({ object: "system", method: "info" -}), c = rpc.declare({ +}), cards_c = rpc.declare({ object: "luci", method: "getVersion" -}), fluentdashboard_u = rpc.declare({ +}), cards_u = rpc.declare({ object: "luci-rpc", method: "getDHCPLeases", expect: { "": {} } }); -function fluentdashboard_h(e) { +function cards_m(e) { return null === e || "object" != typeof e || Array.isArray(e) ? {} : e; } -function fluentdashboard_m(e) { +function cards_p(e) { return "string" == typeof e ? e : ""; } -function p(e) { +function cards_f(e) { return "number" == typeof e && Number.isFinite(e) ? e : 0; } -async function fluentdashboard_f(e, t) { - try { - return await e; - } catch { - return t; - } -} -function y(e, t = !1) { +function cards_h(e, t = !1) { let r = e.getL3Device() ?? e.getDevice(); return { name: e.getName(), @@ -216,110 +8229,148 @@ function y(e, t = !1) { tx: r?.getTXBytes() ?? 0 }; } -async function g() { - await fluentdashboard_f(network.flushCache(), {}); - let [e, t, r, a, s, n, d, u] = await Promise.all([ - fluentdashboard_f(fluentdashboard_l(), {}), - fluentdashboard_f(fluentdashboard_o(), {}), - fluentdashboard_f(c(), {}), - fluentdashboard_f(network.getWANNetworks(), []), - fluentdashboard_f(network.getWAN6Networks(), []), - fluentdashboard_f(network.getNetworks(), []), - fluentdashboard_f(network.getWifiDevices(), []), - fluentdashboard_f(network.getWifiNetworks(), []) - ]), h = u.map((e)=>{ - let t = d.find((t)=>t.getName() === e.getWifiDeviceName()); +async function cards_g() { + let [e, t] = await Promise.all([ + network.getWifiDevices(), + network.getWifiNetworks() + ]), r = t.map((t)=>{ + let r = e.find((e)=>e.getName() === t.getWifiDeviceName()); return { - radio: t?.getName() ?? e.getWifiDeviceName() ?? "", - hardware: t?.getI18n() ?? "", - up: e.isUp() && !t?.isDisabled(), - ssid: e.getActiveSSID() || e.getSSID() || e.getMeshID() || "", - mode: e.getActiveModeI18n() || e.getMode(), - channel: e.getChannel(), - frequency: e.getFrequency() ?? "", - encryption: e.getActiveEncryption() + radio: r?.getName() ?? t.getWifiDeviceName() ?? "", + hardware: r?.getI18n() ?? "", + up: t.isUp() && !r?.isDisabled(), + ssid: t.getActiveSSID() || t.getSSID() || t.getMeshID() || "", + mode: t.getActiveModeI18n() || t.getMode(), + channel: t.getChannel(), + frequency: t.getFrequency() ?? "", + encryption: t.getActiveEncryption() }; }); - for (let e of d)h.some((t)=>t.radio === e.getName()) || h.push({ - radio: e.getName(), - hardware: e.getI18n(), - up: e.isUp() && !e.isDisabled(), + for (let t of e)r.some((e)=>e.radio === t.getName()) || r.push({ + radio: t.getName(), + hardware: t.getI18n(), + up: t.isUp() && !t.isDisabled(), ssid: "", mode: "", channel: null, frequency: "", encryption: "" }); - return { - system: normalizeSystemSnapshot(e, t, r), - wan4: a.map((e)=>y(e)), - wan6: s.map((e)=>y(e, !0)), - interfaces: n.filter((e)=>"loopback" !== e.getName()).map((e)=>y(e)), - wireless: h, - updatedAt: new Date() - }; + return r; } -async function w() { - let [e, t, r] = await Promise.all([ - fluentdashboard_f(fluentdashboard_u(), {}), - fluentdashboard_f(network.getWifiNetworks(), []), - fluentdashboard_f(network.getHostHints(), null) - ]), a = await Promise.all(t.map(async (e)=>({ +async function cards_y() { + let [e, t] = await Promise.all([ + network.getWifiNetworks(), + network.getHostHints() + ]), r = await Promise.all(e.map(async (e)=>({ wifi: e, - peers: await fluentdashboard_f(e.getAssocList(), []) - }))), s = []; - for (let { wifi: e, peers: t } of a)for (let a of t){ - let t = r?.getHostnameByMACAddr(a.mac) || r?.getIPAddrByMACAddr(a.mac) || r?.getIP6AddrByMACAddr(a.mac) || ""; - s.push({ + peers: await e.getAssocList() + }))), a = []; + for (let { wifi: e, peers: n } of r)for (let r of n){ + let n = t?.getHostnameByMACAddr(r.mac) || t?.getIPAddrByMACAddr(r.mac) || t?.getIP6AddrByMACAddr(r.mac) || ""; + a.push({ network: e.getActiveSSID() || e.getSSID() || e.getName(), - hostname: t, - mac: a.mac, - signal: a.signal, - noise: a.noise ?? null, - rxRate: a.rx?.rate ?? 0, - txRate: a.tx?.rate ?? 0 + hostname: n, + mac: r.mac, + signal: r.signal, + noise: r.noise ?? null, + rxRate: r.rx?.rate ?? 0, + txRate: r.tx?.rate ?? 0 }); } - return { - leases: function(e) { - let t = fluentdashboard_h(e), r = []; - if (Array.isArray(t.dhcp_leases)) for (let e of t.dhcp_leases){ - let t = fluentdashboard_h(e); - r.push({ - family: "IPv4", - hostname: fluentdashboard_m(t.hostname), - address: fluentdashboard_m(t.ipaddr), - identifier: fluentdashboard_m(t.macaddr), - expires: !1 !== t.expires && p(t.expires) - }); - } - if (Array.isArray(t.dhcp6_leases)) for (let e of t.dhcp6_leases){ - let t = fluentdashboard_h(e), a = Array.isArray(t.ip6addrs) ? t.ip6addrs.filter((e)=>"string" == typeof e) : []; - r.push({ - family: "IPv6", - hostname: fluentdashboard_m(t.hostname), - address: a.join(", ") || fluentdashboard_m(t.ip6addr), - identifier: fluentdashboard_m(t.duid), - expires: !1 !== t.expires && p(t.expires) - }); - } - return r; - }(e), - clients: s - }; + return a; } -function b(e) { +function registerSources(e) { + let t; + e.register({ + key: "system.board", + interval: 60000, + load: cards_l + }), e.register({ + key: "system.info", + interval: 3000, + load: cards_d + }), e.register({ + key: "system.version", + interval: 60000, + load: cards_c + }), e.register({ + key: "dhcp.leases", + interval: 15000, + load: async ()=>(function(e) { + let t = cards_m(e), r = []; + if (Array.isArray(t.dhcp_leases)) for (let e of t.dhcp_leases){ + let t = cards_m(e); + r.push({ + family: "IPv4", + hostname: cards_p(t.hostname), + address: cards_p(t.ipaddr), + identifier: cards_p(t.macaddr), + expires: !1 !== t.expires && cards_f(t.expires) + }); + } + if (Array.isArray(t.dhcp6_leases)) for (let e of t.dhcp6_leases){ + let t = cards_m(e), a = Array.isArray(t.ip6addrs) ? t.ip6addrs.filter((e)=>"string" == typeof e) : []; + r.push({ + family: "IPv6", + hostname: cards_p(t.hostname), + address: a.join(", ") || cards_p(t.ip6addr), + identifier: cards_p(t.duid), + expires: !1 !== t.expires && cards_f(t.expires) + }); + } + return r; + })(await cards_u()) + }); + let r = 0, a = async ()=>{ + !t && Date.now() - r > 1000 && (t = network.flushCache().then((e)=>(r = Date.now(), e)).finally(()=>{ + t = void 0; + })), await t; + }; + e.register({ + key: "network.interfaces", + interval: 3000, + load: async ()=>(await a(), (await network.getNetworks()).filter((e)=>"loopback" !== e.getName()).map((e)=>cards_h(e))) + }), e.register({ + key: "network.wan", + interval: 10000, + load: async ()=>{ + await a(); + let [e, t] = await Promise.all([ + network.getWANNetworks(), + network.getWAN6Networks() + ]); + return { + wan4: e.map((e)=>cards_h(e)), + wan6: t.map((e)=>cards_h(e, !0)) + }; + } + }), e.register({ + key: "wireless.radios", + interval: 15000, + load: async ()=>(await a(), cards_g()) + }), e.register({ + key: "wireless.clients", + interval: 10000, + load: async ()=>(await a(), cards_y()) + }), e.register({ + key: "network.hostHints", + interval: 60000, + load: ()=>network.getHostHints() + }); +} +function cards_w(e) { return null == e || "" === e ? "-" : String(e); } -function v(t) { +function cards_v(t) { return jsx("span", { class: `fluent-dashboard__status fluent-dashboard__status--${t ? "up" : "down"}`, children: t ? _("Online") : _("Offline") }); } -function A(r, a, s, n = !1) { +function cards_b(r, a, n, s = !1) { return jsxs("div", { - class: `fluent-dashboard__card${n ? " fluent-dashboard__card--wide" : ""}`, + class: `fluent-dashboard__card${s ? " fluent-dashboard__card--wide" : ""}`, "data-dashboard-section": r, children: [ jsx("h2", { @@ -328,12 +8379,12 @@ function A(r, a, s, n = !1) { }), jsx("div", { class: "fluent-dashboard__card-content", - children: s + children: n }) ] }); } -function S(r, a, s) { +function cards_x(r, a, n) { return jsx("div", { class: "fluent-dashboard__table-wrap", children: jsxs("table", { @@ -349,13 +8400,13 @@ function S(r, a, s) { jsx("tbody", { children: a.length ? a.map((t)=>jsx("tr", { children: t.map((t)=>jsx("td", { - children: t instanceof Node ? t : b(t) + children: t instanceof Node ? t : cards_w(t) })) })) : jsx("tr", { children: jsx("td", { class: "fluent-dashboard__empty", colSpan: r.length, - children: s + children: n }) }) }) @@ -363,8 +8414,8 @@ function S(r, a, s) { }) }); } -function x(t) { - return A("system", _("System"), jsx("div", { +function renderSystem(t) { + return cards_b("system", _("System"), jsx("div", { class: "fluent-dashboard__details", children: [ [ @@ -414,13 +8465,13 @@ function x(t) { }), jsx("div", { class: "fluent-dashboard__details-value", - children: r instanceof Node ? r : b(r) + children: r instanceof Node ? r : cards_w(r) }) ]) })); } -function I(a) { - let s = [ +function renderResources(a) { + let n = [ [ _("Memory"), a.memory @@ -438,9 +8489,9 @@ function I(a) { a.tmp ] ]; - return A("resources", _("Resources"), s.map(([a, s])=>{ - let n, i; - return n = Math.max(0, s.total - s.free), i = usedPercent(s), jsxs("div", { + return cards_b("resources", _("Resources"), n.map(([a, n])=>{ + let s, i; + return s = Math.max(0, n.total - n.free), i = usedPercent(n), jsxs("div", { class: "fluent-dashboard__meter", children: [ jsxs("div", { @@ -450,7 +8501,7 @@ function I(a) { children: a }), jsx("span", { - children: `${formatBytes(n)} / ${formatBytes(s.total)}` + children: `${formatBytes(s)} / ${formatBytes(n.total)}` }) ] }), @@ -469,7 +8520,7 @@ function I(a) { }); })); } -function N(e) { +function renderInternet(e) { let t = [ ...e.wan4.map((e)=>[ "IPv4", @@ -480,7 +8531,7 @@ function N(e) { e ]) ]; - return A("internet", _("Internet"), S([ + return cards_b("internet", _("Internet"), cards_x([ _("Family"), _("Interface"), _("Status"), @@ -491,15 +8542,15 @@ function N(e) { ], t.map(([e, t])=>[ e, t.name, - v(t.up), + cards_v(t.up), t.protocol, t.addresses.join(", "), t.gateway, formatDuration(t.uptime) ]), _("No Internet connection information is available.")), !0); } -function D(e) { - return A("interfaces", _("Interfaces"), S([ +function renderInterfaces(e) { + return cards_b("interfaces", _("Interfaces"), cards_x([ _("Interface"), _("Device"), _("Status"), @@ -509,14 +8560,14 @@ function D(e) { ], e.map((e)=>[ e.name, e.device, - v(e.up), + cards_v(e.up), e.addresses.join(", "), formatBytes(e.rx), formatBytes(e.tx) ]), _("No network interfaces were found.")), !0); } -function k(t) { - return A("wireless", _("Wireless"), S([ +function renderWireless(t) { + return cards_b("wireless", _("Wireless"), cards_x([ _("Radio"), _("SSID"), _("Status"), @@ -526,17 +8577,17 @@ function k(t) { ], t.map((t)=>[ jsx("span", { title: t.hardware, - children: b(t.radio) + children: cards_w(t.radio) }), t.ssid, - v(t.up), + cards_v(t.up), t.mode, null === t.channel ? "-" : t.frequency ? `${t.channel} (${t.frequency} GHz)` : t.channel, t.encryption ]), _("No wireless radios were found.")), !0); } -function C(e) { - return A("leases", _("Active DHCP Leases"), S([ +function renderLeases(e) { + return cards_b("leases", _("Active DHCP Leases"), cards_x([ _("Family"), _("Hostname"), _("Address"), @@ -553,11 +8604,11 @@ function C(e) { ]; }), _("There are no active DHCP leases.")), !0); } -function P(e) { +function A(e) { return e > 0 ? `${(e / 1000).toFixed(1)} ${_("Mbit/s")}` : "-"; } -function M(e) { - return A("clients", _("Wireless Clients"), S([ +function renderClients(e) { + return cards_b("clients", _("Wireless Clients"), cards_x([ _("Network"), _("Host"), _("MAC address"), @@ -568,87 +8619,757 @@ function M(e) { e.hostname, e.mac, null === e.noise ? `${e.signal} dBm` : `${e.signal} / ${e.noise} dBm`, - `${P(e.rxRate)} / ${P(e.txRate)}` + `${A(e.rxRate)} / ${A(e.txRate)}` ]), _("No wireless clients are connected.")), !0); } -class $ extends L.view { + + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/dom.ts +function reconcile(e, o) { + if (e.nodeType === Node.TEXT_NODE && o.nodeType === Node.TEXT_NODE) { + e.nodeValue !== o.nodeValue && (e.nodeValue = o.nodeValue); + return; + } + if (e instanceof Element && o instanceof Element) { + for (let t of Array.from(e.attributes))o.hasAttribute(t.name) || e.removeAttribute(t.name); + for (let t of Array.from(o.attributes))e.getAttribute(t.name) !== t.value && e.setAttribute(t.name, t.value); + } + let t = Array.from(o.childNodes); + for(t.forEach((o, t)=>{ + let n = e.childNodes[t]; + n ? n.nodeType !== o.nodeType || n.nodeName !== o.nodeName ? e.replaceChild(o.cloneNode(!0), n) : reconcile(n, o) : e.appendChild(o.cloneNode(!0)); + }); e.childNodes.length > t.length;)e.removeChild(e.lastChild); +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/table.ts +function filtered(e, t) { + let r = String(t.query ?? "").toLocaleLowerCase(), i = String(t.sortBy ?? ""), o = e.filter((e)=>!r || Object.values(e).some((e)=>String(e).toLocaleLowerCase().includes(r))); + return i && o.sort((e, r)=>{ + let o = e[i], n = r[i], l = "number" == typeof o && "number" == typeof n ? o - n : String(o ?? "").localeCompare(String(n ?? ""), void 0, { + numeric: !0 + }); + return t.descending ? -l : l; + }), o.slice(0, Number(t.limit ?? 200)); +} +function validTableConfig(e) { + return (void 0 === e.query || "string" == typeof e.query && e.query.length <= 256) && (void 0 === e.limit || Number.isInteger(e.limit) && Number(e.limit) >= 1 && 1000 >= Number(e.limit)) && (void 0 === e.sortBy || "string" == typeof e.sortBy && e.sortBy.length <= 64) && (void 0 === e.descending || "boolean" == typeof e.descending); +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/builtins.ts + + + + +class builtins_f { + context; + keys; + render; + container; + subscriptions = []; + states = new Map(); + visible = !1; + config; + constructor(e, t, s){ + this.context = e, this.keys = t, this.render = s, this.config = e.config; + } + mount(e) { + this.container = e, this.setVisible(!0); + } + updateConfig(e) { + this.config = e, this.paint(); + } + resize(e, t) {} + setVisible(e) { + if (this.visible !== e) { + for (let t of (this.visible = e, this.subscriptions))t(); + this.subscriptions = [], e && (this.subscriptions = this.keys.map((e)=>this.context.data.subscribe(e, (t)=>{ + this.states.set(e, t), this.paint(); + }))); + } + } + destroy() { + this.setVisible(!1), this.container = void 0, this.states.clear(); + } + paint() { + if (!this.container || !this.visible) return; + let e = this.keys.map((e)=>this.states.get(e)), t = e.find((e)=>e?.status === "error"); + if (this.context.setStatus(t ? t.stale ? _("Data is stale. Refresh to retry.") : _("Unable to load data. Refresh to retry.") : e.some((e)=>e?.data === void 0) ? _("Loading\u2026") : ""), e.some((e)=>e?.data === void 0)) return; + let s = this.render(this.states, this.config), i = s.querySelector(".fluent-dashboard__card-content") ?? s, r = document.createElement("div"); + for (let e of (r.className = this.container.className, Array.from(i.childNodes)))r.appendChild(e); + reconcile(this.container, r); + } +} +function registerBuiltins(l) { + let m = (e)=>normalizeSystemSnapshot(e.get("system.board")?.data, e.get("system.info")?.data, e.get("system.version")?.data), u = (t, s, i, r, a)=>l.register({ + type: t, + title: s, + description: s, + category: i, + icon: "", + version: 1, + supportedSizes: [ + "wide", + "large", + "xlarge", + "full", + "custom" + ], + defaultSize: "xlarge", + constraints: { + ...DEFAULT_CONSTRAINTS, + min: { + w: 2, + h: 4 + } + }, + defaultConfig: {}, + requiredData: r, + validateConfig: validTableConfig, + createInstance: (e)=>new builtins_f(e, r, a) + }); + u("system.info", _("System"), _("System"), [ + "system.board", + "system.info", + "system.version" + ], (e)=>renderSystem(m(e))), u("system.resources", _("Resources"), _("System"), [ + "system.info" + ], (e)=>renderResources(m(e))), u("network.internet", _("Internet"), _("Network"), [ + "network.wan" + ], (e)=>renderInternet(e.get("network.wan")?.data)), u("network.interfaces", _("Interfaces"), _("Network"), [ + "network.interfaces" + ], (e, t)=>renderInterfaces(filtered(e.get("network.interfaces")?.data, t))), u("wireless.radios", _("Wireless"), _("Wireless"), [ + "wireless.radios" + ], (e, t)=>renderWireless(filtered(e.get("wireless.radios")?.data, t))), u("dhcp.leases", _("Active DHCP Leases"), _("Clients"), [ + "dhcp.leases" + ], (e, t)=>renderLeases(filtered(e.get("dhcp.leases")?.data, t))), u("wireless.clients", _("Wireless Clients"), _("Clients"), [ + "wireless.clients" + ], (e, t)=>renderClients(filtered(e.get("wireless.clients")?.data, t))); +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/traffic.ts +function trafficRate(t, x) { + let r = (x.at - t.at) / 1000; + if (!(r <= 0) && Number.isFinite(r) && [ + t.rx, + t.tx, + x.rx, + x.tx + ].every((t)=>Number.isFinite(t) && t >= 0)) return { + rx: x.rx < t.rx ? 0 : (x.rx - t.rx) / r, + tx: x.tx < t.tx ? 0 : (x.tx - t.tx) / r + }; +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/metrics.ts + + + + +function metrics_l(e, t, i) { + let s = document.createElement(e); + return s.className = t, s.textContent = i, s; +} +function metrics_o(e) { + return normalizeSystemSnapshot(e.get("system.board")?.data, e.get("system.info")?.data, e.get("system.version")?.data); +} +function metrics_d(e, t) { + return e.get(t)?.data ?? []; +} +function metrics_c(e, t) { + return e.find((e)=>e.name === t.interface) ?? (t.interface ? void 0 : e[0]); +} +class metrics_u { + ctx; + sources; + calculate; + body; + off = []; + states = new Map(); + config; + visible = !1; + constructor(e, t, i){ + this.ctx = e, this.sources = t, this.calculate = i, this.config = e.config; + } + mount(e) { + this.body = e, this.setVisible(!0); + } + updateConfig(e) { + this.config = e, this.paint(); + } + resize(e, t) {} + setVisible(e) { + if (this.visible !== e) { + for (let t of (this.visible = e, this.off))t(); + this.off = [], e && (this.off = this.sources.map((e)=>this.ctx.data.subscribe(e, (t)=>{ + this.states.set(e, t), this.paint(); + }))); + } + } + destroy() { + this.setVisible(!1), this.body = void 0; + } + paint() { + if (!this.body) return; + let e = this.sources.map((e)=>this.states.get(e)); + if (this.ctx.setStatus(e.some((e)=>e?.status === "error") ? _("Data is stale or unavailable.") : e.some((e)=>e?.data === void 0) ? _("Loading\u2026") : ""), e.some((e)=>e?.data === void 0)) return; + let t = this.calculate(this.states, this.config), i = this.body.querySelector(":scope > .fluent-dashboard__metric"); + i || (i = metrics_l("div", "fluent-dashboard__metric", ""), this.body.replaceChildren(i)); + let s = i.querySelector(".fluent-dashboard__metric-value"); + s || (s = metrics_l("strong", "fluent-dashboard__metric-value", ""), i.append(s)), s.textContent = t.value; + let a = i.querySelector(".fluent-dashboard__metric-detail"); + t.detail ? (a || (a = metrics_l("span", "fluent-dashboard__metric-detail", ""), i.append(a)), a.textContent = t.detail) : a?.remove(); + let r = i.querySelector("progress"); + void 0 !== t.percent ? (r || (r = document.createElement("progress"), i.append(r)), r.max = 100, r.value = t.percent, r.setAttribute("aria-label", t.detail ?? _("Usage"))) : r?.remove(); + } +} +class metrics_f { + ctx; + body; + off; + config; + samples = []; + last; + sampledAt; + state; + visible = !1; + constructor(e){ + this.ctx = e, this.config = e.config; + } + mount(e) { + this.body = e, this.setVisible(!0); + } + updateConfig(e) { + this.config = e, this.samples = [], this.last = void 0, this.sampledAt = void 0, this.paint(); + } + resize(e, t) {} + setVisible(e) { + this.visible !== e && (this.visible = e, this.off?.(), this.off = void 0, e && (this.off = this.ctx.data.subscribe("network.interfaces", (e)=>{ + this.state = e, "ready" === e.status && e.updatedAt && e.updatedAt !== this.sampledAt && (this.sample(e.data ?? [], e.updatedAt), this.sampledAt = e.updatedAt), this.paint(); + }))); + } + destroy() { + this.setVisible(!1), this.body = void 0; + } + sample(e, t) { + let i = metrics_c(e, this.config); + if (!i) { + this.last = void 0; + return; + } + let s = this.last; + if (s && s.name === i.name) { + let e = trafficRate(s, { + rx: i.rx, + tx: i.tx, + at: t + }); + e && this.samples.push(e), this.samples = this.samples.slice(-Number(this.config.history ?? 40)); + } + this.last = { + name: i.name, + rx: i.rx, + tx: i.tx, + at: t + }; + } + paint() { + if (!this.body || (this.ctx.setStatus(this.state?.status === "error" ? _("Data is stale or unavailable.") : this.state?.data ? "" : _("Loading\u2026")), !this.state?.data)) return; + let e = this.body.querySelector(":scope > .fluent-dashboard__traffic"); + e || (e = metrics_l("div", "fluent-dashboard__traffic", ""), this.body.replaceChildren(e)); + let i = metrics_c(this.state.data, this.config), s = e.querySelector(".fluent-dashboard__metric-detail"); + s || (s = metrics_l("span", "fluent-dashboard__metric-detail", ""), e.append(s)), s.textContent = i?.name ?? _("No interface available"); + let a = this.samples.at(-1), r = e.querySelector(".fluent-dashboard__metric-value"); + if (r || (r = metrics_l("strong", "fluent-dashboard__metric-value", ""), e.append(r)), r.textContent = a ? `${_("Down")} ${formatBytes(a.rx)}/s \xb7 ${_("Up")} ${formatBytes(a.tx)}/s` : _("Waiting for second sample\u2026"), e.querySelector("svg")?.remove(), this.samples.length > 1) { + let t = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + t.setAttribute("viewBox", "0 0 100 40"), t.setAttribute("preserveAspectRatio", "none"), t.setAttribute("role", "img"), t.setAttribute("aria-label", _("Receive and transmit throughput history")); + let i = Math.max(1, ...this.samples.flatMap((e)=>[ + e.rx, + e.tx + ])); + for (let e of [ + "rx", + "tx" + ]){ + let s = document.createElementNS("http://www.w3.org/2000/svg", "polyline"); + s.setAttribute("class", `fluent-dashboard__traffic-${e}`), s.setAttribute("points", this.samples.map((t, s)=>`${(100 * s / (this.samples.length - 1)).toFixed(2)},${(39 - t[e] / i * 38).toFixed(2)}`).join(" ")), t.append(s); + } + e.append(t); + } + } +} +function registerMetrics(r) { + let n = (t, i, s, a, n, l = {})=>r.register({ + type: t, + title: i, + description: i, + category: s, + icon: "", + version: 1, + defaultSize: "medium", + supportedSizes: [ + "medium", + "wide", + "large", + "xlarge", + "full", + "custom" + ], + constraints: { + ...DEFAULT_CONSTRAINTS, + min: { + w: 2, + h: 2 + } + }, + defaultConfig: l.interface ? { + interface: "" + } : l.radio ? { + radio: "" + } : {}, + requiredData: a, + validateConfig: (e)=>(!l.interface || void 0 === e.interface || "string" == typeof e.interface && e.interface.length <= 64) && (!l.radio || void 0 === e.radio || "string" == typeof e.radio && e.radio.length <= 64), + createInstance: (e)=>new metrics_u(e, a, n) + }); + for (let [e, r, l] of (n("system.hostname", _("Device name"), _("System"), [ + "system.board", + "system.info", + "system.version" + ], (e)=>({ + value: metrics_o(e).hostname || "\u2013", + detail: metrics_o(e).model + })), n("system.uptime", _("Uptime"), _("System"), [ + "system.info" + ], (e)=>({ + value: formatDuration(metrics_o(e).uptime) + })), n("system.load", _("System load"), _("System"), [ + "system.info" + ], (e)=>({ + value: formatLoad(metrics_o(e).load), + detail: _("1 / 5 / 15 minutes") + })), n("system.firmware", _("Firmware"), _("System"), [ + "system.board" + ], (e)=>({ + value: metrics_o(e).firmware || "\u2013", + detail: metrics_o(e).target + })), n("system.kernel", _("Kernel"), _("System"), [ + "system.board" + ], (e)=>({ + value: metrics_o(e).kernel || "\u2013", + detail: metrics_o(e).architecture + })), [ + [ + "memory", + _("Memory"), + "memory" + ], + [ + "swap", + _("Swap"), + "swap" + ], + [ + "root", + _("Root storage"), + "root" + ], + [ + "tmp", + _("Temporary storage"), + "tmp" + ] + ]))n(`system.${e}`, r, _("Resources"), [ + "system.info" + ], (e)=>{ + let i = metrics_o(e)[l]; + return i.total ? { + value: `${Math.round(usedPercent(i))}%`, + detail: `${formatBytes(i.total - i.free)} / ${formatBytes(i.total)}`, + percent: usedPercent(i) + } : { + value: _("Not available") + }; + }); + n("network.interface-status", _("Interface status"), _("Network"), [ + "network.interfaces" + ], (e, t)=>{ + let i = metrics_c(metrics_d(e, "network.interfaces"), t); + return { + value: i ? i.up ? _("Online") : _("Offline") : _("Not available"), + detail: i ? `${i.name} \xb7 ${i.protocol}` : void 0 + }; + }, { + interface: !0 + }), n("network.interface-address", _("Interface address"), _("Network"), [ + "network.interfaces" + ], (e, t)=>{ + let i = metrics_c(metrics_d(e, "network.interfaces"), t); + return { + value: i?.addresses.join(", ") || "\u2013", + detail: i?.name + }; + }, { + interface: !0 + }), n("network.interface-traffic", _("Interface bytes"), _("Network"), [ + "network.interfaces" + ], (e, i)=>{ + let s = metrics_c(metrics_d(e, "network.interfaces"), i); + return { + value: s ? `${formatBytes(s.rx)} \u{2193} ${formatBytes(s.tx)} \u{2191}` : "\u2013", + detail: s ? `${s.name} \xb7 ${_("Cumulative counters")}` : void 0 + }; + }, { + interface: !0 + }), n("network.wan-status", _("WAN status"), _("Network"), [ + "network.wan" + ], (e)=>{ + let t = e.get("network.wan")?.data, i = [ + ...t.wan4, + ...t.wan6 + ][0]; + return { + value: i ? i.up ? _("Online") : _("Offline") : _("Not available"), + detail: i?.addresses.join(", ") + }; + }), n("network.interface-count", _("Active interfaces"), _("Network"), [ + "network.interfaces" + ], (e)=>({ + value: String(metrics_d(e, "network.interfaces").filter((e)=>e.up).length), + detail: _("Connected network interfaces") + })), n("network.interface-uptime", _("Interface uptime"), _("Network"), [ + "network.interfaces" + ], (e, t)=>{ + let s = metrics_c(metrics_d(e, "network.interfaces"), t); + return { + value: s?.up ? formatDuration(s.uptime) : _("Offline"), + detail: s?.name + }; + }, { + interface: !0 + }), n("network.interface-gateway", _("Interface gateway"), _("Network"), [ + "network.interfaces" + ], (e, t)=>{ + let i = metrics_c(metrics_d(e, "network.interfaces"), t); + return { + value: i?.gateway || _("Not available"), + detail: i?.name + }; + }, { + interface: !0 + }), n("network.interface-protocol", _("Interface protocol"), _("Network"), [ + "network.interfaces" + ], (e, t)=>{ + let i = metrics_c(metrics_d(e, "network.interfaces"), t); + return { + value: i?.protocol || _("Not available"), + detail: i?.name + }; + }, { + interface: !0 + }), n("wireless.radio-count", _("Active Wi-Fi networks"), _("Wireless"), [ + "wireless.radios" + ], (e)=>({ + value: String(metrics_d(e, "wireless.radios").filter((e)=>e.up).length) + })), n("wireless.ssid-count", _("Broadcast SSIDs"), _("Wireless"), [ + "wireless.radios" + ], (e)=>({ + value: String(new Set(metrics_d(e, "wireless.radios").filter((e)=>e.up && e.ssid).map((e)=>e.ssid)).size) + })), n("wireless.radio-status", _("Radio status"), _("Wireless"), [ + "wireless.radios" + ], (e, t)=>{ + let i = metrics_d(e, "wireless.radios"), s = i.find((e)=>e.radio === t.radio) ?? (t.radio ? void 0 : i[0]); + return { + value: s ? s.up ? _("Online") : _("Offline") : _("Not available"), + detail: s ? `${s.radio} \xb7 ${s.ssid}` : void 0 + }; + }, { + radio: !0 + }), n("wireless.channel", _("Wi-Fi channel"), _("Wireless"), [ + "wireless.radios" + ], (e, t)=>{ + let i = metrics_d(e, "wireless.radios"), s = i.find((e)=>e.radio === t.radio) ?? (t.radio ? void 0 : i[0]); + return { + value: s?.channel == null ? _("Not available") : String(s.channel), + detail: s ? `${s.radio} \xb7 ${s.frequency}` : void 0 + }; + }, { + radio: !0 + }), n("wireless.client-count", _("Wireless client count"), _("Wireless"), [ + "wireless.clients" + ], (e)=>({ + value: String(metrics_d(e, "wireless.clients").length) + })), n("wireless.average-signal", _("Average Wi-Fi signal"), _("Wireless"), [ + "wireless.clients" + ], (e)=>{ + let t = metrics_d(e, "wireless.clients").map((e)=>e.signal).filter(Number.isFinite); + return { + value: t.length ? `${Math.round(t.reduce((e, t)=>e + t, 0) / t.length)} dBm` : _("No clients"), + detail: `${t.length} ${_("clients")}` + }; + }), n("dhcp.lease-count", _("DHCP lease count"), _("Clients"), [ + "dhcp.leases" + ], (e)=>({ + value: String(metrics_d(e, "dhcp.leases").length) + })), n("dhcp.ipv6-count", _("IPv6 lease count"), _("Clients"), [ + "dhcp.leases" + ], (e)=>({ + value: String(metrics_d(e, "dhcp.leases").filter((e)=>"IPv6" === e.family).length) + })), n("dhcp.ipv4-count", _("IPv4 lease count"), _("Clients"), [ + "dhcp.leases" + ], (e)=>({ + value: String(metrics_d(e, "dhcp.leases").filter((e)=>"IPv4" === e.family).length) + })), n("wireless.strongest-signal", _("Strongest Wi-Fi signal"), _("Wireless"), [ + "wireless.clients" + ], (e)=>{ + let t = metrics_d(e, "wireless.clients").filter((e)=>Number.isFinite(e.signal)).reduce((e, t)=>!e || t.signal > e.signal ? t : e, void 0); + return { + value: t ? `${t.signal} dBm` : _("No clients"), + detail: t?.hostname || t?.mac + }; + }), r.register({ + type: "network.traffic-trend", + title: _("Live traffic trend"), + description: _("Receive and transmit bytes per second"), + category: _("Network"), + icon: "", + version: 1, + defaultSize: "wide", + supportedSizes: [ + "wide", + "large", + "xlarge", + "full", + "custom" + ], + constraints: { + ...DEFAULT_CONSTRAINTS, + min: { + w: 3, + h: 2 + } + }, + defaultConfig: { + interface: "", + history: 40 + }, + requiredData: [ + "network.interfaces" + ], + validateConfig: (e)=>"string" == typeof e.interface && e.interface.length <= 64 && Number.isInteger(e.history) && Number(e.history) >= 10 && 120 >= Number(e.history), + createInstance: (e)=>new metrics_f(e) + }); +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/registry.ts +class WidgetRegistry { + definitions = new Map(); + register(i) { + if (this.definitions.has(i.type)) throw Error(`Duplicate widget: ${i.type}`); + if (!i.validateConfig(i.defaultConfig)) throw Error(`Invalid default config: ${i.type}`); + this.definitions.set(i.type, i); + } + get(i) { + return this.definitions.get(i); + } + list() { + return [ + ...this.definitions.values() + ]; + } +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/widgets/shortcuts.ts + +let shortcuts_t = [ + { + id: "status", + label: ()=>_("System status"), + path: [ + "admin", + "status", + "overview" + ] + }, + { + id: "interfaces", + label: ()=>_("Interfaces"), + path: [ + "admin", + "network", + "network" + ] + }, + { + id: "wireless", + label: ()=>_("Wireless"), + path: [ + "admin", + "network", + "wireless" + ] + }, + { + id: "dhcp", + label: ()=>_("DHCP and DNS"), + path: [ + "admin", + "network", + "dhcp" + ] + }, + { + id: "firewall", + label: ()=>_("Firewall"), + path: [ + "admin", + "network", + "firewall" + ] + }, + { + id: "system", + label: ()=>_("System settings"), + path: [ + "admin", + "system", + "system" + ] + } +]; +class shortcuts_i { + container; + config; + constructor(e){ + this.config = e.config; + } + mount(e) { + this.container = e, this.paint(); + } + updateConfig(e) { + this.config = e, this.paint(); + } + resize(e, t) {} + setVisible(e) {} + destroy() { + this.container = void 0; + } + paint() { + if (!this.container) return; + let e = document.createElement("nav"); + for (let i of (e.className = "fluent-dashboard__shortcuts", shortcuts_t)){ + if (Array.isArray(this.config.links) && !this.config.links.includes(i.id)) continue; + let t = document.createElement("a"); + t.href = L.url(...i.path), t.textContent = i.label(), e.append(t); + } + this.container.replaceChildren(e); + } +} +function registerShortcuts(n) { + n.register({ + type: "navigation.shortcuts", + title: _("Quick links"), + description: _("Open common LuCI pages"), + category: _("Navigation"), + icon: "", + version: 1, + defaultSize: "wide", + supportedSizes: [ + "medium", + "wide", + "large", + "xlarge", + "full", + "custom" + ], + constraints: { + ...DEFAULT_CONSTRAINTS, + min: { + w: 2, + h: 2 + } + }, + defaultConfig: { + links: shortcuts_t.map((e)=>e.id) + }, + requiredData: [], + validateConfig: (e)=>Array.isArray(e.links) && e.links.length <= shortcuts_t.length && new Set(e.links).size === e.links.length && e.links.every((e)=>"string" == typeof e && shortcuts_t.some((t)=>t.id === e)), + createInstance: (e)=>new shortcuts_i(e) + }); +} + +;// CONCATENATED MODULE: ./web/fluentdashboard/index.tsx + + + + + + + + + +let fluentdashboard_a = rpc.declare({ + object: "luci.fluentdashboard", + method: "load", + reject: !0 +}), fluentdashboard_l = rpc.declare({ + object: "luci.fluentdashboard", + method: "save", + params: [ + "layout", + "expectedRevision" + ], + reject: !0 +}), fluentdashboard_h = rpc.declare({ + object: "session", + method: "access", + params: [ + "scope", + "object", + "function" + ], + expect: { + access: !1 + } +}); +class fluentdashboard_m extends L.view { handleSave = null; handleSaveApply = null; handleReset = null; - root = null; - load() { - return Promise.all([ - g(), - w() + workbench; + observer; + persistence; + async load() { + let e; + try { + e = window.localStorage; + } catch {} + return this.persistence = new DashboardPersistence({ + load: fluentdashboard_a, + save: fluentdashboard_l + }, e, `fluentdashboard.draft.v1:${location.host}`), Promise.all([ + this.persistence.load(), + fluentdashboard_h("ubus", "luci.fluentdashboard", "save").catch(()=>!1) ]); } - replaceSection(e, t) { - this.root?.querySelector(`[data-dashboard-section="${e}"]`)?.replaceWith(t); - } - async refreshSummary() { - if (!this.root?.isConnected) return; - let e = await g(); - if (!this.root?.isConnected) return; - this.replaceSection("system", x(e.system)), this.replaceSection("resources", I(e.system)), this.replaceSection("internet", N(e)), this.replaceSection("interfaces", D(e.interfaces)), this.replaceSection("wireless", k(e.wireless)); - let t = this.root.querySelector("[data-dashboard-updated]"); - t && (t.textContent = e.updatedAt.toLocaleTimeString()); - } - async refreshDetails() { - if (!this.root?.isConnected) return; - let e = await w(); - this.root?.isConnected && (this.replaceSection("leases", C(e.leases)), this.replaceSection("clients", M(e.clients))); - } render([r, a]) { - return document.getElementById("fluent-dashboard-styles") || document.head.appendChild(jsx("link", { + window.document.getElementById("fluent-dashboard-styles") || window.document.head.appendChild(jsx("link", { id: "fluent-dashboard-styles", rel: "stylesheet", href: L.resource("view/fluentdashboard/index.css") - })), this.root = jsxs("div", { - class: "fluent-dashboard", - children: [ - jsxs("div", { - class: "fluent-dashboard__header", - children: [ - jsxs("div", { - children: [ - jsx("h1", { - children: _("Fluent Dashboard") - }), - jsx("p", { - children: _("A live overview of this OpenWrt device.") - }) - ] - }), - jsxs("p", { - class: "fluent-dashboard__updated", - children: [ - _("Updated"), - " ", - jsx("time", { - "data-dashboard-updated": "", - children: r.updatedAt.toLocaleTimeString() - }) - ] - }) - ] - }), - jsxs("div", { - class: "fluent-dashboard__grid", - children: [ - x(r.system), - I(r.system), - N(r), - D(r.interfaces), - k(r.wireless), - C(a.leases), - M(a.clients) - ] - }) - ] - }), poll.add(()=>this.refreshSummary(), 5), poll.add(()=>this.refreshDetails(), 15), this.root; + })), this.workbench?.destroy(), this.observer?.disconnect(); + let l = new DataService(); + registerSources(l), l.observeVisibility(window.document); + let h = new WidgetRegistry(); + registerBuiltins(h), registerMetrics(h), registerShortcuts(h), this.workbench = new Workbench(r, h, l, this.persistence, a); + let m = this.workbench.root, u = !1; + return this.observer = new MutationObserver(()=>{ + m.isConnected ? u = !0 : u && (this.workbench?.destroy(), this.observer?.disconnect()); + }), this.observer.observe(window.document.body, { + childList: !0, + subtree: !0 + }), m; } } -const main = $; +const main = fluentdashboard_m; return main; \ No newline at end of file diff --git a/luci-mod-fluentdashboard/root/etc/config/fluentdashboard b/luci-mod-fluentdashboard/root/etc/config/fluentdashboard new file mode 100644 index 000000000..2ee3afaad --- /dev/null +++ b/luci-mod-fluentdashboard/root/etc/config/fluentdashboard @@ -0,0 +1,3 @@ +config dashboard 'global' + option schema_version '1' + option revision '0' diff --git a/luci-mod-fluentdashboard/root/usr/share/rpcd/acl.d/luci-mod-fluentdashboard.json b/luci-mod-fluentdashboard/root/usr/share/rpcd/acl.d/luci-mod-fluentdashboard.json index 39d80d304..adff696e8 100644 --- a/luci-mod-fluentdashboard/root/usr/share/rpcd/acl.d/luci-mod-fluentdashboard.json +++ b/luci-mod-fluentdashboard/root/usr/share/rpcd/acl.d/luci-mod-fluentdashboard.json @@ -6,8 +6,17 @@ "iwinfo": [ "assoclist" ], "luci": [ "getVersion" ], "luci-rpc": [ "getDHCPLeases" ], + "luci.fluentdashboard": [ "load" ], "system": [ "board", "info" ] } } + }, + "luci-mod-fluentdashboard-edit": { + "description": "Grant permission to publish the shared Fluent dashboard layout", + "write": { + "ubus": { + "luci.fluentdashboard": [ "save" ] + } + } } } diff --git a/luci-mod-fluentdashboard/root/usr/share/rpcd/ucode/luci.fluentdashboard b/luci-mod-fluentdashboard/root/usr/share/rpcd/ucode/luci.fluentdashboard new file mode 100644 index 000000000..bf97196c4 --- /dev/null +++ b/luci-mod-fluentdashboard/root/usr/share/rpcd/ucode/luci.fluentdashboard @@ -0,0 +1,120 @@ +'use strict'; + +import { open, readfile, writefile, rename, unlink, mkdtemp, rmdir } from 'fs'; +import { cursor } from 'uci'; + +const config = '/etc/config/fluentdashboard'; +const max_size = 262144; +function require_value(ok, message) { if (!ok) die(message); } +function integer(v, min, max) { return type(v) == 'int' && v >= min && v <= max; } +function id(v) { return type(v) == 'string' && match(v, /^[A-Za-z0-9_-]{1,64}$/); } +function safe_json(v, depth) { + if (depth > 16) return false; + if (type(v) == 'object' || type(v) == 'array') { + for (let k, item in v) { + if (k in [ '__proto__', 'constructor', 'prototype' ] || !safe_json(item, depth + 1)) return false; + } + } + return true; +} +function validate(doc) { + require_value(type(doc) == 'object' && doc.schemaVersion == 1 && safe_json(doc, 0), 'Invalid schema'); + require_value(integer(doc.revision, 0, 9007199254740990), 'Invalid revision'); + require_value(type(doc.dashboards) == 'array' && length(doc.dashboards) >= 1 && length(doc.dashboards) <= 16, 'Invalid dashboards'); + let dashboards = {}; + for (let dashboard in doc.dashboards) { + require_value(type(dashboard) == 'object' && id(dashboard.id) && !exists(dashboards, dashboard.id), 'Invalid dashboard id'); + dashboards[dashboard.id] = true; + require_value(type(dashboard.name) == 'string' && length(trim(dashboard.name)) && length(dashboard.name) <= 128, 'Invalid name'); + require_value(type(dashboard.nodes) == 'array' && length(dashboard.nodes) <= 120, 'Too many nodes'); + let nodes = {}; + for (let node in dashboard.nodes) { + require_value(type(node) == 'object' && id(node.id) && !exists(nodes, node.id), 'Invalid node id'); + nodes[node.id] = node; + require_value(node.kind in [ 'widget', 'group' ] && exists(node, 'parentId') && (node.parentId == null || id(node.parentId)), 'Invalid node'); + for (let flag in [ 'hidden', 'locked', 'collapsed' ]) require_value(!exists(node, flag) || type(node[flag]) == 'bool', 'Invalid flag'); + require_value(!exists(node, 'title') || (type(node.title) == 'string' && length(node.title) <= 256), 'Invalid title'); + let t = node.tile; + require_value(type(t) == 'object' && t.size in [ 'small', 'medium', 'wide', 'large', 'xlarge', 'full', 'custom' ], 'Invalid tile'); + require_value(integer(t.x, 0, 11) && integer(t.y, 0, 10000) && integer(t.w, 1, 12) && integer(t.h, 1, 48) && integer(t.order, 0, 100000), 'Invalid coordinates'); + if (node.kind == 'widget') + require_value(type(node.widgetType) == 'string' && match(node.widgetType, /^[A-Za-z0-9_.-]{1,128}$/) && integer(node.widgetVersion, 1, 100000) && type(node.config) == 'object', 'Invalid widget'); + else { + require_value(type(node.title) == 'string', 'Invalid group title'); + require_value(!exists(node, 'description') || (type(node.description) == 'string' && length(node.description) <= 2048), 'Invalid description'); + } + } + for (let node in dashboard.nodes) { + let seen = {}; seen[node.id] = true; + let parent = node.parentId, depth = node.kind == 'group' ? 1 : 0; + while (parent != null) { + require_value(!exists(seen, parent) && nodes[parent]?.kind == 'group', 'Invalid parent graph'); + seen[parent] = true; + require_value(++depth <= 2, 'Too many group levels'); + parent = nodes[parent].parentId; + } + require_value(node.tile.x + node.tile.w <= (node.parentId == null ? 12 : nodes[node.parentId].tile.w), 'Tile outside parent'); + } + } + require_value(type(doc.defaultDashboardId) == 'string' && exists(dashboards, doc.defaultDashboardId), 'Invalid default dashboard'); + require_value(!exists(doc, 'meta') || type(doc.meta) == 'object', 'Invalid metadata'); +} + +function load_document() { + const uci = cursor('/etc/config', '/var/lock', ''); + require_value(uci.load('fluentdashboard'), 'Cannot read dashboard configuration'); + let raw = uci.get('fluentdashboard', 'global', 'layout'); + let revision = int(uci.get('fluentdashboard', 'global', 'revision')); + require_value(integer(revision, 0, 9007199254740990), 'Invalid stored revision'); + if (!raw && revision == 0) return { document: null, revision: 0 }; + require_value(type(raw) == 'string' && length(raw) <= max_size, 'Invalid stored layout'); + let doc = json(raw); + validate(doc); + require_value(doc.revision == revision, 'Stored revision mismatch'); + return { document: doc, revision }; +} + +function save_document(args) { + require_value(type(args.layout) == 'string' && length(args.layout) <= max_size, 'Layout too large'); + let doc = json(args.layout); + validate(doc); + require_value(integer(args.expectedRevision, 0, 9007199254740989) && doc.revision == args.expectedRevision, 'Invalid expected revision'); + const current = load_document(); + if (current.revision != args.expectedRevision) return { error: 'conflict', revision: current.revision }; + doc.revision = current.revision + 1; + // Isolated UCI cursor: no global /tmp/.uci deltas, commit then atomic same-filesystem rename. + const staging = mkdtemp('/etc/config/.fluentdashboard-XXXXXX'); + require_value(staging, 'Cannot create staging directory'); + let result; + try { + const old = readfile(config); + require_value(old != null && writefile(staging + '/fluentdashboard', old) == length(old), 'Cannot stage config'); + const uci = cursor(staging, staging, ''); + require_value(uci.load('fluentdashboard'), 'Cannot load staged config'); + require_value(uci.set('fluentdashboard', 'global', 'layout', sprintf('%J', doc)) && uci.set('fluentdashboard', 'global', 'revision', sprintf('%d', doc.revision)) && uci.set('fluentdashboard', 'global', 'schema_version', '1'), 'Cannot set config'); + require_value(uci.commit('fluentdashboard'), 'Cannot commit config'); + require_value(writefile(staging + '/previous', old) == length(old) && rename(staging + '/previous', config + '.previous'), 'Cannot preserve previous config'); + require_value(rename(staging + '/fluentdashboard', config), 'Cannot publish config'); + result = { document: doc, revision: doc.revision }; + } catch (error) { result = { error: 'storage', message: `${error}` }; } + unlink(staging + '/fluentdashboard'); unlink(staging + '/previous'); rmdir(staging); + return result; +} + +return { + 'luci.fluentdashboard': { + load: { call: function() { try { return load_document(); } catch (error) { return { error: 'corrupt', message: `${error}` }; } } }, + save: { + args: { layout: '', expectedRevision: 0 }, + call: function(request) { + const lock = open('/var/lock/fluentdashboard.lock', 'a', 0600); + if (!lock) return { error: 'storage', message: 'Cannot open lock' }; + if (!lock.lock('xn')) { lock.close(); return { error: 'busy', message: 'Another save is in progress' }; } + let result; + try { result = save_document(request.args); } catch (error) { result = { error: 'invalid', message: `${error}` }; } + lock.close(); + return result; + } + } + } +}; diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js index 3e859a156..38e4b0cd1 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js @@ -307,16 +307,6 @@ function loadIwinfoInfoMap(force) { return Promise.all(queryTargets.map((name) => L.resolveDefault(callIwinfoInfoCompat(name), null).then((info) => [ name, info ]) )).then(async (entries) => { - await Promise.all(entries.map(async ([ name, info ]) => { - const iface = uci.sections('wireless', 'wifi-iface').find((iface) => - isQcaWifiHwtype(uci.get('wireless', iface.device, 'type')) && - resolver.aliasMap[iface['.name']] == name); - if (!iface || info?.mode != 'Master' || !/^ath\d+(?:\.\d+)?$/.test(name)) - return; - const output = await L.resolveDefault(fs.exec_direct('/usr/sbin/cfg80211tool', - [ name, 'get_maxrate' ]), ''); - info.theoretical_bitrate = parseQcaMaxPhyRate(output); - })); const phyQueries = {}; for (const [ name, info ] of entries) { if (info?.hardware?.id?.[0] != 0x14c3 || !/^phy\d+$/.test(info?.phy || '')) @@ -948,13 +938,13 @@ function getFrequencyListBand(entry, hwmode) { return null; } -function normalizeIwinfoBitRate(rate) { +function normalizeIwinfoBitRate(rate, inKbit = false) { rate = +rate; if (isNaN(rate) || rate <= 0) return null; - return (rate > 100000) ? (rate / 1000) : rate; + return (inKbit || rate > 100000) ? (rate / 1000) : rate; } function getIwinfoInfoCandidates(radioNet) { @@ -982,9 +972,10 @@ function getIwinfoInfoCandidates(radioNet) { } function getDisplayIwinfoBitRate(radioNet) { + const inKbit = isQcaWifiHwtype(uci.get('wireless', radioNet.getWifiDeviceName(), 'type')); for (const candidate of getIwinfoInfoCandidates(radioNet)) { const info = cachedIwinfoInfoMap ? cachedIwinfoInfoMap[candidate] : null; - const rate = normalizeIwinfoBitRate(info != null ? info.bitrate : null); + const rate = normalizeIwinfoBitRate(info != null ? info.bitrate : null, inKbit); if (rate != null) return rate; @@ -1022,21 +1013,16 @@ function getDisplayTheoreticalBitRate(radioNet) { return null; for (const candidate of getIwinfoInfoCandidates(radioNet)) { - const rate = cachedIwinfoInfoMap?.[candidate]?.theoretical_bitrate; + const info = cachedIwinfoInfoMap?.[candidate]; + /* QSDK SIOCGIWRATE reports the BSS PHY ceiling in kbit/s. */ + const rate = isQcaWifiHwtype(hwtype) + ? +info?.bitrate / 1000 : info?.theoretical_bitrate; if (rate > 0) return rate; } return null; } -/* QSDK returns the running BSS PHY ceiling in kbit/s, including its - * bandwidth-dependent NSS mapping. Never infer it from client rates. */ -function parseQcaMaxPhyRate(output) { - const match = String(output || '').match(/\bget_maxrate:\s*(\d+)\s*$/m); - const rate = match ? +match[1] : 0; - return rate > 0 ? Math.round(rate / 100) / 10 : null; -} - function getDisplayBitRate(radioNet) { if (isQcaWifiHwtype(uci.get('wireless', radioNet.getWifiDeviceName(), 'type')) && radioNet.getMode() == 'ap') diff --git a/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json b/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json index 7f589c938..b2b2479c3 100644 --- a/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json +++ b/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json @@ -8,7 +8,6 @@ "/proc/sys/net/ipv6/conf/*/mtu": [ "read" ], "/proc/sys/net/ipv6/conf/*/hop_limit": [ "read" ], "/usr/sbin/iw": [ "exec" ], - "/usr/sbin/cfg80211tool ath* get_maxrate": [ "exec" ], "/usr/libexec/luci-peeraddr": [ "exec" ], "/usr/sbin/wlanconfig": [ "exec" ], "/proc/sys/net/ipv[46]/conf/*": [ "read" ], diff --git a/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js b/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js index b471fe813..b1b6d4de5 100644 --- a/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js +++ b/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js @@ -136,6 +136,30 @@ function findStorageSize(procmtd, procpart, procmounts) { } +function loadEmmcPartitions() { + const devices = Object.create(null); + + return L.resolveDefault(fs.list('/sys/class/block'), []).then(entries => + Promise.all(entries.filter(entry => /^mmcblk\d+(?:p\d+|boot[01])$/.test(entry.name)).map(async entry => { + const name = entry.name; + const disk = name.match(/^(mmcblk\d+)/)[1]; + devices[disk] ??= L.resolveDefault(fs.trimmed(`/sys/class/block/${disk}/device/type`), ''); + if (await devices[disk] != 'MMC') + return null; + + const [ uevent, sectors ] = await Promise.all([ + L.resolveDefault(fs.read(`/sys/class/block/${name}/uevent`), ''), + L.resolveDefault(fs.trimmed(`/sys/class/block/${name}/size`), '0') + ]); + const size = +sectors * 512; + if (!Number.isSafeInteger(size) || size <= 0) + return null; + + return { device: name, name: uevent.match(/^PARTNAME=(.+)$/m)?.[1] || name, size }; + })) + ).then(partitions => partitions.filter(Boolean).sort((a, b) => L.naturalCompare(a.device, b.device))); +} + const mapdata = { actions: {}, config: {} }; return view.extend({ @@ -145,7 +169,8 @@ return view.extend({ fs.trimmed('/proc/sys/kernel/hostname'), fs.trimmed('/proc/mtd'), fs.trimmed('/proc/partitions'), - fs.trimmed('/proc/mounts') + fs.trimmed('/proc/mounts'), + loadEmmcPartitions() ]; return Promise.all(tasks); @@ -243,18 +268,19 @@ return view.extend({ .finally(function() { btn.firstChild.data = _('Upload archive...') }); }, - handleBlock(hostname, ev) { - const mtdblock = dom.parent(ev.target, '.cbi-section').querySelector('[data-name="mtdselect"] select'); - const mtdnumber = mtdblock.value; - const mtdname = mtdblock.selectedOptions[0].text.replace(/([^a-zA-Z0-9]+)/g, '-'); + handleBlock(hostname, selector, ev) { + const block = dom.parent(ev.target, '.cbi-section').querySelector('[data-name="%s"] select'.format(selector)); + const device = selector == 'mtdselect' ? 'mtdblock' + block.value : block.value; + const name = block.selectedOptions[0].text.replace(/([^a-zA-Z0-9]+)/g, '-'); + const id = selector == 'mtdselect' ? 'mtd' + block.value : device; const form = E('form', { 'method': 'post', 'action': L.env.cgi_base + '/cgi-download', 'enctype': 'application/x-www-form-urlencoded' }, [ E('input', { 'type': 'hidden', 'name': 'sessionid', 'value': rpc.getSessionID() }), - E('input', { 'type': 'hidden', 'name': 'path', 'value': '/dev/mtdblock%d'.format(mtdnumber) }), - E('input', { 'type': 'hidden', 'name': 'filename', 'value': '%s.mtd%d.%s.bin'.format(hostname, mtdnumber, mtdname) }) + E('input', { 'type': 'hidden', 'name': 'path', 'value': '/dev/' + device }), + E('input', { 'type': 'hidden', 'name': 'filename', 'value': '%s.%s.%s.bin'.format(hostname, id, name) }) ]); ev.currentTarget.parentNode.appendChild(form); @@ -452,7 +478,7 @@ return view.extend({ }); }, - render([p_fstat, hostname, procmtd, procpart, procmounts]) { + render([p_fstat, hostname, procmtd, procpart, procmounts, emmcPartitions]) { const has_sysupgrade = (p_fstat.type == 'file'); const has_rootfs_data = (procmtd.match(/"rootfs_data"/) != null) || (procmounts.match("overlayfs:/overlay / ") != null); const storage_size = findStorageSize(procmtd, procpart, procmounts); @@ -509,10 +535,24 @@ return view.extend({ o = ss.option(form.Button, 'mtddownload', _('Download mtdblock')); o.inputstyle = 'action important'; o.inputtitle = _('Save mtdblock'); - o.onclick = L.bind(this.handleBlock, this, hostname); + o.onclick = L.bind(this.handleBlock, this, hostname, 'mtdselect'); } + if (emmcPartitions.length) { + o = s.option(form.SectionValue, 'actions', form.NamedSection, 'actions', 'actions', _('Export eMMC partition'), _('Download the raw contents of the selected eMMC partition.')); + ss = o.subsection; + + o = ss.option(form.ListValue, 'emmcselect', _('Choose eMMC partition')); + for (const partition of emmcPartitions) + o.value(partition.device, '%s (%s, %1024.2mB)'.format(partition.name, partition.device, partition.size)); + + o = ss.option(form.Button, 'emmcdl', _('Download eMMC partition')); + o.inputstyle = 'action important'; + o.inputtitle = _('Export partition'); + o.onclick = L.bind(this.handleBlock, this, hostname, 'emmcselect'); + } + o = s.option(form.SectionValue, 'actions', form.NamedSection, 'actions', 'actions', _('Flash new firmware image'), has_sysupgrade ? _('Upload a sysupgrade-compatible image here to replace the running firmware.') diff --git a/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json b/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json index 5323eb9de..3c7ef8716 100644 --- a/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json +++ b/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json @@ -152,6 +152,12 @@ "cgi-io": [ "backup", "download" ], "file": { "/dev/mtdblock[0-9]*": [ "read" ], + "/dev/mmcblk[0-9]*p[0-9]*": [ "read" ], + "/dev/mmcblk[0-9]*boot[01]": [ "read" ], + "/sys/class/block": [ "list" ], + "/sys/class/block/mmcblk[0-9]*/device/type": [ "read" ], + "/sys/class/block/mmcblk[0-9]*/uevent": [ "read" ], + "/sys/class/block/mmcblk[0-9]*/size": [ "read" ], "/etc/sysupgrade.conf": [ "read" ], "/lib/upgrade/platform.sh": [ "list" ], "/proc/[0-9]*/mounts": [ "read" ], @@ -162,7 +168,7 @@ "/sbin/sysupgrade --list-backup": [ "exec" ] }, "ubus": { - "file": [ "exec", "read", "stat" ] + "file": [ "exec", "list", "read", "stat" ] } }, "write": { diff --git a/luci-theme-design/Makefile b/luci-theme-design/Makefile index d8165a287..b0dd14389 100644 --- a/luci-theme-design/Makefile +++ b/luci-theme-design/Makefile @@ -9,7 +9,7 @@ LUCI_TITLE:=Design Theme LUCI_DEPENDS:= PKG_LICENSE:=Apache-2.0 PKG_VERSION:=7.1 -PKG_RELEASE:=12 +PKG_RELEASE:=13 LUCI_MINIFY_CSS:= CONFIG_LUCI_CSSTIDY:= diff --git a/luci-theme-design/htdocs/luci-static/design/css/style.css b/luci-theme-design/htdocs/luci-static/design/css/style.css index 9de4a3c0f..bc8d3e496 100644 --- a/luci-theme-design/htdocs/luci-static/design/css/style.css +++ b/luci-theme-design/htdocs/luci-static/design/css/style.css @@ -4803,6 +4803,444 @@ body.node-admin-services-dockerman-overview[data-page="admin-services-dockerman" min-width: 200px; } +/* Keep wide tables scrollable without widening the content panel. */ +#maincontent .design-table-scroll, +#modal_overlay .design-table-scroll { + display: block; + max-width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +#maincontent .tabs { + display: flex; + flex-wrap: wrap; +} + +#maincontent .tabs > li { + display: block; + max-width: 100%; +} + +#maincontent .cbi-value > .cbi-value-field { + min-width: 0; +} + +@media screen and (max-width: 768px) { + /* Keep client details readable while retaining the sortable column headings. */ + #maincontent #status_leases, + #maincontent #status_leases > tbody { + display: block; + max-width: 100%; + } + + #status_leases .tr { + position: relative; + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: .15rem .5rem; + margin: .5rem 0; + padding: .5rem; + border: 1px solid var(--border_color); + border-radius: 8px; + } + + #status_leases .td { + display: grid; + grid-column: 1 / -1; + grid-template-columns: 5.5rem minmax(0, 1fr); + gap: .5rem; + min-width: 0; + padding: .15rem 0; + text-align: left; + white-space: normal; + overflow-wrap: anywhere; + } + + #status_leases .td::before { + display: block; + content: attr(data-title); + padding: 0; + font-weight: normal; + white-space: normal; + opacity: .7; + } + + #status_leases .td:first-child { + position: absolute; + top: .7rem; + left: .5rem; + display: flex; + align-items: center; + } + + #status_leases .td:nth-child(2) { + display: block; + padding-left: 1.5rem; + font-weight: 600; + } + + #status_leases .td:first-child::before, + #status_leases .td:nth-child(2)::before { + display: none; + } + + #status_leases .td > * { + min-width: 0; + max-width: 100%; + } + + #status_leases .td:nth-child(4):not(:has(div)) { + display: none; + } + + #status_leases .design-client-mac { + display: inline-block; + white-space: nowrap; + } + + #status_leases .td:nth-child(6), + #status_leases .td:nth-child(7), + #status_leases .td:nth-child(9) { + grid-column: auto; + grid-template-columns: auto minmax(0, 1fr); + gap: .35rem; + align-items: center; + } + + #status_leases .td:nth-child(8) { + grid-template-columns: max-content minmax(0, 1fr); + } + + #status_leases .td:nth-child(8)::before, + #status_leases .luci-client-rate[data-direction="total"] { + white-space: nowrap; + } + + #status_leases .td.cbi-section-actions { + display: flex; + grid-column: auto; + align-items: center; + justify-content: flex-end; + } + + #status_leases .td.cbi-section-actions::before { + display: none; + } + + #status_leases .cbi-button { + min-width: 0; + margin: 0; + padding: .3rem .5rem; + font-size: .8rem; + } + + #status_leases .tr.table-titles { + display: flex; + flex-wrap: nowrap; + overflow-x: auto; + gap: .35rem; + margin: 0; + padding: .25rem 0 .5rem; + border: 0; + border-radius: 0; + } + + #status_leases .th { + display: block; + flex: 0 0 auto; + padding: .5rem; + border-radius: 4px; + background: var(--inputbg_color); + } + + #status_leases .tr.placeholder, + #status_leases .tr.placeholder > .td { + position: static; + display: block; + height: auto; + } + + [data-page="admin-network-wireless"] #cbi-wireless .cbi-section-table, + [data-page="admin-network-wireless"] #cbi-wireless .cbi-section-tbody, + #maincontent #wifi_assoclist_table { + display: block; + max-width: 100%; + } + + [data-page="admin-network-wireless"] #cbi-wireless .cbi-section-table-row { + position: relative; + display: block; + padding: .65rem; + margin-bottom: .6rem; + border: 1px solid var(--border_color); + border-radius: 8px; + } + + [data-page="admin-network-wireless"] #cbi-wireless .cbi-section-table-row > .td { + display: block; + padding: 0; + white-space: normal; + overflow-wrap: anywhere; + } + + [data-page="admin-network-wireless"] #cbi-wireless .cbi-section-table-row > .td[data-name="_badge"], + [data-page="admin-network-wireless"] #cbi-wireless .cbi-section-table-row > .td.cbi-section-actions { + width: auto !important; + min-width: 0 !important; + max-width: 100%; + } + + [data-page="admin-network-wireless"] #cbi-wireless .td[data-name="_badge"] { + position: absolute; + top: .65rem; + right: .65rem; + } + + [data-page="admin-network-wireless"] #cbi-wireless .design-wireless-radio > .td[data-name="_badge"] { + right: auto; + left: .65rem; + } + + [data-page="admin-network-wireless"] #cbi-wireless .design-wireless-radio > .td[data-name="_stat"] { + min-height: 64px; + margin-left: 72px; + } + + [data-page="admin-network-wireless"] #cbi-wireless .td[data-name="_stat"] big { + font-size: .95rem; + } + + [data-page="admin-network-wireless"] #cbi-wireless .td[data-name="_stat"] .nowrap { + display: block; + white-space: normal; + } + + [data-page="admin-network-wireless"] #cbi-wireless .cbi-section-table-row:not(.design-wireless-radio) .td[data-name="_stat"] > div > .nowrap:first-child { + padding-right: 85px; + font-weight: 600; + } + + [data-page="admin-network-wireless"] #cbi-wireless .cbi-section-table-row:not(.design-wireless-radio) .td[data-name="_stat"] strong { + display: inline-block; + min-width: 4.5rem; + } + + [data-page="admin-network-wireless"] #cbi-wireless .td[data-name="_stat"] br, + [data-page="admin-network-wireless"] #cbi-wireless .design-wireless-sep, + [data-page="admin-network-wireless"] #cbi-wireless .wireless-status-sep { + display: none; + } + + [data-page="admin-network-wireless"] #cbi-wireless .td.cbi-section-actions > div { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: .35rem; + margin-top: .5rem; + } + + [data-page="admin-network-wireless"] #cbi-wireless .cbi-button { + width: 100%; + min-width: 0; + margin: 0; + padding: .4rem; + font-size: .85rem; + } + + #wifi_assoclist_table .tr { + display: block; + margin: .5rem 0; + padding: .5rem; + border: 1px solid var(--border_color); + border-radius: 8px; + } + + #wifi_assoclist_table .td { + display: grid; + grid-template-columns: 5.5rem minmax(0, 1fr); + gap: .5rem; + padding: .2rem 0; + text-align: left; + white-space: normal; + overflow-wrap: anywhere; + } + + #wifi_assoclist_table .td::before { + display: block; + content: attr(data-title); + padding: 0; + font-weight: normal; + white-space: normal; + opacity: .7; + } + + #wifi_assoclist_table .td > * { + min-width: 0; + max-width: 100%; + } + + #wifi_assoclist_table .design-client-mac { + display: inline-block; + white-space: nowrap; + } + + #wifi_assoclist_table .tr.table-titles { + display: flex; + overflow-x: auto; + gap: .35rem; + margin: 0; + padding: .25rem 0 .5rem; + border: 0; + border-radius: 0; + } + + #wifi_assoclist_table .th { + display: block; + flex: 0 0 auto; + padding: .5rem; + border-radius: 4px; + background: var(--inputbg_color); + } + + #wifi_assoclist_table .tr.placeholder, + #wifi_assoclist_table .tr.placeholder > .td { + position: static; + display: block; + height: auto; + text-align: center; + } + + #wifi_assoclist_table .tr.placeholder > .td::before { + display: none; + } + + #maincontent .cbi-value, + #modal_overlay .cbi-value { + display: flex; + } + + #maincontent .cbi-value > .cbi-value-title, + #maincontent .cbi-value > .cbi-value-field, + #modal_overlay .cbi-value > .cbi-value-title, + #modal_overlay .cbi-value > .cbi-value-field { + width: 100%; + max-width: 100%; + min-width: 0; + } + + #maincontent input:not([type="checkbox"]):not([type="radio"]), + #maincontent select, + #maincontent textarea, + #maincontent .cbi-dropdown, + #modal_overlay input:not([type="checkbox"]):not([type="radio"]), + #modal_overlay select, + #modal_overlay textarea, + #modal_overlay .cbi-dropdown { + min-width: 0; + max-width: 100%; + } + + #modal_overlay .cbi-section, + #modal_overlay .cbi-section-node, + #modal_overlay .network-status-table .ifacebox-body .ifacebadge { + min-width: 0; + max-width: 100%; + } + + #modal_overlay .cbi-value-field .ifacebadge { + white-space: normal; + overflow-wrap: anywhere; + } + + [data-page="admin-system-package-manager"] #maincontent .controls > * { + flex-basis: 100%; + padding: .25rem 0; + gap: .4rem; + } + + [data-page="admin-system-package-manager"] #maincontent .control-group > input { + flex: 1 1 0; + width: 0; + margin: 0; + } + + [data-page="admin-system-package-manager"] #maincontent .control-group > .btn { + flex: 0 0 auto; + margin: 0; + min-height: 2.8rem; + display: flex; + align-items: center; + justify-content: center; + white-space: normal; + line-height: 1.3; + } + + [data-page="admin-system-package-manager"] #maincontent #action-label + .control-group { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + [data-page="admin-system-package-manager"] #maincontent #action-label + .control-group > :last-child { + grid-column: 1 / -1; + } + + [data-page="admin-system-package-manager"] #maincontent .controls > *, + [data-page="admin-system-package-manager"] #maincontent .controls > * > * { + min-width: 0; + max-width: 100%; + white-space: normal; + } + + [data-page="admin-system-package-manager"] #maincontent .control-group { + display: flex; + flex-wrap: wrap; + gap: .25rem; + } +} + +#maincontent .cbi-section, +#maincontent .cbi-section-node, +#maincontent .cbi-value > .cbi-section { + min-width: 0; + max-width: 100%; +} + +@media screen and (max-width: 768px) { + #maincontent .cbi-value > .cbi-section { + width: 100%; + } +} + +#maincontent .cbi-map-descr, +#maincontent .cbi-section-descr, +#maincontent .cbi-value-description { + overflow-wrap: anywhere; +} + +@media screen and (max-width: 992px) { + .showSide { + top: 0; + left: 0; + width: 60px; + height: 55px; + padding: 0; + display: flex; + align-items: center; + justify-content: center; + z-index: 1; + } +} + +#maincontent .cbi-section-create { + flex-wrap: wrap; + max-width: 100%; +} + +#maincontent .cbi-section-create > * { + min-width: 0; + max-width: 100%; +} + @media (prefers-color-scheme: dark) { code, pre { diff --git a/luci-theme-design/htdocs/luci-static/design/js/style.js b/luci-theme-design/htdocs/luci-static/design/js/style.js index 4112bd3e2..02065aae1 100644 --- a/luci-theme-design/htdocs/luci-static/design/js/style.js +++ b/luci-theme-design/htdocs/luci-static/design/js/style.js @@ -66,10 +66,6 @@ } function getOverviewPortColumns(width, cardCount) { - if (width <= 480) { - return 1; - } - if (width <= 768) { return Math.min(cardCount, 2); } @@ -80,6 +76,7 @@ function syncOverviewPortStatus() { var view = document.getElementById('view'); var portGroups = new Map(); + var portIconSelector = 'img[src*="/luci-static/resources/icons/port_"], img[src*="/images/port_"]'; var mediaPath = (L.env && L.env.media) ? L.env.media : '/luci-static/design'; var iconMap = { 'alias': 'ethernet', @@ -148,7 +145,7 @@ grid.style && grid.style.display === 'grid' && grid.style.gridTemplateColumns.indexOf('minmax(70px, 1fr)') !== -1 && - grid.querySelector('img[src*="/luci-static/resources/icons/port_"]'); + grid.querySelector(portIconSelector); if (!isPortGrid) { return; @@ -161,7 +158,7 @@ }); }); - Array.prototype.forEach.call(view.querySelectorAll('img[src*="/luci-static/resources/icons/port_"]'), function (img) { + Array.prototype.forEach.call(view.querySelectorAll(portIconSelector), function (img) { var card = img.closest('.ifacebox'); var slot = card ? card.closest('.port-status-slot') : null; var parent = card ? (slot ? slot.parentElement : card.parentElement) : null; @@ -375,25 +372,96 @@ }); } + function syncWirelessCards() { + document.querySelectorAll('#cbi-wireless .cbi-section-table-row').forEach(function (row) { + row.classList.toggle('design-wireless-radio', !!row.querySelector('.wireless-radio-badge')); + + row.querySelectorAll('[data-name="_stat"] div').forEach(function (container) { + Array.from(container.childNodes).forEach(function (node) { + if (node.nodeType === Node.TEXT_NODE && /^\s*\|\s*$/.test(node.textContent)) { + var separator = document.createElement('span'); + separator.className = 'design-wireless-sep'; + container.replaceChild(separator, node); + separator.appendChild(node); + } + }); + }); + }); + } + function initWirelessIcons() { if (document.body.getAttribute('data-page') !== 'admin-network-wireless') { return; } syncWirelessIcons(); + syncWirelessCards(); - new MutationObserver(syncWirelessIcons).observe(document.body, { + new MutationObserver(function () { + syncWirelessIcons(); + syncWirelessCards(); + }).observe(document.body, { childList: true, subtree: true }); } + function initResponsiveTables() { + var pending = false; + + function sync() { + pending = false; + + document.querySelectorAll('#status_leases .tr > .td:nth-child(5), #wifi_assoclist_table .tr > .td:nth-child(2)').forEach(function (cell) { + var text = cell.firstChild; + var match = text && text.nodeType === Node.TEXT_NODE && text.textContent.match(/^([\da-f]{2}(?::[\da-f]{2}){5})(.*)$/i); + + if (match && cell.childNodes.length === 1) { + var address = document.createElement('span'); + var mac = document.createElement('span'); + mac.className = 'design-client-mac'; + mac.textContent = match[1]; + address.appendChild(mac); + address.appendChild(document.createTextNode(match[2])); + cell.replaceChild(address, text); + } + }); + + document.querySelectorAll('#maincontent table, #maincontent .table, #modal_overlay table, #modal_overlay .table').forEach(function (table) { + var parent = table.parentElement; + var style = window.getComputedStyle(parent); + var available = parent.clientWidth - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight); + + if (available > 0 && table.getClientRects().length) { + table.classList.toggle('design-table-scroll', table.scrollWidth > available + 1); + } + }); + } + + function schedule() { + if (!pending) { + pending = true; + window.requestAnimationFrame(sync); + } + } + + new MutationObserver(schedule).observe(document.body, { + childList: true, + subtree: true + }); + window.addEventListener('resize', schedule); + document.addEventListener('click', schedule); + document.fonts.ready.then(schedule); + schedule(); + } + function init() { applySafeAreaFix(); initIndicators(); initOverviewPortStatus(); initNetworkInterfaceIcons(); initWirelessIcons(); + initResponsiveTables(); setHeaderShadow(); $(window).on('resize', setHeaderShadow); } diff --git a/luci-theme-design/ucode/template/themes/design/header.ut b/luci-theme-design/ucode/template/themes/design/header.ut index 5e1494abf..d7ef00b1c 100644 --- a/luci-theme-design/ucode/template/themes/design/header.ut +++ b/luci-theme-design/ucode/template/themes/design/header.ut @@ -21,7 +21,7 @@ const show_proxy_icon = access('/etc/config/shadowsocksr') || access('/etc/config/google_fu_mode'); const show_openclash_icon = access('/etc/config/openclash'); const show_homeproxy_icon = access('/etc/config/homeproxy'); - const theme_rev = `${version?.luciversion ?? 'dev'}-designfix-20260927`; + const theme_rev = `${version?.luciversion ?? 'dev'}-designfix-20261108-3`; http.prepare_content('text/html; charset=UTF-8'); -%} diff --git a/luci-theme-fluent/Makefile b/luci-theme-fluent/Makefile index 46838f46d..490a8b38a 100644 --- a/luci-theme-fluent/Makefile +++ b/luci-theme-fluent/Makefile @@ -2,11 +2,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-theme-fluent PKG_VERSION:=1.0.9 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_LICENSE:=Apache-2.0 LUCI_TITLE:=Fluent Theme for LuCI -LUCI_DEPENDS:=+luci-base +LUCI_DEPENDS:=+luci-base +flock LUCI_MINIFY_CSS:=0 define Package/$(PKG_NAME)/conffiles /etc/config/fluent diff --git a/luci-theme-fluent/htdocs/luci-static/fluent/css/fluent.css b/luci-theme-fluent/htdocs/luci-static/fluent/css/fluent.css index a8407abb0..6e1054f2b 100644 --- a/luci-theme-fluent/htdocs/luci-static/fluent/css/fluent.css +++ b/luci-theme-fluent/htdocs/luci-static/fluent/css/fluent.css @@ -6676,6 +6676,52 @@ cbi-dropdown[open] > ul.dropdown:not(.preview) > li .create-item-input, .cbi-dro outline: none; } +cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group { + cursor: default; + padding: 0; + display: block; +} + +cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > .fluent-select-group__label, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > .fluent-select-group__label, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > .fluent-select-group__label { + padding: var(--fluent-space-xxs) var(--fluent-space-xs); + color: var(--fluent-text-secondary); + display: block; +} + +cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul { + margin: 0; + padding: 0; + list-style: none; +} + +cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"], .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"], .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"] { + min-height: var(--fluent-input-height); + padding: 5px var(--fluent-space-xs); + border-radius: var(--fluent-radius-md); + cursor: pointer; + align-items: center; + display: flex; +} + +cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"]:hover, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"]:hover, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"]:hover { + background-color: var(--fluent-dropdown-option-hover); +} + +cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][selected], .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][selected], .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][selected] { + background-color: var(--fluent-dropdown-option-selected); + font-weight: var(--fluent-font-weight-semibold); +} + +cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][disabled], .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][disabled], .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][disabled] { + color: var(--fluent-text-disabled); + cursor: not-allowed; + pointer-events: none; +} + +cbi-dropdown.fluent-custom-select > ul.dropdown [hidden], .cbi-dropdown.fluent-custom-select > ul.dropdown [hidden], .fluent-custom-select.fluent-custom-select > ul.dropdown [hidden] { + display: none; +} + cbi-dropdown > select, .cbi-dropdown > select, .fluent-custom-select > select { box-sizing: border-box; width: 100%; @@ -6841,12 +6887,12 @@ cbi-dropdown ul.dropdown:not(.preview) > li[selected] input[type="checkbox"]:dis background-size: 12px 12px !important; } -cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li { +cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li, cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"], .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"], .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"] { padding-inline-start: 32px; position: relative !important; } -cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li:before, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li:before, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li:before { +cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li:before, cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"]:before, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li:before, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"]:before, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li:before, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"]:before { --icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgPHBhdGggZD0iTTEzLjg1NCAzLjY0NmEuNS41IDAgMCAxIDAgLjcwOGwtNyA3YS41LjUgMCAwIDEtLjcwOCAwbC0zLjUtMy41YS41LjUgMCAxIDEgLjcwOC0uNzA4TDYuNSAxMC4yOTNsNi42NDYtNi42NDdhLjUuNSAwIDAgMSAuNzA4IDB6Ii8+Cjwvc3ZnPgo=); content: "" !important; inset-inline-start: 8px !important; @@ -6868,14 +6914,18 @@ cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li:before, .cbi-dropd mask-repeat: no-repeat !important; } -cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[selected]:before, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[selected]:before, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li[selected]:before { +cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[selected]:before, cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][selected]:before, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[selected]:before, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][selected]:before, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li[selected]:before, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][selected]:before { background-color: var(--fluent-text) !important; } -cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[disabled][selected]:before, cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[unselectable][selected]:before, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[disabled][selected]:before, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[unselectable][selected]:before, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li[disabled][selected]:before, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li[unselectable][selected]:before { +cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[disabled][selected]:before, cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[unselectable][selected]:before, cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][disabled][selected]:before, cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][unselectable][selected]:before, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[disabled][selected]:before, .cbi-dropdown:not([multiple]) > ul.dropdown:not(.preview) > li[unselectable][selected]:before, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][disabled][selected]:before, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][unselectable][selected]:before, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li[disabled][selected]:before, .fluent-custom-select:not([multiple]) > ul.dropdown:not(.preview) > li[unselectable][selected]:before, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][disabled][selected]:before, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group > ul > li[role="option"][unselectable][selected]:before { background-color: var(--fluent-text-disabled) !important; } +cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group:before, .cbi-dropdown.fluent-custom-select > ul.dropdown > .fluent-select-group:before, .fluent-custom-select.fluent-custom-select > ul.dropdown > .fluent-select-group:before { + display: none !important; +} + cbi-dropdown[open] > ul:not(.preview) > li:has(.zonebadge) { background: none !important; padding: 0 !important; @@ -10048,6 +10098,17 @@ html[dir="rtl"] .fluent-menu-editor__category-header:after, body[data-fluent-dir display: flex; } +.fluent-about-manager [hidden] { + display: none; +} + +.fluent-about-manager > .fluent-update-changelog { + white-space: pre-wrap; + overflow-wrap: anywhere; + max-height: 12rem; + overflow: auto; +} + .fluent-about-manager h3 { color: var(--fluent-text); margin: 8px 0 4px; @@ -10124,23 +10185,6 @@ html[dir="rtl"] .fluent-menu-editor__category-header:after, body[data-fluent-dir display: flex; } -.fluent-update-controls .fluent-update-channel-selector { - color: var(--fluent-text); - align-items: center; - gap: 8px; - font-size: 13px; - display: flex; -} - -.fluent-update-controls .fluent-update-channel-selector label { - color: var(--fluent-text-secondary); -} - -.fluent-update-controls .fluent-update-channel-selector select { - min-width: 140px; - padding: 4px 8px; -} - .fluent-update-status { border-radius: var(--fluent-radius-sm); background-color: var(--fluent-bg); @@ -10214,71 +10258,6 @@ html[dir="rtl"] .fluent-menu-editor__category-header:after, body[data-fluent-dir overflow-y: auto; } -.fluent-update-card .fluent-update-footer { - justify-content: flex-end; - display: flex; -} - -.fluent-update-card .fluent-update-success { - text-align: center; - padding: 8px 0; -} - -.fluent-update-card .fluent-update-success h4 { - color: #107c41; - margin: 0 0 8px; - font-weight: 600; -} - -.fluent-update-card .fluent-update-success p { - color: var(--fluent-text-secondary); - margin: 0; - font-size: 13px; -} - -.fluent-progress-bar { - background-color: var(--fluent-border); - border-radius: 2px; - width: 100%; - height: 4px; - position: relative; - overflow: hidden; -} - -.fluent-progress-bar__fill { - background-color: var(--fluent-primary); - border-radius: 2px; - height: 100%; - transition: width .2s ease-in-out; -} - -.fluent-progress-bar__fill.fill-verify, .fluent-progress-bar__fill.fill-install { - transform-origin: 0; - animation: 1.5s linear infinite fluent-indeterminate-progress; - width: 100% !important; -} - -.fluent-progress-text { - color: var(--fluent-text-secondary); - text-align: center; - margin-top: -8px; - font-size: 12px; -} - -@keyframes fluent-indeterminate-progress { - 0% { - transform: translateX(-100%) scaleX(.2); - } - - 50% { - transform: translateX(-20%) scaleX(.5); - } - - 100% { - transform: translateX(100%) scaleX(.2); - } -} - .fluent-mac-selector-group { align-items: center; gap: var(--fluent-space-xs); diff --git a/luci-theme-fluent/htdocs/luci-static/resources/menu-fluent.js b/luci-theme-fluent/htdocs/luci-static/resources/menu-fluent.js index a7e328574..2a10bc1a0 100644 --- a/luci-theme-fluent/htdocs/luci-static/resources/menu-fluent.js +++ b/luci-theme-fluent/htdocs/luci-static/resources/menu-fluent.js @@ -1670,28 +1670,32 @@ function setupSelectionPause() { ;// CONCATENATED MODULE: ./web/resources/utils/select-dropdown.tsx -let select_dropdown_r = !1; -function select_dropdown_s() { +let select_dropdown_l = !1, select_dropdown_a = !1, select_dropdown_s = new WeakMap(), select_dropdown_d = 0; +function select_dropdown_c() { document.querySelectorAll("cbi-dropdown[open], .cbi-dropdown[open], .fluent-custom-select[open]").forEach((e)=>{ if (e instanceof HTMLElement) if (e.classList.contains("fluent-custom-select")) { let t = e.previousElementSibling; - t instanceof HTMLSelectElement && select_dropdown_f(e, t); - } else select_dropdown_a(e); + t instanceof HTMLSelectElement && select_dropdown_h(e, t); + } else select_dropdown_u(e); }); } -function select_dropdown_a(e) { - let t = e.getBoundingClientRect(), n = window.innerHeight - t.bottom, o = t.top, l = e.querySelector("ul.dropdown, ul:not(.preview)"), i = l ? l.querySelectorAll("li").length : 8, r = l ? l.scrollHeight : 0, s = Math.min(r > 0 ? r + 8 : 36 * i + 10, select_dropdown_c), a = n < s && o > n, d = a ? Math.max(64, o - select_dropdown_u - select_dropdown_p) : Math.max(64, n - select_dropdown_u - select_dropdown_p); - e.setAttribute("data-open-direction", a ? "up" : "down"), e.style.setProperty("--fluent-dropdown-max-height", `${Math.min(select_dropdown_c, s, d)}px`); +function select_dropdown_u(e) { + let t = e.getBoundingClientRect(), n = window.innerHeight - t.bottom, r = t.top, i = e.querySelector("ul.dropdown, ul:not(.preview)"), o = i ? i.querySelectorAll("li").length : 8, l = i ? i.scrollHeight : 0, a = Math.min(l > 0 ? l + 8 : 36 * o + 10, select_dropdown_b), s = n < a && r > n, d = s ? Math.max(64, r - select_dropdown_m - select_dropdown_f) : Math.max(64, n - select_dropdown_m - select_dropdown_f); + e.setAttribute("data-open-direction", s ? "up" : "down"), e.style.setProperty("--fluent-dropdown-max-height", `${Math.min(select_dropdown_b, a, d)}px`); } function setupFluentSelects() { - select_dropdown_r || (select_dropdown_r = !0, window.addEventListener("scroll", select_dropdown_s, !0), window.addEventListener("resize", select_dropdown_s), new MutationObserver((e)=>{ + select_dropdown_l || (select_dropdown_l = !0, window.addEventListener("scroll", select_dropdown_c, !0), window.addEventListener("resize", select_dropdown_c), document.addEventListener("click", (e)=>{ + document.querySelectorAll(".fluent-custom-select[open]").forEach((t)=>{ + t.contains(e.target) || e.target === t.previousElementSibling || select_dropdown_y(t); + }); + }, !0), new MutationObserver((e)=>{ e.forEach((e)=>{ if ("attributes" === e.type && "open" === e.attributeName) { let t = e.target; if (t.hasAttribute("open")) if (t.classList.contains("fluent-custom-select")) { let e = t.previousElementSibling; - e instanceof HTMLSelectElement && select_dropdown_f(t, e); - } else ("CBI-DROPDOWN" === t.tagName || t.classList.contains("cbi-dropdown")) && select_dropdown_a(t); + e instanceof HTMLSelectElement && select_dropdown_h(t, e); + } else ("CBI-DROPDOWN" === t.tagName || t.classList.contains("cbi-dropdown")) && select_dropdown_u(t); } }); }).observe(document.body, { @@ -1700,55 +1704,59 @@ function setupFluentSelects() { "open" ], subtree: !0 - })), "0" === document.body.getAttribute("data-theme-custom-select") || (document.querySelectorAll("select").forEach((e)=>{ - select_dropdown_h(e); + })), "0" === document.body.getAttribute("data-theme-custom-select") || select_dropdown_a || (select_dropdown_a = !0, document.querySelectorAll("select").forEach((e)=>{ + select_dropdown_v(e); }), document.querySelectorAll("cbi-dropdown, .cbi-dropdown").forEach((e)=>{ - e.classList.contains("fluent-custom-select") || select_dropdown_d(e); + e.classList.contains("fluent-custom-select") || select_dropdown_p(e); }), new MutationObserver((e)=>{ + let t = new Set(); e.forEach((e)=>{ - e.addedNodes.forEach((e)=>{ - e.nodeType === Node.ELEMENT_NODE && ("SELECT" === e.tagName ? select_dropdown_h(e) : "CBI-DROPDOWN" === e.tagName || e.classList.contains("cbi-dropdown") ? e.classList.contains("fluent-custom-select") || select_dropdown_d(e) : (e.querySelectorAll("select").forEach((e)=>{ - select_dropdown_h(e); + e.removedNodes.forEach((e)=>{ + e instanceof HTMLSelectElement ? t.add(e) : e instanceof Element && e.querySelectorAll("select").forEach((e)=>{ + t.add(e); + }); + }), e.addedNodes.forEach((e)=>{ + e.nodeType === Node.ELEMENT_NODE && ("SELECT" === e.tagName ? select_dropdown_v(e) : "CBI-DROPDOWN" === e.tagName || e.classList.contains("cbi-dropdown") ? e.classList.contains("fluent-custom-select") || select_dropdown_p(e) : (e.querySelectorAll("select").forEach((e)=>{ + select_dropdown_v(e); }), e.querySelectorAll("cbi-dropdown, .cbi-dropdown").forEach((e)=>{ - e.classList.contains("fluent-custom-select") || select_dropdown_d(e); + e.classList.contains("fluent-custom-select") || select_dropdown_p(e); }))); }); + }), t.forEach((e)=>{ + let t = select_dropdown_s.get(e); + t && (e.isConnected ? (e.nextElementSibling !== t.dropdown && (select_dropdown_y(t.dropdown), e.after(t.dropdown)), t.refreshAncestors()) : t.dispose()); }); }).observe(document.body, { childList: !0, subtree: !0 })); } -function select_dropdown_d(e) { +function select_dropdown_p(e) { let t; (t = e.querySelector("span.open")) && "true" !== t.getAttribute("data-chevron-upgraded") && (t.setAttribute("data-chevron-upgraded", "true"), t.innerHTML = ""); let n = e.querySelector("ul:not(.preview)"); n && !n.classList.contains("dropdown") && n.classList.add("dropdown"); } -let select_dropdown_c = 350, select_dropdown_u = 8, select_dropdown_p = 2; -function select_dropdown_b(e, t) { - let n = t.offsetTop, o = n + t.offsetHeight, l = e.scrollTop, i = l + e.clientHeight; - n < l ? e.scrollTop = n : o > i && (e.scrollTop = o - e.clientHeight); -} -function select_dropdown_f(e, t) { - let r = e.getBoundingClientRect(), s = getEffectiveDocumentDirection(), a = getViewportInlineSize(), d = window.innerHeight, b = d - r.bottom, f = r.top; - if (b < Math.min(32 * t.options.length + 10, select_dropdown_c) && f > b ? e.setAttribute("data-open-direction", "up") : e.setAttribute("data-open-direction", "down"), !e.closest("#modal_overlay .modal, .fluent-mac-overlay-card, [class*='overlay']")) return void e.removeAttribute("data-fluent-floating"); - let m = Math.min(32 * t.options.length + 10, select_dropdown_c, 0.45 * d), h = b < m && f > b, v = Math.min(m, Math.max(64, h ? f - select_dropdown_u - select_dropdown_p : b - select_dropdown_u - select_dropdown_p)), w = Math.min(r.width, a - 2 * select_dropdown_u), y = Math.min(Math.max(select_dropdown_u, getRectInlineStart(r, s, a)), a - w - select_dropdown_u), A = h ? Math.max(select_dropdown_u, r.top - v - select_dropdown_p) : Math.min(d - select_dropdown_u - v, r.bottom + select_dropdown_p); +let select_dropdown_b = 350, select_dropdown_m = 8, select_dropdown_f = 2; +function select_dropdown_h(e, t) { + let l = e.getBoundingClientRect(), a = getEffectiveDocumentDirection(), s = getViewportInlineSize(), d = window.innerHeight, c = d - l.bottom, u = l.top; + if (c < Math.min(32 * t.options.length + 10, select_dropdown_b) && u > c ? e.setAttribute("data-open-direction", "up") : e.setAttribute("data-open-direction", "down"), !e.closest("#modal_overlay .modal, .fluent-mac-overlay-card, [class*='overlay']")) return void e.removeAttribute("data-fluent-floating"); + let p = Math.min(32 * t.options.length + 10, select_dropdown_b, 0.45 * d), h = c < p && u > c, y = Math.min(p, Math.max(64, h ? u - select_dropdown_m - select_dropdown_f : c - select_dropdown_m - select_dropdown_f)), v = Math.min(l.width, s - 2 * select_dropdown_m), w = Math.min(Math.max(select_dropdown_m, getRectInlineStart(l, a, s)), s - v - select_dropdown_m), A = h ? Math.max(select_dropdown_m, l.top - y - select_dropdown_f) : Math.min(d - select_dropdown_m - y, l.bottom + select_dropdown_f); e.setAttribute("data-open-direction", h ? "up" : "down"), e.setAttribute("data-fluent-floating", "modal"), setInlineCssCustomProperties(e.style, { - inlineStart: y, - inlineSize: w - }, s, a, { + inlineStart: w, + inlineSize: v + }, a, s, { inlineStart: "--fluent-dropdown-left", inlineSize: "--fluent-dropdown-width" - }), e.style.setProperty("--fluent-dropdown-top", `${A}px`), e.style.setProperty("--fluent-dropdown-max-height", `${v}px`); + }), e.style.setProperty("--fluent-dropdown-top", `${A}px`), e.style.setProperty("--fluent-dropdown-max-height", `${y}px`); } -function select_dropdown_m(e) { - e.removeAttribute("open"), e.removeAttribute("data-fluent-floating"), e.style.removeProperty("--fluent-dropdown-left"), e.style.removeProperty("--fluent-dropdown-top"), e.style.removeProperty("--fluent-dropdown-width"), e.style.removeProperty("--fluent-dropdown-max-height"), e.closest(".cbi-value-field, .cbi-value")?.classList.remove("cbi-dropdown-open"); +function select_dropdown_y(e) { + e.removeAttribute("open"), e.setAttribute("aria-expanded", "false"), e.removeAttribute("aria-activedescendant"), e.removeAttribute("data-fluent-floating"), e.style.removeProperty("--fluent-dropdown-left"), e.style.removeProperty("--fluent-dropdown-top"), e.style.removeProperty("--fluent-dropdown-width"), e.style.removeProperty("--fluent-dropdown-max-height"), e.closest(".cbi-value-field, .cbi-value")?.classList.remove("cbi-dropdown-open"); let t = e.querySelector("ul.dropdown"); t instanceof HTMLElement && "function" == typeof t.hidePopover && t.matches(":popover-open") && t.hidePopover(); } -function select_dropdown_h(n) { - if (n?.tagName !== "SELECT" || "true" === n.getAttribute("data-fluent-transformed") || n.closest(".cbi-dropdown") || n.multiple || function(e) { +function select_dropdown_v(n) { + if (n?.tagName !== "SELECT" || !n.isConnected || "true" === n.getAttribute("data-fluent-transformed") || n.closest(".cbi-dropdown") || n.multiple || function(e) { let t = e.getAttribute("style") || ""; if (/\bdisplay\s*:\s*none/i.test(t) || "none" === e.style.display) return !0; if (!e.isConnected) return !1; @@ -1765,163 +1773,207 @@ function select_dropdown_h(n) { t = t.parentElement; } if (!n) return !0; - let o = e.cloneNode(!1); - o.style.display = "", document.body.appendChild(o); - let l = window.getComputedStyle(o), i = "none" === l.display; - return document.body.removeChild(o), i; + let r = e.cloneNode(!1); + r.style.display = "", document.body.appendChild(r); + let i = window.getComputedStyle(r), o = "none" === i.display; + return document.body.removeChild(r), o; } } catch (e) {} return !1; }(n)) return; - let o = n.getAttribute("style"); + let r = n.getAttribute("style"), i = n.style.getPropertyValue("display"), o = n.style.getPropertyPriority("display"); n.setAttribute("data-fluent-transformed", "true"), n.style.setProperty("display", "none", "important"); let l = jsx("li", {}); l.setAttribute("selected", ""); - let i = jsx("ul", { + let a = jsx("ul", { class: "dropdown" - }), r = jsx("span", { + }); + a.id = `fluent-select-list-${++select_dropdown_d}`, a.setAttribute("role", "listbox"); + let c = jsx("span", { class: "open" - }), s = jsxs("div", { + }), u = jsxs("div", { class: "fluent-custom-select", children: [ jsx("ul", { children: l }), - r, - i + c, + a ] }); - if (s.setAttribute("tabindex", "0"), o) { - let e = o.replace(/\bdisplay\s*:\s*[^;]+(;|$)/gi, "").trim(); - e && s.setAttribute("style", e); + if (u.setAttribute("tabindex", "0"), u.setAttribute("role", "combobox"), u.setAttribute("aria-haspopup", "listbox"), u.setAttribute("aria-controls", a.id), u.setAttribute("aria-expanded", "false"), u.setAttribute("aria-required", String(n.required)), u.querySelector("ul:not(.dropdown)")?.setAttribute("aria-hidden", "true"), c.setAttribute("aria-hidden", "true"), r) { + let e = r.replace(/\bdisplay\s*:\s*[^;]+(;|$)/gi, "").trim(); + e && u.setAttribute("style", e); } - n.disabled && (s.setAttribute("disabled", ""), s.removeAttribute("tabindex")); - let a = ()=>{ - i.innerHTML = ""; - let t = "", o = !1; - if (Array.from(n.options).forEach((n)=>{ - let l = jsx("li", { - children: n.text - }); - l.setAttribute("data-value", n.value), n.selected && (l.setAttribute("selected", ""), t = n.text, o = !0), n.disabled && l.setAttribute("disabled", ""), i.appendChild(l); - }), !o && n.options.length > 0) { - let e = n.options[n.selectedIndex >= 0 ? n.selectedIndex : 0]; - t = e.text; - let o = i.querySelector(`li[data-value="${e.value}"]`); - o?.setAttribute("selected", ""); + let p = new Map(), b = null, m = 0, f = 0, v = "", w = 0, A = null, g = [], E = (e)=>!e.hidden && !e.closest("[hidden]") && !e.matches(":disabled"), L = ()=>Array.from(n.options).filter((e)=>E(e)), x = (e)=>{ + if ((b = e && p.has(e) && E(e) ? e : null) && u.hasAttribute("open")) { + let e = p.get(b); + if (e) { + let t, n, r, i; + u.setAttribute("aria-activedescendant", e.id), n = (t = e.offsetTop) + e.offsetHeight, i = (r = a.scrollTop) + a.clientHeight, t < r ? a.scrollTop = t : n > i && (a.scrollTop = n - a.clientHeight); + } + } else u.removeAttribute("aria-activedescendant"); + }, S = ()=>{ + let e = n.matches(":disabled"); + u.toggleAttribute("disabled", e), u.setAttribute("aria-disabled", String(e)), u.setAttribute("aria-required", String(n.required)), e ? (u.removeAttribute("tabindex"), select_dropdown_y(u)) : u.setAttribute("tabindex", "0"); + let t = g.map((e)=>e.id).filter(Boolean), r = n.getAttribute("aria-labelledby"); + if (r || t.length) u.setAttribute("aria-labelledby", r || t.join(" ")), u.removeAttribute("aria-label"); + else { + u.removeAttribute("aria-labelledby"); + let e = n.getAttribute("aria-label") || g.map((e)=>e.textContent?.trim()).filter(Boolean).join(" ") || n.title; + e ? u.setAttribute("aria-label", e) : u.removeAttribute("aria-label"); } - l.textContent = t; + let i = n.options[n.selectedIndex]; + for (let [e, t] of (l.textContent = i?.text ?? "", p)){ + let n = e === i; + t.toggleAttribute("selected", n), t.setAttribute("aria-selected", String(n)); + let r = !E(e); + t.toggleAttribute("disabled", r), t.setAttribute("aria-disabled", String(r)); + } + b && !E(b) && x(i && E(i) ? i : null), u.hasAttribute("open") && !b && x(i && E(i) ? i : L()[0] || null); + }, M = ()=>{ + let t = new Map(), r = null, i = null; + a.replaceChildren(), Array.from(n.options).forEach((n, o)=>{ + let l = n.parentElement instanceof HTMLOptGroupElement ? n.parentElement : null; + if (l !== r && (r = l, i = null), l && !i) { + let t = jsx("li", { + class: "fluent-select-group" + }); + t.setAttribute("role", "group"), t.setAttribute("aria-label", l.label), t.hidden = l.hidden; + let n = jsx("span", { + class: "fluent-select-group__label" + }); + n.textContent = l.label, n.setAttribute("aria-hidden", "true"), (i = jsx("ul", {})).setAttribute("role", "presentation"), t.append(n, i), a.append(t); + } + let s = jsx("li", {}); + s.id = `${a.id}-option-${o}`, s.textContent = n.text, s.setAttribute("role", "option"), s.hidden = n.hidden || !!l?.hidden, (i || a).append(s), t.set(n, s); + }), p = t, b && !p.has(b) && (b = null), S(); + }, k = (e)=>{ + !n.matches(":disabled") && E(e) && (n.selectedIndex = Array.from(n.options).indexOf(e), S(), n.dispatchEvent(new Event("input", { + bubbles: !0 + })), n.dispatchEvent(new Event("change", { + bubbles: !0 + }))); + }, T = (e)=>{ + !(e.target instanceof Element && e.target.closest("a, button, input, select, textarea")) && (n.matches(":disabled") || u.focus()); + }, C = ()=>{ + window.clearTimeout(f), f = window.setTimeout(()=>{ + n.isConnected && (M(), x(null)); + }, 0); + }, q = new MutationObserver(()=>S()), P = ()=>{ + q.disconnect(), Array.from(function*() { + let e = n.parentElement; + for(; e;)e instanceof HTMLFieldSetElement && (yield e), e = e.parentElement; + }()).forEach((e)=>{ + q.observe(e, { + attributes: !0, + attributeFilter: [ + "disabled" + ] + }); + }); + let e = n.form; + A !== e && (A?.removeEventListener("reset", C), A = e, A?.addEventListener("reset", C)); + let t = Array.from(n.labels || []); + g.forEach((e)=>{ + e.removeEventListener("click", T); + }), (g = t).forEach((e)=>{ + e.addEventListener("click", T); + }), S(); }; - a(), n.parentNode?.insertBefore(s, n.nextSibling), s.addEventListener("click", (e)=>{ - if (s.hasAttribute("disabled")) return; - let t = e.target.closest("ul.dropdown > li"); - if (t) { - let o = t.getAttribute("data-value"); - null === o || t.hasAttribute("disabled") || (n.value = o, n.dispatchEvent(new Event("change", { - bubbles: !0 - })), n.dispatchEvent(new Event("input", { - bubbles: !0 - }))), select_dropdown_m(s), e.stopPropagation(); + M(), n.parentNode?.insertBefore(u, n.nextSibling), u.addEventListener("click", (e)=>{ + if (u.hasAttribute("disabled")) return; + let t = e.target.closest('[role="option"]'); + if (t && a.contains(t)) { + let n = Array.from(p).find(([, e])=>e === t)?.[0]; + n && E(n) && k(n), select_dropdown_y(u), e.stopPropagation(); return; } - if (s.hasAttribute("open")) select_dropdown_m(s); - else { - document.querySelectorAll("cbi-dropdown[open], .cbi-dropdown[open], .fluent-custom-select[open]").forEach((e)=>{ - e instanceof HTMLElement && e.classList.contains("fluent-custom-select") ? select_dropdown_m(e) : (e.removeAttribute("open"), e.closest(".cbi-value-field, .cbi-value")?.classList.remove("cbi-dropdown-open")); - }), select_dropdown_f(s, n), s.setAttribute("open", ""), s.closest(".cbi-value-field, .cbi-value")?.classList.add("cbi-dropdown-open"); - let e = i.querySelector("li[selected]"); - e && select_dropdown_b(i, e); + if (!e.target.closest('[role="group"]')) { + if (u.hasAttribute("open")) select_dropdown_y(u); + else { + document.querySelectorAll("cbi-dropdown[open], .cbi-dropdown[open], .fluent-custom-select[open]").forEach((e)=>{ + e instanceof HTMLElement && e.classList.contains("fluent-custom-select") ? select_dropdown_y(e) : (e.removeAttribute("open"), e.closest(".cbi-value-field, .cbi-value")?.classList.remove("cbi-dropdown-open")); + }), M(), select_dropdown_h(u, n), u.setAttribute("open", ""), u.setAttribute("aria-expanded", "true"), u.closest(".cbi-value-field, .cbi-value")?.classList.add("cbi-dropdown-open"), x(E(n.options[n.selectedIndex]) ? n.options[n.selectedIndex] : L()[0] || null); + let e = ()=>{ + if (!u.hasAttribute("open")) { + m = 0; + return; + } + S(), m = requestAnimationFrame(e); + }; + m || (m = requestAnimationFrame(e)); + } + e.stopPropagation(); } - e.stopPropagation(); - }); - let d = (e)=>{ - !s.contains(e.target) && e.target !== n && s.hasAttribute("open") && select_dropdown_m(s); - }; - document.addEventListener("click", d, !0), s.addEventListener("keydown", (e)=>{ - if (s.hasAttribute("disabled")) return; - let t = s.hasAttribute("open"), o = Array.from(i.querySelectorAll("li:not([disabled])")), l = o.findIndex((e)=>e.hasAttribute("selected")); + }), u.addEventListener("keydown", (e)=>{ + if (u.hasAttribute("disabled")) return; + let t = u.hasAttribute("open"), n = L(), r = b ? n.indexOf(b) : -1; switch(e.key){ case "Enter": case " ": - if (e.preventDefault(), t) { - let e = o[l]; - e && e.click(); - } else s.click(); + e.preventDefault(), t ? b && (k(b), select_dropdown_y(u)) : u.click(); break; case "Escape": - t && (e.preventDefault(), select_dropdown_m(s)); + t && (e.preventDefault(), select_dropdown_y(u)); break; case "ArrowDown": - if (e.preventDefault(), t) { - if (o.length > 0) { - let e = (l + 1) % o.length; - o.forEach((t, o)=>{ - if (o === e) { - t.setAttribute("selected", ""), select_dropdown_b(i, t); - let e = t.getAttribute("data-value"); - null !== e && (n.value = e, n.dispatchEvent(new Event("change", { - bubbles: !0 - })), n.dispatchEvent(new Event("input", { - bubbles: !0 - }))); - } else t.removeAttribute("selected"); - }); - } - } else s.click(); + e.preventDefault(), t ? n.length > 0 && x(n[(r + 1) % n.length]) : u.click(); break; case "ArrowUp": - if (e.preventDefault(), t) { - if (o.length > 0) { - let e = (l - 1 + o.length) % o.length; - o.forEach((t, o)=>{ - if (o === e) { - t.setAttribute("selected", ""), select_dropdown_b(i, t); - let e = t.getAttribute("data-value"); - null !== e && (n.value = e, n.dispatchEvent(new Event("change", { - bubbles: !0 - })), n.dispatchEvent(new Event("input", { - bubbles: !0 - }))); - } else t.removeAttribute("selected"); - }); - } - } else s.click(); + e.preventDefault(), t ? n.length > 0 && x(n[(r - 1 + n.length) % n.length]) : u.click(); + break; + case "Home": + case "End": + e.preventDefault(), t || u.click(), x("Home" === e.key ? n[0] || null : n[n.length - 1] || null); break; case "Tab": - t && select_dropdown_m(s); + t && select_dropdown_y(u); + break; + default: + if (1 === e.key.length && !e.ctrlKey && !e.altKey && !e.metaKey) { + v += e.key.toLocaleLowerCase(), window.clearTimeout(w), w = window.setTimeout(()=>{ + v = ""; + }, 700); + let r = n.find((e)=>e.text.trim().toLocaleLowerCase().startsWith(v)); + r && (t || u.click(), x(r)); + } } - }), n.addEventListener("change", ()=>{ - let e = n.value, t = Array.from(i.querySelectorAll("li")), o = ""; - t.forEach((t)=>{ - t.getAttribute("data-value") === e ? (t.setAttribute("selected", ""), o = t.textContent || "") : t.removeAttribute("selected"); - }), l.textContent = o; }); - let c = new MutationObserver(()=>{ - a(); + let H = ()=>{ + S(), x(null); + }; + n.addEventListener("change", H), n.addEventListener("input", H), u.addEventListener("focus", ()=>{ + P(), M(); }); - c.observe(n, { - childList: !0 + let N = new MutationObserver((e)=>{ + e.some((e)=>"childList" === e.type || e.target !== n) ? M() : S(), e.some((e)=>"form" === e.attributeName || "id" === e.attributeName) && P(); }); - let u = new MutationObserver((e)=>{ - e.forEach((e)=>{ - "disabled" === e.attributeName && (n.disabled ? (s.setAttribute("disabled", ""), s.removeAttribute("tabindex"), select_dropdown_m(s)) : (s.removeAttribute("disabled"), s.setAttribute("tabindex", "0"))); - }); - }); - u.observe(n, { + N.observe(n, { + childList: !0, + subtree: !0, + characterData: !0, attributes: !0, attributeFilter: [ - "disabled" + "disabled", + "hidden", + "label", + "selected", + "value", + "required", + "aria-label", + "aria-labelledby", + "id", + "form" ] - }); - let p = new MutationObserver((e)=>{ - e.forEach((e)=>{ - e.removedNodes.forEach((e)=>{ - (e === n || e.contains?.(n)) && (document.removeEventListener("click", d, !0), c.disconnect(), u.disconnect(), p.disconnect(), s.remove()); - }); - }); - }); - n.parentNode && p.observe(n.parentNode, { - childList: !0 + }), P(), select_dropdown_s.set(n, { + dropdown: u, + refreshAncestors: P, + dispose: ()=>{ + select_dropdown_y(u), m && cancelAnimationFrame(m), window.clearTimeout(f), window.clearTimeout(w), N.disconnect(), q.disconnect(), A?.removeEventListener("reset", C), g.forEach((e)=>{ + e.removeEventListener("click", T); + }), n.removeEventListener("change", H), n.removeEventListener("input", H), u.remove(), n.removeAttribute("data-fluent-transformed"), i ? n.style.setProperty("display", i, o) : n.style.removeProperty("display"), select_dropdown_s.delete(n); + } }); } diff --git a/luci-theme-fluent/htdocs/luci-static/resources/view/fluent-config.js b/luci-theme-fluent/htdocs/luci-static/resources/view/fluent-config.js index e9b825169..6cfb3745b 100644 --- a/luci-theme-fluent/htdocs/luci-static/resources/view/fluent-config.js +++ b/luci-theme-fluent/htdocs/luci-static/resources/view/fluent-config.js @@ -93,169 +93,81 @@ function jsxDEV(t, n) { ;// CONCATENATED MODULE: ./web/resources/utils/update.ts -let update_t = L.rpc; -const callGetVersion = update_t.declare({ +const callGetVersion = L.rpc.declare({ object: "luci.fluent", method: "get_version" }); -const callStartDownload = update_t.declare({ +const callStartUpdate = L.rpc.declare({ object: "luci.fluent", - method: "start_download", + method: "start_update", params: [ - "url", - "i18n_url", - "i18n_urls" + "manifest" ] }); -const callCheckDownload = update_t.declare({ +const callUpdateStatus = L.rpc.declare({ object: "luci.fluent", - method: "check_download" -}); -const callDoInstall = update_t.declare({ - object: "luci.fluent", - method: "do_install", + method: "update_status", params: [ - "hash", - "i18n_hash", - "i18n_hashes" + "job" ] }); class GitHubAPIError extends Error { status; constructor(t, e){ - super(t), this.name = "GitHubAPIError", this.status = e; + super(t), this.status = e, this.name = "GitHubAPIError"; } } -function matchI18nAsset(t, e, l) { - let s = e.toLowerCase().trim(); - for (let e of t){ - let t = String(e.name || "").toLowerCase(); - if ("apk" === l) { - if (t.startsWith(`luci-i18n-fluent-${s}-`) && t.endsWith(".apk")) return e; - } else if ((t.startsWith(`luci-i18n-fluent-${s}_`) || t.startsWith(`luci-i18n-fluent-${s}-`)) && t.endsWith(".ipk")) return e; - } - return null; +function matchI18nAsset(t, e, a) { + let r = `luci-i18n-fluent-${e.toLowerCase().trim()}${"apk" === a ? "-" : "_"}`; + return t.find((t)=>t.name.toLowerCase().startsWith(r) && t.name.endsWith(`.${a}`)) ?? null; } -async function fetchLatestRelease(t, e, l = [], s) { - let a = {}; - s && (a.Authorization = `token ${s}`); - let r = await fetch("nightly" === t ? "https://api.github.com/repos/LazuliKao/luci-theme-fluent/releases/tags/nightly" : "https://api.github.com/repos/LazuliKao/luci-theme-fluent/releases/latest", { - headers: a - }), n = await r.json(); - if (!r.ok) { - let t = n?.message ? `: ${n.message}` : ""; - throw new GitHubAPIError(`GitHub API returned status ${r.status}${t}`, r.status); - } - let i = n.assets || [], o = null, u = []; - for (let t of i){ - let l = String(t.name || ""); - "apk" === e && /^luci-theme-fluent-[0-9].*\.apk$/.test(l) ? o = t : "ipk" === e && /^luci-theme-fluent_[^/]+\.ipk$/.test(l) && (o = t); - } - for (let t of l){ - let l = matchI18nAsset(i, t, e); - l && !u.includes(l) && u.push(l); - } +function updateManifest(t, e = "") { + return JSON.stringify({ + packages: t.map((t)=>{ + let a = t.digest ?? ""; + if (!/^sha256:[a-f\d]{64}$/i.test(a)) throw Error(`Missing SHA-256 digest: ${t.name}`); + if (!t.browser_download_url.startsWith("https://")) throw Error(`Invalid package URL: ${t.name}`); + return { + url: e + t.browser_download_url, + sha256: a.slice(7).toLowerCase() + }; + }) + }); +} +async function fetchLatestRelease(t, e, a = [], r) { + let s = await fetch(`https://api.github.com/repos/LazuliKao/luci-theme-fluent/releases/${"nightly" === t ? "tags/nightly" : "latest"}`, { + headers: r ? { + Authorization: `Bearer ${r}` + } : {}, + signal: AbortSignal.timeout(30000) + }), n = await s.json(); + if (!s.ok) throw new GitHubAPIError(`GitHub API returned status ${s.status}: ${n.message ?? ""}`, s.status); + let i = n.assets ?? [], o = "apk" === e ? /^luci-theme-fluent-[0-9].*\.apk$/ : /^luci-theme-fluent_[^/]+\.ipk$/, l = i.find((t)=>o.test(t.name)) ?? null, u = a.map((t)=>{ + let a = matchI18nAsset(i, t, e); + if (!a) throw Error(`Missing translation package: ${t}`); + return a; + }); return { - tag_name: String(n.tag_name || ""), - published_at: String(n.published_at || ""), - body: String(n.body || ""), - html_url: String(n.html_url || ""), - package_asset: o, + tag_name: String(n.tag_name ?? ""), + published_at: String(n.published_at ?? ""), + body: String(n.body ?? ""), + package_asset: l, i18n_assets: u }; } ;// CONCATENATED MODULE: ./web/resources/view/fluent-config/tabs/about.tsx -let about_l = L.form, about_n = "https://ghfast.top/"; -let about_u = about_l.DummyValue.extend({ - renderWidget: (l, u, p)=>{ - let h = "1.0.1", b = "ipk", f = [], g = jsxs("div", { - class: "fluent-about-logo", - children: [ - jsx("img", { - src: `${L.media()}/img/fluent.svg`, - alt: "Fluent Theme Logo" - }), - jsx("h2", { - children: "Fluent Theme" - }), - jsx("p", { - class: "fluent-about-subtitle", - children: _("Fluent Design 2 theme for LuCI") - }) - ] - }), y = jsxs("div", { - class: "fluent-about-details", - children: [ - jsxs("div", { - class: "fluent-about-detail-row", - children: [ - jsxs("strong", { - children: [ - _("Author"), - ":" - ] - }), - jsx("span", { - children: "LazuliKao" - }) - ] - }), - jsxs("div", { - class: "fluent-about-detail-row", - children: [ - jsxs("strong", { - children: [ - _("Installed version"), - ":" - ] - }), - jsx("span", { - class: "fluent-about-current-version", - children: "v..." - }) - ] - }), - jsxs("div", { - class: "fluent-about-detail-row", - children: [ - jsxs("strong", { - children: [ - _("Package format"), - ":" - ] - }), - jsx("span", { - class: "fluent-about-pkg-type", - children: "..." - }) - ] - }), - jsxs("div", { - class: "fluent-about-detail-row", - children: [ - jsxs("strong", { - children: [ - _("Source code"), - ":" - ] - }), - jsx("span", { - children: jsx("a", { - href: "https://github.com/LazuliKao/luci-theme-fluent", - target: "_blank", - rel: "noreferrer", - children: "GitHub Repository" - }) - }) - ] - }) - ] - }), m = jsxs("select", { +let about_d = L.form.DummyValue.extend({ + renderWidget: ()=>{ + let d, c = jsx("span", { + children: "\u2026" + }), u = jsx("span", { + children: "\u2026" + }), h = jsxs("select", { + id: "fluent-update-channel", class: "cbi-input-select", - id: "update-channel-select", children: [ jsx("option", { value: "stable", @@ -266,284 +178,238 @@ let about_u = about_l.DummyValue.extend({ children: _("Nightly Channel (Prerelease)") }) ] - }), w = jsxs("select", { + }), b = jsxs("select", { + id: "fluent-update-method", class: "cbi-input-select", - id: "update-method-select", children: [ jsx("option", { - value: "backend_official", + value: "", children: _("Backend (Official GitHub)") }), jsx("option", { - value: "backend_ghproxy", + value: "https://ghfast.top/", children: _("Backend (GHProxy Acceleration)") }) ] - }), v = jsx("button", { - class: "btn cbi-button cbi-button-action", + }), p = jsx("button", { type: "button", + class: "btn cbi-button-action", children: _("Check for updates") - }), k = jsxs("div", { - class: "fluent-update-controls", - style: "display: flex; gap: 15px; align-items: center; flex-wrap: wrap;", - children: [ - jsxs("div", { - class: "fluent-update-channel-selector", - children: [ - jsxs("label", { - htmlFor: "update-channel-select", - children: [ - _("Update channel"), - ": " - ] - }), - m - ] - }), - v - ] - }), x = jsx("div", { + }), f = jsx("p", { class: "fluent-update-status", - style: "display: none" - }), T = jsx("div", { - class: "fluent-progress-bar__fill", - style: "width: 0%" - }), C = jsx("div", { - class: "fluent-progress-bar", - style: "display: none", - children: T - }), S = jsx("div", { - class: "fluent-progress-text", - style: "display: none" - }), $ = jsx("div", { + role: "status" + }), g = jsx("div", { class: "fluent-update-card", - style: "display: none" - }), F = jsxs("div", { + hidden: !0 + }), m = jsx("pre", { + class: "fluent-update-changelog", + hidden: !0 + }), w = jsx("button", { + type: "button", + class: "btn cbi-button-action", + hidden: !0, + onclick: ()=>window.location.reload(), + children: _("Reload Web Interface") + }), v = jsxs("div", { class: "fluent-about-manager", children: [ - g, - y, + jsxs("div", { + class: "fluent-about-logo", + children: [ + jsx("img", { + src: `${L.media()}/img/fluent.svg`, + alt: "" + }), + jsx("h2", { + children: "Fluent Theme" + }), + jsx("p", { + class: "fluent-about-subtitle", + children: _("Fluent Design 2 theme for LuCI") + }) + ] + }), + jsxs("div", { + class: "fluent-about-details", + children: [ + jsxs("div", { + class: "fluent-about-detail-row", + children: [ + jsxs("strong", { + children: [ + _("Author"), + ":" + ] + }), + jsx("span", { + children: "LazuliKao" + }) + ] + }), + jsxs("div", { + class: "fluent-about-detail-row", + children: [ + jsxs("strong", { + children: [ + _("Installed version"), + ":" + ] + }), + c + ] + }), + jsxs("div", { + class: "fluent-about-detail-row", + children: [ + jsxs("strong", { + children: [ + _("Package format"), + ":" + ] + }), + u + ] + }), + jsxs("div", { + class: "fluent-about-detail-row", + children: [ + jsxs("strong", { + children: [ + _("Source code"), + ":" + ] + }), + jsx("a", { + href: "https://github.com/LazuliKao/luci-theme-fluent", + target: "_blank", + rel: "noreferrer", + children: "GitHub" + }) + ] + }) + ] + }), jsx("hr", { class: "fluent-about-divider" }), jsx("h3", { children: _("Software Update") }), - k, - x, - $, - C, - S + jsxs("div", { + class: "fluent-update-controls", + children: [ + jsx("label", { + htmlFor: "fluent-update-channel", + children: _("Update channel") + }), + h, + jsx("label", { + htmlFor: "fluent-update-method", + children: _("Download method") + }), + b, + p + ] + }), + f, + g, + m, + w ] - }), P = (e, t = "info")=>{ - dom.content(x, [ - document.createTextNode(e) - ]), x.className = `fluent-update-status status-${t}`, x.style.display = "block"; - }, A = (e, t, a)=>{ - C.style.display = "block", S.style.display = "block", T.style.width = `${t}%`, T.className = `fluent-progress-bar__fill fill-${e}`, dom.content(S, [ - document.createTextNode(`${a} (${t}%)`) - ]); - }, z = ()=>{ - C.style.display = "none", S.style.display = "none"; - }; - (async ()=>{ + }); + function y(e, t = "info") { + f.textContent = e, f.className = `fluent-update-status status-${t}`; + } + function k(e) { + h.disabled = b.disabled = p.disabled = e, g.querySelectorAll("button").forEach((t)=>{ + t.disabled = e; + }); + } + async function C(e) { + let t = e, a = Date.now() + 1200000; + k(!0); try { - let e = await callGetVersion(); - h = e.version, b = e.pkg_type, f = e.installed_i18n || (e.i18n_zh_cn_installed ? [ - "zh-cn" - ] : []); - let t = y.querySelector(".fluent-about-current-version"); - t && (t.textContent = `v${h}`); - let a = y.querySelector(".fluent-about-pkg-type"); - a && (a.textContent = "apk" === b ? "APK (OpenWrt 25.12+)" : "IPK (OpenWrt 24.10)"); + for(; v.isConnected;){ + if (0 !== t.result) throw Error(t.message || _("Unable to read update status.")); + if (m.hidden = !t.log, m.textContent !== t.log && (m.textContent = t.log ?? ""), "done" === t.stage) { + y(_("Theme successfully updated. Reload the web interface to use the new version."), "success"), w.hidden = !1; + return; + } + if ("error" === t.stage) return void y(_("Update failed. Check the installation log below."), "error"); + if ("downloading" !== t.stage && "installing" !== t.stage) throw Error(_("Unexpected update status.")); + if (y("downloading" === t.stage ? _("Downloading and verifying packages...") : _("Installing packages...")), Date.now() >= a) throw Error(_("Timed out waiting for update status.")); + if (await new Promise((e)=>setTimeout(e, 1000)), !v.isConnected) return; + if (!t.job) throw Error(_("Missing update job.")); + t = await callUpdateStatus(t.job); + } } catch (e) { - console.error("Failed to fetch version", e), P(_("Failed to fetch current theme version."), "error"); + y(`${_("Update status unavailable. Reload and sign in again to check the result.")} ${String(e)}`, "warn"), w.hidden = !1; + } finally{ + k(!1); } - })(); - let N = async (l)=>{ - let s = m.value; + } + async function x(n) { + k(!0), g.hidden = !0, y(_("Checking for updates...")); try { - let c = await fetchLatestRelease(s, b, f, l); - console.log(c), v.disabled = !1; - let u = h.replace(/^v/, "").trim(), p = c.tag_name.replace(/^v/, "").trim(), g = L.naturalCompare(p, u) > 0, y = !g && "nightly" !== s; - if (y ? P(_("Your theme is up to date!"), "success") : P(g ? _("A new version is available!") : _("Nightly build available (reinstallation check)."), g ? "warn" : "info"), !c.package_asset) return void P(_("No matching package asset found for your system architecture in this release."), "error"); - let k = c.body ? c.body : "", x = jsx("button", { - class: "btn cbi-button cbi-button-save", + let a = await fetchLatestRelease(h.value, d.pkg_type, d.installed_i18n, n), i = a.package_asset; + if (!i) throw Error(_("No matching theme package found in this release.")); + let o = d.version.replace(/^v/, ""), c = a.tag_name.replace(/^v/, ""), u = "stable" === h.value && 0 >= L.naturalCompare(c, o), p = jsx("button", { type: "button", - style: "white-space: nowrap;", + class: "btn cbi-button-save", children: _("Download and Install") - }), T = [ + }); + dom.content(g, [ jsxs("div", { class: "fluent-update-header", children: [ jsx("span", { class: "fluent-update-badge", - children: "nightly" === p ? "Nightly" : `v${p}` + children: a.tag_name }), jsx("span", { - class: "fluent-update-date", - children: c.published_at.split("T")[0] + children: a.published_at.split("T")[0] }) ] - }) - ]; - k && T.push(jsx("pre", { - class: "fluent-update-changelog", - children: k - })), y || T.push(jsxs("div", { - class: "fluent-update-footer", - style: "display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 15px; flex-wrap: wrap;", - children: [ - w, - x + }), + jsx("pre", { + class: "fluent-update-changelog", + children: a.body + }), + ...u ? [] : [ + p ] - })), dom.content($, T), $.style.display = "block", x.addEventListener("click", async ()=>{ - let l = c.package_asset; - if (!l) return void P(_("No matching package asset found for your system architecture in this release."), "error"); - x.disabled = !0, m.disabled = !0, w.disabled = !0, v.disabled = !0, P(_("Starting update process..."), "info"); - let s = c.i18n_assets || [], d = null, u = []; - for (let e of (l.digest?.startsWith("sha256:") ? d = l.digest.replace("sha256:", "") : (console.warn("Unable to determine expected package hash from digest. Skipping verification."), d = "skip"), s))e.digest?.startsWith("sha256:") ? u.push(e.digest.replace("sha256:", "")) : u.push("skip"); - let p = async ()=>{ - let c = w.value.includes("ghproxy"); - P(_("Starting backend download..."), "info"), A("download", 0, _("Downloading on router")); - let p = c ? about_n + l.browser_download_url : l.browser_download_url, h = s.map((e)=>c ? about_n + e.browser_download_url : e.browser_download_url).join(" "), b = await callStartDownload(p, h.split(" ")[0] || "", h); - if (0 !== b.result) throw Error(b.message || "Failed to start router download."); - for(;;){ - let e = await callCheckDownload(), t = e.size || 0, a = s.reduce((e, t)=>e + (t.size || 0), 0), n = l.size + a, i = n > 0 ? Math.min(Math.round(t / n * 100), 100) : 0; - if (A("download", i, `${_("Downloading on router")} (${(t / 1024).toFixed(0)} / ${(n / 1024).toFixed(0)} KB)`), !e.running) if (0 !== e.code) throw Error("Router background download failed or file is empty."); - else break; - await new Promise((e)=>setTimeout(e, 1000)); - } - if (!await new Promise((l)=>{ - L.ui.showModal(_("Confirm Installation"), jsxs(Fragment, { - children: [ - jsx("div", { - children: jsx("p", { - children: _("The theme package is ready. Are you sure you want to proceed with the installation?") - }) - }), - jsxs("div", { - class: "right", - children: [ - jsx("button", { - type: "button", - class: "btn", - onclick: ()=>{ - L.ui.hideModal(), l(!1); - }, - children: _("Cancel") - }), - jsx("button", { - type: "button", - class: "btn cbi-button-action", - onclick: ()=>{ - L.ui.hideModal(), l(!0); - }, - children: _("Continue") - }) - ] - }) - ] - })); - })) throw Error(_("Installation cancelled by user.")); - P(_("Triggering installation on router..."), "info"), A("install", 100, _("Installing package")); - let f = await callDoInstall(d, u[0] || "", u.join(" ")); - if (0 !== f.result) throw Error(f.message || "Router installation failed."); - let g = jsx("pre", { - style: "background: var(--fluent-code-bg, #1a1a1a); color: var(--fluent-text, #fff); padding: 10px; border-radius: 4px; font-family: monospace; font-size: 12px; white-space: pre-wrap; word-wrap: break-word; max-height: 200px; overflow-y: auto; margin-top: 15px;" - }); - (async ()=>{ - let e = L.env.ubuspath || "/ubus", t = L.env.sessionid; - for(;;)try { - let a = await fetch(e, { - method: "POST", - headers: { - "Content-Type": "application/json" - }, - body: JSON.stringify({ - jsonrpc: "2.0", - id: 1, - method: "call", - params: [ - t, - "luci.fluent", - "get_install_log", - {} - ] - }) - }), l = await a.json(); - if (l.error) break; - l.result?.[1]?.log && (g.textContent = l.result[1].log, g.scrollTop = g.scrollHeight), await new Promise((e)=>setTimeout(e, 1000)); - } catch { - break; - } - })(), P(_("Theme successfully updated! Reloading RPC service, please refresh the page in 5 seconds."), "success"), A("done", 100, _("Finished")), dom.content($, [ - jsxs("div", { - class: "fluent-update-success", - children: [ - jsx("h3", { - style: "color: var(--fluent-success); text-align: center;", - children: _("Upgrade Successful!") - }), - jsx("p", { - style: "text-align: center; margin: 15px 0;", - children: _("The theme is being installed on your router. The logs are displayed below. Reloading the web interface will apply the changes once RPCD restarts.") - }), - g, - jsx("div", { - style: "display: flex; justify-content: center; margin-top: 20px;", - children: jsx("button", { - class: "btn cbi-button-action", - type: "button", - style: "margin-top: 15px", - onclick: ()=>{ - window.location.reload(); - }, - children: _("Reload Web Interface") - }) - }) - ] - }) - ]); - }; + ]), g.hidden = !1, y(u ? _("Your theme is up to date!") : _("A new version is available!"), u ? "success" : "info"), p.addEventListener("click", async ()=>{ + k(!0), m.hidden = w.hidden = !0; try { - await p(); + let e = updateManifest([ + i, + ...a.i18n_assets + ], b.value), t = await callStartUpdate(e); + if (0 !== t.result || !t.job) throw Error(t.message || _("Unable to start update.")); + await C({ + result: 0, + job: t.job, + stage: "downloading" + }); } catch (e) { - console.error("Update failed", e), P(`${_("Update failed")}: ${e instanceof Error ? e.message : String(e)}`, "error"), x.disabled = !1, x.removeAttribute("disabled"), m.disabled = !1, m.removeAttribute("disabled"), w.disabled = !1, w.removeAttribute("disabled"), v.disabled = !1, v.removeAttribute("disabled"), z(); + y(`${_("Unable to start update.")} ${String(e)}`, "error"); + } finally{ + k(!1); } }); - } catch (l) { - if (v.disabled = !1, console.error("Failed checking updates", l), l instanceof GitHubAPIError && 403 === l.status) { + } catch (n) { + if (y(String(n), "error"), n instanceof GitHubAPIError && (403 === n.status || 429 === n.status)) { let n = jsx("input", { - type: "text", + type: "password", class: "cbi-input-text", - style: "width: 100%", - placeholder: "ghp_..." - }), r = jsx("p", { - children: _("API rate limit exceeded. Please enter a GitHub Token to continue. This token is only used for frontend requests and will not be saved on the router backend.") - }), i = jsxs("p", { - style: "margin-top: 10px; font-size: 13px; color: var(--fluent-text-secondary);", - children: [ - _("You can create a new token at"), - " ", - jsx("a", { - href: "https://github.com/settings/personal-access-tokens", - target: "_blank", - rel: "noopener noreferrer", - children: "https://github.com/settings/personal-access-tokens/new" - }), - ".", - _("The token does NOT require any permissions/scopes to be granted (read-only public access is sufficient).") - ] - }), s = jsx("pre", { - style: "margin-top: 10px; margin-bottom: 15px; font-size: 12px; white-space: pre-wrap; word-break: break-word; color: var(--fluent-error-text); background: var(--fluent-card-bg); padding: 8px; border-radius: var(--fluent-border-radius);", - children: l instanceof Error ? l.message : String(l) + "aria-label": _("GitHub token"), + autocomplete: "off" }); L.ui.showModal(_("GitHub Token Required"), jsxs(Fragment, { children: [ - r, - i, - s, + jsx("p", { + children: _("API rate limit exceeded. Please enter a GitHub Token to continue. This token is only used for frontend requests and will not be saved on the router backend.") + }), n, jsxs("div", { class: "right", @@ -559,7 +425,7 @@ let about_u = about_l.DummyValue.extend({ class: "btn cbi-button-save", onclick: ()=>{ let e = n.value.trim(); - L.ui.hideModal(), e && (P(_("Retrying with token..."), "info"), v.disabled = !0, N(e)); + L.ui.hideModal(), e && x(e); }, children: _("Submit") }) @@ -567,16 +433,31 @@ let about_u = about_l.DummyValue.extend({ }) ] })); - } else P(`${_("Failed to check for updates")}: ${l instanceof Error ? l.message : String(l)}`, "error"); + } + } finally{ + k(!1); } - }; - return v.addEventListener("click", ()=>{ - P(_("Checking for updates..."), "info"), v.disabled = !0, $.style.display = "none", z(), N(); - }), F; + } + return k(!0), (async ()=>{ + try { + if (!(d = await callGetVersion()).version || ![ + "ipk", + "apk" + ].includes(d.pkg_type)) throw Error(_("Unable to determine installed theme version.")); + c.textContent = d.version, u.textContent = d.pkg_type.toUpperCase(), p.addEventListener("click", ()=>{ + x(); + }); + let e = await callUpdateStatus(""); + if (0 !== e.result) throw Error(e.message); + "idle" !== e.stage && await C(e), k(!1); + } catch (e) { + y(String(e), "error"); + } + })(), v; } }); const registerAboutTab = (e)=>{ - e.tab("about", _("About")), e.taboption("about", about_u, "_about_mgr"); + e.tab("about", _("About")), e.taboption("about", about_d, "_about_mgr"); }; ;// CONCATENATED MODULE: ./web/resources/fluent-defaults.ts diff --git a/luci-theme-fluent/root/usr/libexec/fluent/update b/luci-theme-fluent/root/usr/libexec/fluent/update new file mode 100755 index 000000000..c56223ce5 --- /dev/null +++ b/luci-theme-fluent/root/usr/libexec/fluent/update @@ -0,0 +1,125 @@ +#!/bin/sh + +# The worker is copied into its job directory before launch: upgrading this +# package must not replace the script while the shell is still reading it. +if [ "$1" = worker ]; then + job="$2" + stage() { printf '%s\n' "$1" > "$job/state.tmp" && mv "$job/state.tmp" "$job/state"; } + finish() { + code=$? + trap - EXIT + if [ "$code" -ne 0 ]; then + printf 'Update failed (exit %s).\n' "$code" + stage error + fi + rm -f "$job"/*.ipk "$job"/*.apk + exit "$code" + } + trap finish EXIT + trap 'exit 1' HUP INT TERM + set -e + stage downloading + set -- + i=0 + while IFS="$(printf '\t')" read -r hash url; do + i=$((i + 1)) + file="$job/$i.$(cat "$job/format")" + printf 'Downloading package %s...\n' "$i" + if command -v uclient-fetch >/dev/null 2>&1; then + uclient-fetch -T 60 -O "$file" "$url" + else + wget -T 60 -O "$file" "$url" + fi + printf '%s %s\n' "$hash" "$file" | sha256sum -c - + set -- "$@" "$file" + done < "$job/packages" + [ "$#" -gt 0 ] + stage installing + if [ "$(cat "$job/format")" = apk ]; then + apk add --allow-untrusted "$@" + else + opkg install "$@" + fi + stage done + exit 0 +fi + +. /usr/share/libubox/jshn.sh +umask 077 +work=/tmp/fluent-updater + +error() { + json_init + json_add_int result 1 + json_add_string message "$1" + json_dump + exit 0 +} + +read -r input +json_load "$input" || error 'Invalid request' + +case "$1" in + start_update) + json_get_var manifest manifest + json_load "$manifest" || error 'Invalid package manifest' + json_select packages || error 'Missing packages' + json_get_keys keys + [ -n "$keys" ] || error 'Missing packages' + mkdir -p "$work" || error 'Unable to create update directory' + exec 9>"$work/lock" + flock -n 9 || error 'An update is already running' + job=$(mktemp -d "$work/job.XXXXXX") || error 'Unable to create update job' + trap 'rm -rf "$job"' EXIT + count=0 + for key in $keys; do + count=$((count + 1)) + [ "$count" -le 32 ] || error 'Too many packages' + json_select "$key" || error 'Invalid package' + json_get_var url url + json_get_var hash sha256 + case "$url" in https://?*) ;; *) error 'Package URLs must use HTTPS' ;; esac + case "$url" in *[[:space:]]*) error 'Invalid package URL' ;; esac + case "$hash" in ''|*[!a-fA-F0-9]*) error 'Invalid SHA-256 digest' ;; esac + [ "${#hash}" -eq 64 ] || error 'Missing SHA-256 digest' + printf '%s\t%s\n' "$hash" "$url" >> "$job/packages" || error 'Unable to write package manifest' + json_select .. + done + if command -v apk >/dev/null 2>&1; then echo apk; else echo ipk; fi > "$job/format" || error 'Unable to write package format' + cp "$0" "$job/worker" || error 'Unable to prepare update worker' + echo downloading > "$job/state" || error 'Unable to write update state' + # Keep only the latest job, under the same lock as the worker. + for old in "$work"/job.*; do + [ "$old" = "$job" ] || rm -rf "$old" + done + printf '%s\n' "${job##*/}" > "$work/latest.tmp" && mv "$work/latest.tmp" "$work/latest" || error 'Unable to publish update job' + nohup setsid /bin/sh "$job/worker" worker "$job" > "$job/log" 2>&1 < /dev/null & + echo "$!" > "$job/pid" + trap - EXIT + json_init + json_add_int result 0 + json_add_string job "${job##*/}" + json_dump + ;; + update_status) + json_get_var id job + [ -n "$id" ] || id=$(cat "$work/latest" 2>/dev/null) + case "$id" in job.*) ;; '') echo '{"result":0,"stage":"idle"}'; exit 0 ;; *) error 'Invalid job' ;; esac + case "$id" in *[!a-zA-Z0-9.]*) error 'Invalid job' ;; esac + job="$work/$id" + [ -f "$job/state" ] || error 'Update job no longer available' + state=$(cat "$job/state") + case "$state" in + downloading|installing) + pid=$(cat "$job/pid" 2>/dev/null) + [ -z "$pid" ] || kill -0 "$pid" 2>/dev/null || state=error + ;; + esac + json_init + json_add_int result 0 + json_add_string job "$id" + json_add_string stage "$state" + json_add_string log "$(tail -n 100 "$job/log" 2>/dev/null)" + json_dump + ;; +esac diff --git a/luci-theme-fluent/root/usr/libexec/rpcd/luci.fluent b/luci-theme-fluent/root/usr/libexec/rpcd/luci.fluent index e5fcf9ff2..6282c69fc 100755 --- a/luci-theme-fluent/root/usr/libexec/rpcd/luci.fluent +++ b/luci-theme-fluent/root/usr/libexec/rpcd/luci.fluent @@ -1,274 +1,86 @@ #!/bin/sh -. /lib/functions.sh . /usr/share/libubox/jshn.sh -if command -v apk >/dev/null 2>&1; then - PKG_EXT=".apk" -else - PKG_EXT=".ipk" -fi - readonly bg_path="/www/luci-static/fluent/background" readonly tmp_path="/tmp/fluent_background.tmp" -readonly update_pkg="/tmp/fluent-update${PKG_EXT}" -readonly i18n_pkg="/tmp/fluent-i18n-update${PKG_EXT}" case "$1" in - "list") - json_init - json_add_object "avail" - json_close_object - json_add_object "remove" - json_add_string "filename" "filename" - json_close_object - json_add_object "rename" - json_add_string "newname" "filename" - json_close_object - json_add_object "set_mode" - json_add_string "mode" "mode" - json_close_object - json_add_object "get_version" - json_close_object - json_add_object "start_download" - json_add_string "url" "url" - json_add_string "i18n_url" "i18n_url" - json_add_string "i18n_urls" "i18n_urls" - json_close_object - json_add_object "check_download" - json_close_object - json_add_object "do_install" - json_add_string "hash" "hash" - json_add_string "i18n_hash" "i18n_hash" - json_add_string "i18n_hashes" "i18n_hashes" - json_close_object - json_add_object "get_install_log" - json_close_object - json_dump - json_cleanup - ;; -"call") - case "$2" in - "avail") + list) json_init - json_add_int "avail" "$(df | grep -E '/$' | awk '{print $4}')" + for method in avail get_version; do + json_add_object "$method" + json_close_object + done + for pair in remove:filename rename:newname set_mode:mode start_update:manifest update_status:job; do + json_add_object "${pair%:*}" + json_add_string "${pair#*:}" "" + json_close_object + done json_dump - json_cleanup ;; - "remove") - read -r input - json_load "$input" - json_get_var filename "filename" - json_cleanup - if dirname "$filename" | grep -q ".."; then - echo '{ "result": 255 }' - exit 255 - fi - rm -f "$bg_path/$filename" - echo '{ "result": 0 }' - ;; - "rename") - read -r input - json_load "$input" - json_get_var newname "newname" - json_cleanup - if dirname "$newname" | grep -q ".."; then - echo '{ "result": 255 }' - exit 255 - fi - mkdir -p "$bg_path" - if mv "$tmp_path" "$bg_path/$newname" 2>"/dev/null"; then - chmod 0644 "$bg_path/$newname" - echo '{ "result": 0 }' - else - echo '{ "result": 1 }' - fi - ;; - "set_mode") - read -r input - json_load "$input" - json_get_var mode "mode" - json_cleanup - case "$mode" in - light|dark|auto) ;; - *) - echo '{ "result": 255 }' - exit 255 + call) + case "$2" in + start_update|update_status) + exec /bin/sh /usr/libexec/fluent/update "$2" + ;; + avail) + json_init + json_add_int avail "$(df | grep -E '/$' | awk '{print $4}')" + json_dump + ;; + remove|rename) + read -r input + json_load "$input" + if [ "$2" = remove ]; then + json_get_var name filename + else + json_get_var name newname + fi + case "$name" in + ''|.|..|*/*) echo '{"result":255}'; exit 0 ;; + esac + if [ "$2" = remove ]; then + rm -f "$bg_path/$name" + result=$? + else + mkdir -p "$bg_path" + mv "$tmp_path" "$bg_path/$name" && chmod 0644 "$bg_path/$name" + result=$? + fi + printf '{"result":%s}\n' "$result" + ;; + set_mode) + read -r input + json_load "$input" + json_get_var mode mode + case "$mode" in + light|dark|auto) ;; + *) echo '{"result":255}'; exit 0 ;; + esac + uci -q set fluent.@global[0].mode="$mode" && uci -q commit fluent + printf '{"result":%s}\n' "$?" + ;; + get_version) + if command -v apk >/dev/null 2>&1; then + pkg_type=apk + version=$(apk list -I luci-theme-fluent 2>/dev/null | awk '{print $1}' | sed 's/^luci-theme-fluent-//' | head -1) + installed_i18n=$(apk info 2>/dev/null | sed -n 's/^luci-i18n-fluent-//p') + else + pkg_type=ipk + version=$(opkg status luci-theme-fluent 2>/dev/null | sed -n 's/^Version: //p') + installed_i18n=$(opkg list-installed 2>/dev/null | awk '/^luci-i18n-fluent-/ { sub(/^luci-i18n-fluent-/, "", $1); print $1 }') + fi + json_init + json_add_string version "$version" + json_add_string pkg_type "$pkg_type" + json_add_array installed_i18n + for lang in $installed_i18n; do + json_add_string "" "$lang" + done + json_close_array + json_dump ;; esac - if uci -q set fluent.@global[0].mode="$mode" && uci -q commit fluent; then - echo '{ "result": 0 }' - else - echo '{ "result": 1 }' - fi ;; - "get_version") - version="" - pkg_type="ipk" - i18n_installed=0 - installed_i18n="" - if command -v apk >/dev/null 2>&1; then - pkg_type="apk" - version=$(apk list -I luci-theme-fluent 2>/dev/null | awk '{print $1}' | sed 's/^luci-theme-fluent-//' | head -1) - installed_i18n=$(apk list -I 2>/dev/null | grep -E '^luci-i18n-fluent-' | awk '{print $1}' | sed 's/^luci-i18n-fluent-//') - else - version=$(opkg status luci-theme-fluent 2>/dev/null | grep -m1 'Version:' | awk '{print $2}') - installed_i18n=$(opkg list-installed 2>/dev/null | grep -E '^luci-i18n-fluent-' | awk '{print $1}' | sed 's/^luci-i18n-fluent-//') - fi - if echo "$installed_i18n" | grep -q "^zh-cn$"; then - i18n_installed=1 - fi - if [ -z "$version" ]; then - version="1.0.1-dev" - fi - json_init - json_add_string "version" "$version" - json_add_string "pkg_type" "$pkg_type" - json_add_boolean "i18n_zh_cn_installed" "$i18n_installed" - json_add_array "installed_i18n" - for lang in $installed_i18n; do - json_add_string "" "$lang" - done - json_close_array - json_dump - json_cleanup - ;; - "start_download") - read -r input - json_load "$input" - json_get_var url "url" - json_get_var i18n_url "i18n_url" - json_get_var i18n_urls "i18n_urls" - json_cleanup - - rm -f "$update_pkg" - rm -f /tmp/fluent-i18n-* - rm -f /tmp/fluent-update.log - - if [ -n "$url" ]; then - download_cmd="" - if command -v uclient-fetch >/dev/null 2>&1; then - download_cmd="uclient-fetch -O $update_pkg \"$url\"" - urls_to_dl="${i18n_urls:-$i18n_url}" - idx=1 - for u in $urls_to_dl; do - download_cmd="$download_cmd && uclient-fetch -O /tmp/fluent-i18n-${idx}${PKG_EXT} \"$u\"" - idx=$((idx + 1)) - done - else - download_cmd="wget -O $update_pkg \"$url\"" - urls_to_dl="${i18n_urls:-$i18n_url}" - idx=1 - for u in $urls_to_dl; do - download_cmd="$download_cmd && wget -O /tmp/fluent-i18n-${idx}${PKG_EXT} \"$u\"" - idx=$((idx + 1)) - done - fi - nohup sh -c "$download_cmd >/tmp/fluent-update.log 2>&1" >/dev/null 2>&1 & - echo '{ "result": 0 }' - else - echo '{ "result": 255, "message": "Missing URL" }' - fi - ;; - "check_download") - json_init - size1=$(ls -l $update_pkg 2>/dev/null | awk '{print $5}') - size2=$(ls -l /tmp/fluent-i18n-* 2>/dev/null | awk '{sum+=$5} END {print sum}') - size=$(( ${size1:-0} + ${size2:-0} )) - json_add_int "size" "$size" - - if pgrep -f "fluent-update" >/dev/null; then - json_add_boolean "running" 1 - else - json_add_boolean "running" 0 - if [ "$size" -eq 0 ]; then - # If process exited and size is 0, download failed - json_add_int "code" 255 - else - json_add_int "code" 0 - fi - fi - json_dump - json_cleanup - ;; - "do_install") - read -r input - json_load "$input" - json_get_var hash "hash" - json_get_var i18n_hash "i18n_hash" - json_get_var i18n_hashes "i18n_hashes" - json_cleanup - - if [ -z "$hash" ]; then - echo '{ "result": 255, "message": "Missing hash parameter" }' - exit 255 - fi - - if [ ! -f "$update_pkg" ]; then - echo '{ "result": 255, "message": "Package file not found" }' - exit 255 - fi - - if [ "$hash" != "skip" ]; then - if ! echo "$hash" | grep -qE '^[0-9a-fA-F]{64}$'; then - echo '{ "result": 255, "message": "Invalid hash parameter" }' - exit 255 - fi - actual_hash=$(sha256sum "$update_pkg" | awk '{print $1}') - if [ "$actual_hash" != "$hash" ]; then - echo '{ "result": 255, "message": "Hash verification failed" }' - exit 255 - fi - fi - - hashes_to_check="${i18n_hashes:-$i18n_hash}" - if [ -n "$hashes_to_check" ]; then - idx=1 - for h in $hashes_to_check; do - target_i18n_pkg="/tmp/fluent-i18n-${idx}${PKG_EXT}" - if [ -f "$target_i18n_pkg" ] && [ "$h" != "skip" ]; then - if ! echo "$h" | grep -qE '^[0-9a-fA-F]{64}$'; then - echo '{ "result": 255, "message": "Invalid i18n hash parameter" }' - exit 255 - fi - actual_i18n_hash=$(sha256sum "$target_i18n_pkg" | awk '{print $1}') - if [ "$actual_i18n_hash" != "$h" ]; then - echo '{ "result": 255, "message": "i18n Hash verification failed" }' - exit 255 - fi - fi - idx=$((idx + 1)) - done - fi - - install_cmd="" - pkgs="$update_pkg" - i18n_files=$(ls /tmp/fluent-i18n-* 2>/dev/null) - if [ -n "$i18n_files" ]; then - pkgs="$pkgs $i18n_files" - fi - - if command -v apk >/dev/null 2>&1; then - install_cmd="apk add --allow-untrusted $pkgs" - else - install_cmd="opkg install $pkgs" - fi - - nohup sh -c "sleep 1 && $install_cmd > /tmp/fluent-install.log 2>&1 ; rm -f $pkgs ; /etc/init.d/rpcd restart" >/dev/null 2>&1 & - - echo '{ "result": 0 }' - ;; - "get_install_log") - json_init - if [ -f "/tmp/fluent-install.log" ]; then - json_add_string "log" "$(cat /tmp/fluent-install.log)" - else - json_add_string "log" "" - fi - json_dump - json_cleanup - ;; - esac - ;; esac - diff --git a/luci-theme-fluent/root/usr/share/rpcd/acl.d/luci-theme-fluent.json b/luci-theme-fluent/root/usr/share/rpcd/acl.d/luci-theme-fluent.json index c991b0f8b..dd3c88ce9 100644 --- a/luci-theme-fluent/root/usr/share/rpcd/acl.d/luci-theme-fluent.json +++ b/luci-theme-fluent/root/usr/share/rpcd/acl.d/luci-theme-fluent.json @@ -6,18 +6,16 @@ "/www/luci-static/fluent/background/*": [ "list" ] }, "ubus": { - "luci.fluent": [ "avail", "remove", "rename", "set_mode", "get_version", "check_download", "get_install_log" ] + "luci.fluent": [ "avail", "get_version", "update_status" ] }, "uci": [ "fluent" ] }, "write": { "file": { - "/tmp/fluent_background.tmp": [ "write" ], - "/tmp/fluent-update.ipk": [ "write" ], - "/tmp/fluent-update.apk": [ "write" ] + "/tmp/fluent_background.tmp": [ "write" ] }, "ubus": { - "luci.fluent": [ "set_mode", "do_install", "start_download" ] + "luci.fluent": [ "remove", "rename", "set_mode", "start_update" ] }, "uci": [ "fluent" ] } diff --git a/luci-theme-vantage/Makefile b/luci-theme-vantage/Makefile index c7e5ce2f4..714c048f3 100644 --- a/luci-theme-vantage/Makefile +++ b/luci-theme-vantage/Makefile @@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-theme-vantage -PKG_VERSION:=1.0.16 -PKG_RELEASE:=35 +PKG_VERSION:=1.0.17 +PKG_RELEASE:=36 PKG_LICENSE:=GPL-3.0-or-later LUCI_TITLE:=Vantage theme diff --git a/luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js b/luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js index b49a0c705..0473fc887 100644 --- a/luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js +++ b/luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js @@ -40,10 +40,20 @@ const BACKDROP_EVENT = 'vantage:backdrop'; save (those keys are dropped then); this browser's last pick (the old key, also what the dashboard reads under another theme) counts until the router has one. */ +/* this package's version, as its Makefile has it (tests/version.test.js) */ +const VERSION = '1.0.17'; +/* Check for updates (Appearance): when asked, never on its own, the browser + reads the project's 24.10 package list on GitHub Pages (the same release + as 25.12's), without cookies or a referrer. Only a version number passes; + the link is a constant, to the latest release. */ +const UPDATE_INDEX = 'https://anothadev.github.io/luci-theme-vantage/24.10/Packages'; + const LOOK = { theme: { own: 'vantage.theme.own', before: THEME_KEY, ok: [ 'auto', 'light', 'dark' ] }, login: { own: 'vantage.login.own', before: LOGIN_KEY, ok: [ 'grid', 'stars', 'none' ] }, - backdrop: { own: 'vantage.backdrop.own', before: BACKDROP_KEY, ok: [ 'grid', 'stars', 'none' ] } + backdrop: { own: 'vantage.backdrop.own', before: BACKDROP_KEY, ok: [ 'grid', 'stars', 'none' ] }, + /* what shows next to the logo; the hostname and model come from system board */ + brand: { own: 'vantage.brand.own', before: 'vantage.brand', ok: [ 'none', 'hostname', 'model' ] } }; const LOOK_SYNC = 'vantage.look'; /* another tab saved one: { name, value } */ const LOOK_SET_EVENT = 'vantage:backdrop-set'; /* the dashboard's own picker hands its pick over */ @@ -154,6 +164,23 @@ function svg(name, size) { function storageGet(k) { try { return localStorage.getItem(k); } catch (e) { return null; } } +/* '1.0.16' or '1.0.16-r1' -> [ 1, 0, 16 ]; null for anything else */ +function versionParts(v) { + const m = /^(\d{1,4}(?:\.\d{1,4}){1,3})(?:-r\d{1,4})?$/.exec(String(v == null ? '' : v)); + return m ? m[1].split('.').map(Number) : null; +} +function newerVersion(a, b) { + for (let i = 0; i < Math.max(a.length, b.length); i++) + if ((a[i] || 0) !== (b[i] || 0)) return (a[i] || 0) > (b[i] || 0); + return false; +} +/* the theme's version in an opkg package list, without its release */ +function listedVersion(text) { + const block = String(text || '').split(/\n\s*\n/).find(b => /^Package: luci-theme-vantage$/m.test(b)); + const m = block && /^Version: (\S+)$/m.exec(block); + return m && versionParts(m[1]) ? m[1].replace(/-r\d+$/, '') : null; +} + /* the value in force, from [ pending, own, router, before ]: the first the theme knows, else the first choice (the default); the templates' inline scripts and login.js do the same without the pending one */ @@ -176,6 +203,7 @@ function setLookAttr(root, name, value) { if (name === 'theme') root.setAttribute('data-vt-look-theme', value); else if (name === 'login') root.setAttribute('data-vt-look-login', value); else if (name === 'backdrop') root.setAttribute('data-vt-look-backdrop', value); + else if (name === 'brand') root.setAttribute('data-vt-look-brand', value); } function storageSet(k, v) { try { if (v == null) localStorage.removeItem(k); else localStorage.setItem(k, v); } catch (e) {} } @@ -452,20 +480,33 @@ function replaceTable(table, block) { } /* Memory: one bar. in use = total - available; cache (reclaimable) = - available - free; free = total - LuCI's "Used" (which is total - free). */ + available - free; free = total - LuCI's "Used" (which is total - free). + A table without "Total Available" (Kwrt's luci-mod-status, #103) is read + its own way, below. */ function enhanceMemory() { statusSections(_('Memory')).forEach(section => { const table = pendingTable(section); if (!table) return; const rows = barRows(table), get = l => (rows.find(r => r.label === l) || {}).pair; const avail = get(_('Total Available')), used = get(_('Used')), - buffered = get(_('Buffered')), cached = get(_('Cached')), swap = get(_('Swap free')); + buffered = get(_('Buffered')), cached = get(_('Cached')), + swapFree = get(_('Swap free')), swapUsed = get(_('Swap used')); const total = (used || avail || {}).total; if (!total || !used) return; - const free = Math.max(0, total - used.value); - let available = avail ? avail.value : free + (buffered ? buffered.value : 0) + (cached ? cached.value : 0); - available = Math.min(total, Math.max(available, free)); + let free, available; + /* the row decides, not its value: LuCI shows "?" when it has none */ + if (rows.some(r => r.label === _('Total Available'))) { + free = Math.max(0, total - used.value); + available = avail ? avail.value : free + (buffered ? buffered.value : 0) + (cached ? cached.value : 0); + available = Math.min(total, Math.max(available, free)); + } + else { + /* Kwrt: "Used" is total - MemAvailable. MemFree isn't shown, so the + cache stands for what is reclaimable and Free is an estimate. */ + available = Math.min(total, Math.max(0, total - used.value)); + free = Math.max(0, available - (cached ? cached.value : 0)); + } const inuse = total - available, reclaim = available - free; const usedPct = pctOf(inuse, total); @@ -489,14 +530,16 @@ function enhanceMemory() { ]) ]; + /* "Swap free" in LuCI's table, "Swap used" in Kwrt's */ + const swap = swapFree ? { used: Math.max(0, swapFree.total - swapFree.value), total: swapFree.total } + : swapUsed ? { used: swapUsed.value, total: swapUsed.total } : null; if (swap) { - const swapUsed = swap.total - swap.value; children.push(E('div', { 'class': 'v-meter-rows v-meter-swap' }, E('div', { 'class': 'v-meter-row' }, [ E('span', { 'class': 'v-meter-label' }, [ _('Swap', 'vantage-theme') ]), E('div', { 'class': 'v-meter-bar is-thin', 'role': 'img', - 'aria-label': '%s: %s / %s'.format(_('Swap', 'vantage-theme'), fmtBytes(swapUsed), fmtBytes(swap.total)) }, - segment('v-seg-used', swapUsed, swap.total)), - E('span', { 'class': 'v-meter-val' }, [ E('b', {}, [ fmtBytes(swapUsed) ]), ' / ' + fmtBytes(swap.total) ]) + 'aria-label': '%s: %s / %s'.format(_('Swap', 'vantage-theme'), fmtBytes(swap.used), fmtBytes(swap.total)) }, + segment('v-seg-used', swap.used, swap.total)), + E('span', { 'class': 'v-meter-val' }, [ E('b', {}, [ fmtBytes(swap.used) ]), ' / ' + fmtBytes(swap.total) ]) ]))); } @@ -1549,6 +1592,29 @@ return baseclass.extend({ this.syncAppearance(); }, + /* next to the logo: nothing unless set. In the rail when it is pinned + open, else first in the top bar (vantage.css); text only */ + brandPref() { + return this.lookPref('brand'); + }, + + setBrandPref(pref) { + this.setLook('brand', pref, () => this.applyBrand()); + }, + + applyBrand() { + const v = this.brandPref(), b = this.board; + const name = !b ? '' : v === 'hostname' ? (host.chipNames(b.hostname, '')[0] || '') : v === 'model' ? host.productName(b) : ''; + [ 'vt-brand-name', 'vt-top-name' ].forEach(id => { + const el = document.getElementById(id); + if (!el) return; + if (el.textContent !== name) el.textContent = name; + el.title = name; + el.hidden = !name; + }); + this.syncAppearance(); + }, + /* the login page's backdrop (login.js): grid packets unless set */ loginPref() { return this.lookPref('login'); @@ -1620,6 +1686,7 @@ return baseclass.extend({ } this.applyTheme(); this.applyBackdrop(); + this.applyBrand(); }); /* the dashboard's own picker (Customize), saved as Appearance's */ window.addEventListener(LOOK_SET_EVENT, ev => { @@ -1641,6 +1708,7 @@ return baseclass.extend({ }); this.applyTheme(); this.applyBackdrop(); + this.applyBrand(); }, /* Appearance, under the colour-theme button: the colour theme, the @@ -1651,7 +1719,7 @@ return baseclass.extend({ scrolling the page close it. */ /* one of Appearance's radio groups */ appearGroup(name, legend, opts, set) { - const look = { 'vt-colour': 'theme', 'vt-login': 'login', 'vt-backdrop': 'backdrop' }[name]; + const look = { 'vt-colour': 'theme', 'vt-logo-name': 'brand', 'vt-login': 'login', 'vt-backdrop': 'backdrop' }[name]; return E('fieldset', { 'class': 'vt-appear-set' }, [ E('legend', {}, [ legend ]), E('div', { 'class': 'vt-appear-track' }, opts.map(o => { @@ -1678,16 +1746,22 @@ return baseclass.extend({ group('vt-colour', _('Colour theme'), [ [ 'auto', _('Auto', 'vantage-theme'), 'auto' ], [ 'light', _('Light', 'vantage-theme'), 'sun' ], [ 'dark', _('Dark', 'vantage-theme'), 'moon' ] ], v => this.setTheme(v)), + group('vt-logo-name', _('Next to the logo'), [ + [ 'none', _('Logo only') ], [ 'hostname', _('Hostname') ], [ 'model', _('Model') ] + ], v => this.setBrandPref(v)), group('vt-login', _('Login background'), [ [ 'grid', login.grid ], [ 'stars', login.stars ], [ 'none', login.none ] ], v => this.setLoginPref(v)) ].concat(this.hasDashboard() ? [ this.backdropGroup() ] : [], [ /* where the picks are kept, when not for every browser (syncAppearance) */ - (this.appearNote = E('p', { 'class': 'vt-appear-note', 'role': 'status', 'hidden': 'hidden' })) + (this.appearNote = E('p', { 'class': 'vt-appear-note', 'role': 'status', 'hidden': 'hidden' })), + this.versionEl() ])); box.addEventListener('keydown', ev => { if (ev.key === 'Escape') { ev.preventDefault(); ev.stopPropagation(); this.closeAppearance(true); } else if (ev.key === 'Tab') { const sets = box.querySelectorAll('fieldset'); - const edge = ev.shiftKey ? sets[0] : sets[sets.length - 1]; + /* forward, the panel ends at the update check's link when it has one */ + const last = Array.prototype.slice.call(box.querySelectorAll('.vt-appear-ver button, .vt-appear-ver a[href]')).pop(); + const edge = ev.shiftKey ? sets[0] : (last || sets[sets.length - 1]); if (edge.contains(ev.target)) { ev.preventDefault(); this.closeAppearance(true); } } }); @@ -1704,9 +1778,51 @@ return baseclass.extend({ return (this.appear = box); }, + /* "Vantage 1.0.16 · Check for updates", and what the check found */ + versionEl() { + const btn = E('button', { 'type': 'button', 'class': 'vt-appear-check' }, [ _('Check for updates') ]); + const out = E('span', { 'class': 'vt-appear-update', 'role': 'status', 'hidden': 'hidden' }); + btn.addEventListener('click', () => this.checkUpdates(btn, out)); + return E('p', { 'class': 'vt-appear-ver' }, [ E('span', { 'class': 'vt-appear-num' }, [ 'Vantage ' + VERSION ]), ' · ', btn, out ]); + }, + + releaseLink(label) { + return E('a', { 'href': 'https://github.com/anothaDev/luci-theme-vantage/releases/latest', 'target': '_blank', 'rel': 'noopener noreferrer' }, [ label ]); + }, + + checkUpdates(btn, out) { + /* aria-disabled, not disabled: a disabled button drops the focus, + and with it the panel's keys */ + if (btn.getAttribute('aria-disabled') === 'true') return; + btn.setAttribute('aria-disabled', 'true'); + out.textContent = _('Checking…'); + out.hidden = false; + const ctl = window.AbortController ? new AbortController() : null; + const timer = ctl ? setTimeout(() => ctl.abort(), 10000) : 0; + fetch(UPDATE_INDEX, { cache: 'no-store', credentials: 'omit', referrerPolicy: 'no-referrer', signal: ctl ? ctl.signal : undefined }) + .then(r => r.ok ? r.text() : Promise.reject(new Error('HTTP ' + r.status))) + .then(text => { + const latest = listedVersion(text); + if (!latest) throw new Error('no version'); + out.textContent = ''; + if (newerVersion(versionParts(latest), versionParts(VERSION))) { + out.appendChild(document.createTextNode(_('Version %s is available.').format(latest) + ' ')); + out.appendChild(this.releaseLink(_('What\'s new'))); + } + else out.textContent = _('Up to date'); + }) + /* offline, or a router whose pages forbid the request (a + Content-Security-Policy): the release page still opens */ + .catch(() => { + out.textContent = _('Could not check for updates.') + ' '; + out.appendChild(this.releaseLink(_('See the latest release'))); + }) + .then(() => { clearTimeout(timer); btn.removeAttribute('aria-disabled'); }); + }, + syncAppearance() { if (!this.appear) return; - const now = { 'vt-colour': this.themePref(), 'vt-login': this.loginPref(), 'vt-backdrop': this.backdropPref() }; + const now = { 'vt-colour': this.themePref(), 'vt-logo-name': this.brandPref(), 'vt-login': this.loginPref(), 'vt-backdrop': this.backdropPref() }; Array.prototype.forEach.call(this.appear.querySelectorAll('input[type="radio"]'), r => { r.checked = (now[r.name] === r.value); }); const state = this.lookState(); const note = state === 'relogin' ? _('Log in again to save Appearance for every browser.') @@ -1757,7 +1873,9 @@ return baseclass.extend({ if (!board || !board.hostname) return; const product = host.productName(board); this.hostname = board.hostname; + this.board = board; this.updateTitle(); + this.applyBrand(); if (!chip) return; chip.textContent = ''; /* device strings go in as text nodes (E() would parse a string as HTML) */ diff --git a/luci-theme-vantage/htdocs/luci-static/vantage/login.js b/luci-theme-vantage/htdocs/luci-static/vantage/login.js index 901afc629..e9bcc97dd 100644 --- a/luci-theme-vantage/htdocs/luci-static/vantage/login.js +++ b/luci-theme-vantage/htdocs/luci-static/vantage/login.js @@ -8,9 +8,14 @@ * frame is a handful of batched draws, at most about 60 a second, and nothing runs while the * window is in the background. With reduced motion it draws one still * frame. Logging in speeds it up while the form posts. + * + * This page means there is no session, so it also drops the history the + * dashboard kept in this tab (overview.js STORE_KEY): station MACs and samples + * shouldn't outlive a logout. */ (function () { 'use strict'; + try { sessionStorage.removeItem('vantage.hist.v1'); } catch (e) {} var v = [ null, document.documentElement.getAttribute('data-vt-look-login'), null ], ok = [ 'grid', 'stars', 'none' ], pick = 'grid', i; try { v[0] = localStorage.getItem('vantage.login.own'); v[2] = localStorage.getItem('vantage.login'); } catch (e) {} for (i = 2; i >= 0; i--) if (ok.indexOf(v[i]) >= 0) pick = v[i]; diff --git a/luci-theme-vantage/htdocs/luci-static/vantage/vantage.css b/luci-theme-vantage/htdocs/luci-static/vantage/vantage.css index 14f6d5ce2..2571a01f4 100644 --- a/luci-theme-vantage/htdocs/luci-static/vantage/vantage.css +++ b/luci-theme-vantage/htdocs/luci-static/vantage/vantage.css @@ -393,6 +393,15 @@ html[data-darkmode="true"] .vt-brand-tile { fill: #16181b; } text-decoration: none !important; } .vt-brand svg { flex: none; } +/* Appearance "Next to the logo" (menu-vantage.js applyBrand): beside the + logo while the rail is pinned open, else first in the top bar, as + "name / page"; not on phones, where the logo isn't shown either */ +.vt-brand-name { display: none; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; } +html[data-rail="pinned"] .vt-brand-name:not([hidden]) { display: block; } +.vt-top-name { flex: none; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-2); font-weight: 600; } +.vt-top-name[hidden], html[data-rail="pinned"] .vt-top-name { display: none; } +.vt-top-name + .vt-crumbs::before { content: "/"; flex: none; margin-inline-end: 4px; color: var(--text-3); font-family: var(--mono); font-size: var(--fs-sm); } +.vt-top-name[hidden] + .vt-crumbs::before, html[data-rail="pinned"] .vt-top-name + .vt-crumbs::before { content: none; } .vt-rail-list { list-style: none; margin: 0; padding: var(--sp-2) 0; @@ -626,6 +635,12 @@ a.vt-crumb:hover { color: var(--text); } /* where the picks are kept, when not for every browser */ .vt-appear-note { max-width: 32ch; margin: 0; color: var(--text-3); font-size: var(--fs-sm); line-height: 1.4; } .vt-appear-note[hidden] { display: none; } +.vt-appear-ver { margin: 0; color: var(--text-3); font-size: var(--fs-micro); } +.vt-appear-num { font-family: var(--mono); } +.vt-appear-check { margin: 0; padding: 0; border: 0; background: none; color: var(--accent-text); font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; } +.vt-appear-check[aria-disabled="true"] { color: var(--text-3); cursor: default; text-decoration: none; } +.vt-appear-update { display: block; margin-top: 4px; color: var(--text-2); } +.vt-appear-update[hidden] { display: none; } .vt-appear-set > legend { margin: 0 0 6px; padding: 0; color: var(--text-3); font-size: var(--fs-micro); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; } .vt-appear-track { display: flex; background: var(--seg-bg); border-radius: var(--r-lg); box-shadow: inset 0 0 0 1px var(--line); } .vt-appear-opt { @@ -672,12 +687,38 @@ a.vt-crumb:hover { color: var(--text); } } #indicators > span[data-clickable] { cursor: pointer; } #indicators > span[data-clickable]:hover { border-color: var(--text-3); color: var(--text); } -/* auto-refresh on: a still dot (the label says it, a pulse only - distracted); paused: a square */ +/* auto-refresh on: a dot with a slow, soft ring (#100); fast while the + dashboard reports a problem: amber while it reconnects or warns, red for + an error (luci-app-vantage sets html[data-vt-live] and [data-vt-alert]); + paused: a still square. The ring scales and fades on the compositor, + behind the dot (z-index -1 in the pill's own stack), and is transparent + unless it runs, so reduced motion shows none. */ +#indicators > span[data-indicator="poll-status"][data-style="active"] { position: relative; isolation: isolate; } #indicators > span[data-indicator="poll-status"][data-style="active"]::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--ok); } +#indicators > span[data-indicator="poll-status"][data-style="active"]::after { + content: ""; position: absolute; z-index: -1; left: 10px; top: calc(50% - 3.5px); + width: 7px; height: 7px; border-radius: 50%; + background: color-mix(in oklab, var(--ok) 50%, transparent); + opacity: 0; pointer-events: none; + animation: vt-live-soft 5s ease-out infinite; +} +html[data-vt-live="err"] #indicators > span[data-indicator="poll-status"][data-style="active"]::after, html[data-vt-alert="warn"] #indicators > span[data-indicator="poll-status"][data-style="active"]::after { + background: color-mix(in oklab, var(--warn) 50%, transparent); + animation: vt-live 2s ease-out infinite; +} +html[data-vt-alert="err"] #indicators > span[data-indicator="poll-status"][data-style="active"]::after { + background: color-mix(in oklab, var(--err) 50%, transparent); + animation: vt-live 2s ease-out infinite; +} +@media (width > 900px) { + html[data-vt-live="err"] #indicators > span[data-indicator="poll-status"][data-style="active"]::before, html[data-vt-alert="warn"] #indicators > span[data-indicator="poll-status"][data-style="active"]::before { background: var(--warn); } + html[data-vt-alert="err"] #indicators > span[data-indicator="poll-status"][data-style="active"]::before { background: var(--err); } +} +@keyframes vt-live-soft { 0% { transform: scale(1); opacity: .6; } 70%, 100% { transform: scale(2.2); opacity: 0; } } +@keyframes vt-live { 0% { transform: scale(1); opacity: 1; } 70%, 100% { transform: scale(2.7); opacity: 0; } } #indicators > span[data-indicator="poll-status"][data-style="inactive"]::before { content: ""; width: 7px; height: 7px; border-radius: 1px; background: var(--text-3); } @@ -1717,6 +1758,14 @@ table { border-collapse: separate; border-spacing: 0; width: 100%; } .cbi-section-table-descr > .th { font-weight: 400; text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); } .cbi-section-table-cell, .cbi-section-table-row > .td { vertical-align: middle; } .td.cbi-value-field .cbi-dropdown, .td.cbi-value-field input:not([type="checkbox"]), .td.cbi-value-field select { max-width: 220px; } +/* A text field is width:100%, which an auto table layout counts as 0 wide, so + a column with a short header (Name and Path in Services > Network Shares) + shrank to a sliver and hid its value. Give the field a floor: 7em, which a + wide table (Samba's shares) still nearly fits beside; not on a phone, + where each row is a card of fixed columns and a floor overflows it. */ +@media (width > 720px) { + .td.cbi-value-field input[type="text"], .td.cbi-value-field input:not([type]) { min-width: 7em; } +} /* key/value tables (status pages): quiet label column */ .table:not(:has(.table-titles)) .tr > .td:first-child:nth-last-child(2) { @@ -3212,14 +3261,18 @@ body[data-page="admin-system-filemanager"] .sort-button { border-color: var(--li .vt-search { width: 36px; padding: 0; justify-content: center; } .vt-search-label, .vt-search .vt-kbd { display: none; } .vt-host { max-width: 180px; } + /* the name next to the logo crowded the host chip, which says it too */ + .vt-top-name, .vt-top-name + .vt-crumbs::before { display: none !important; } } @media (max-width: 900px) { .vt-host { display: none !important; } + .vt-top-name, .vt-top-name + .vt-crumbs::before { display: none !important; } /* indicators go compact (a sign, a count) before the crumbs get cut; the label stays as text for screen readers and as the title */ #indicators > span[data-indicator] { height: 28px; padding: 0 8px; } #indicators > span[data-indicator="poll-status"] { font-size: 0; gap: 0; width: 28px; justify-content: center; padding: 0; } + #indicators > span[data-indicator="poll-status"][data-style="active"]::after { left: calc(50% - 3.5px); } /* without its label the pill is the pause / resume button: a pause sign while it refreshes, a play sign while paused */ #indicators > span[data-indicator="poll-status"][data-style="active"]::before { diff --git a/luci-theme-vantage/po/templates/vantage-theme.pot b/luci-theme-vantage/po/templates/vantage-theme.pot index 89189ece1..e8fc632c0 100644 --- a/luci-theme-vantage/po/templates/vantage-theme.pot +++ b/luci-theme-vantage/po/templates/vantage-theme.pot @@ -13,7 +13,7 @@ msgid_plural "%d more chains at this hook" msgstr[0] "" msgstr[1] "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1403 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1446 msgctxt "vantage-theme" msgid "%d result" msgid_plural "%d results" @@ -56,7 +56,7 @@ msgctxt "vantage-theme" msgid "Accept" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1323 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1366 msgid "Actions" msgstr "" @@ -65,22 +65,22 @@ msgctxt "nft match any traffic" msgid "Any packet" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1311 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1312 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1313 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1316 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1320 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1677 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:132 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1354 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1355 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1356 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1359 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1363 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1745 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:136 msgctxt "vantage-theme" msgid "Appearance" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:48 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:50 msgid "Authorization Required" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1679 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 msgctxt "vantage-theme" msgid "Auto" msgstr "" @@ -95,7 +95,7 @@ msgctxt "vantage-theme" msgid "Back to the calling chain" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:120 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:124 msgctxt "vantage-theme" msgid "Breadcrumb" msgstr "" @@ -113,17 +113,17 @@ msgctxt "vantage-theme" msgid "Bridged between ports" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:462 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:492 msgid "Buffered" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:473 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:483 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:487 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 msgid "Cache" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:462 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:492 msgid "Cached" msgstr "" @@ -142,19 +142,27 @@ msgctxt "vantage-theme" msgid "Chains no rule jumps to directly" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:544 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:587 msgid "Channel" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:950 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1783 +msgid "Check for updates" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1798 +msgid "Checking…" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:993 msgid "Collapse navigation" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1678 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1746 msgid "Colour theme" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1347 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1390 msgid "Command palette" msgstr "" @@ -173,11 +181,15 @@ msgctxt "vantage-theme" msgid "Continues in %s, then comes back here" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1714 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1817 +msgid "Could not check for updates." +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1830 msgid "Could not save this for every browser. Try again." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1679 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 msgctxt "vantage-theme" msgid "Dark" msgstr "" @@ -201,8 +213,8 @@ msgstr "" msgid "Egress" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:950 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:105 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:993 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:107 msgid "Expand navigation" msgstr "" @@ -219,7 +231,7 @@ msgid "" "their counters see only its first packets." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1313 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1356 msgid "Follow system theme" msgstr "" @@ -237,21 +249,25 @@ msgid "" "if br_netfilter is enabled; the ruleset doesn't show that.)" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:474 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:488 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:515 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:529 msgctxt "vantage-theme" msgid "Free" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1558 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 msgid "Grid packets" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:100 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:101 msgctxt "vantage-theme" msgid "Home" msgstr "" +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +msgid "Hostname" +msgstr "" + #: luci-theme-vantage/htdocs/luci-static/resources/vantage-theme/nftflow.js:63 msgid "IPv4 traffic table \"%h\"" msgstr "" @@ -264,9 +280,9 @@ msgstr "" msgid "IPv6 traffic table \"%h\"" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:473 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:482 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:486 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:523 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:527 msgctxt "vantage-theme" msgid "In use" msgstr "" @@ -280,11 +296,11 @@ msgctxt "vantage-theme" msgid "Input" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:52 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:54 msgid "Invalid username and/or password! Please try again." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1343 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1386 msgid "Jump to a page or action…" msgstr "" @@ -293,31 +309,35 @@ msgctxt "vantage-theme" msgid "Leaves unmatched unchanged" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1679 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 msgctxt "vantage-theme" msgid "Light" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:28 -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:64 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:30 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:66 msgid "Log in" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1712 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1828 msgid "Log in again to save Appearance for every browser." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1322 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:135 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:139 msgid "Log out" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1316 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1681 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1359 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1752 msgid "Login background" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:99 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +msgid "Logo only" +msgstr "" + +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:100 msgctxt "vantage-theme" msgid "Main navigation" msgstr "" @@ -327,13 +347,17 @@ msgctxt "vantage-theme" msgid "Masquerade" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:457 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:472 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:487 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:513 msgid "Memory" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1961 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1978 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +msgid "Model" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2079 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2096 msgctxt "vantage-theme" msgid "More actions" msgstr "" @@ -351,8 +375,8 @@ msgstr "" msgid "Network device table \"%h\"" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1320 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1670 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1363 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1738 msgid "Network path background" msgstr "" @@ -361,7 +385,11 @@ msgctxt "vantage-theme" msgid "Next rule" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1401 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1749 +msgid "Next to the logo" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1444 msgid "No matching pages" msgstr "" @@ -375,17 +403,17 @@ msgctxt "vantage-theme" msgid "No rules: %s" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1558 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 msgctxt "vantage-theme" msgid "None" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1218 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1261 #: luci-theme-vantage/ucode/template/themes/vantage/header.ut:17 msgid "Not found" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1238 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1281 msgid "Other pages in %s" msgstr "" @@ -399,7 +427,7 @@ msgctxt "vantage-theme" msgid "Packet path" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:141 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:145 msgid "Page tabs" msgstr "" @@ -413,7 +441,7 @@ msgctxt "vantage-theme" msgid "Passes unmatched" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:61 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:63 msgid "Password" msgstr "" @@ -442,7 +470,7 @@ msgctxt "vantage-theme" msgid "Reject" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1345 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1388 msgctxt "vantage-theme" msgid "Results" msgstr "" @@ -462,17 +490,21 @@ msgctxt "vantage-theme" msgid "Rules table" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1713 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1829 msgid "Saved in this browser only." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1343 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:123 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:125 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1386 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:127 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:129 msgid "Search pages" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1322 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1818 +msgid "See the latest release" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 msgid "Session" msgstr "" @@ -483,47 +515,52 @@ msgid_plural "Show %d more rules" msgstr[0] "" msgstr[1] "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2118 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2236 msgid "Show full description" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2107 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2225 msgid "Show full help: %s" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:96 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:97 msgid "Skip to content" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1558 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 msgid "Starfield" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:509 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:552 msgid "Storage" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:495 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:497 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:538 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:540 msgctxt "vantage-theme" msgid "Swap" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:462 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:493 msgid "Swap free" msgstr "" +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:493 +msgid "Swap used" +msgstr "" + #: luci-theme-vantage/htdocs/luci-static/resources/vantage-theme/nftflow.js:249 msgctxt "vantage-theme" msgid "This device" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:474 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:515 msgctxt "vantage-theme" msgid "Total" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:461 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:491 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:499 msgid "Total Available" msgstr "" @@ -537,19 +574,23 @@ msgctxt "vantage-theme" msgid "Unchanged" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1311 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1812 +msgid "Up to date" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1354 msgid "Use dark theme" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1312 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1355 msgid "Use light theme" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:461 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:491 msgid "Used" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:57 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:59 msgid "Username" msgstr "" @@ -565,21 +606,29 @@ msgctxt "vantage-theme" msgid "Verdict map %s" msgstr "" +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1809 +msgid "Version %s is available." +msgstr "" + #: luci-theme-vantage/htdocs/luci-static/resources/vantage-theme/nftflow.js:204 msgctxt "vantage-theme" msgid "View" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:537 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1810 +msgid "What's new" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:580 msgid "Wireless" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:478 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:519 msgctxt "vantage-theme" msgid "available" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1353 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1396 msgid "close" msgstr "" @@ -593,12 +642,12 @@ msgctxt "vantage-theme" msgid "drops unmatched %s" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 msgid "free" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1351 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1394 msgid "navigate" msgstr "" @@ -617,7 +666,7 @@ msgctxt "vantage-theme" msgid "on %s" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1352 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1395 msgctxt "vantage-theme" msgid "open" msgstr "" @@ -627,9 +676,9 @@ msgctxt "vantage-theme" msgid "priority %d" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:473 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:483 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:487 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 msgid "reclaimable" msgstr "" @@ -638,12 +687,12 @@ msgctxt "vantage-theme" msgid "rules drop some" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 msgid "total" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 msgid "used" msgstr "" diff --git a/luci-theme-vantage/po/zh_Hans/vantage-theme.po b/luci-theme-vantage/po/zh_Hans/vantage-theme.po index ea19dbddd..75fa63de0 100644 --- a/luci-theme-vantage/po/zh_Hans/vantage-theme.po +++ b/luci-theme-vantage/po/zh_Hans/vantage-theme.po @@ -21,7 +21,7 @@ msgid "%d more chain at this hook" msgid_plural "%d more chains at this hook" msgstr[0] "此钩子还有 %d 条链" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1403 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1446 msgctxt "vantage-theme" msgid "%d result" msgid_plural "%d results" @@ -62,7 +62,7 @@ msgctxt "vantage-theme" msgid "Accept" msgstr "接受" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1323 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1366 msgid "Actions" msgstr "操作" @@ -71,22 +71,22 @@ msgctxt "nft match any traffic" msgid "Any packet" msgstr "任意数据包" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1311 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1312 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1313 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1316 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1320 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1677 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:132 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1354 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1355 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1356 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1359 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1363 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1745 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:136 msgctxt "vantage-theme" msgid "Appearance" msgstr "外观" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:48 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:50 msgid "Authorization Required" msgstr "需要授权" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1679 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 msgctxt "vantage-theme" msgid "Auto" msgstr "自动" @@ -101,7 +101,7 @@ msgctxt "vantage-theme" msgid "Back to the calling chain" msgstr "返回调用链" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:120 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:124 msgctxt "vantage-theme" msgid "Breadcrumb" msgstr "面包屑" @@ -119,17 +119,17 @@ msgctxt "vantage-theme" msgid "Bridged between ports" msgstr "端口间桥接" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:462 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:492 msgid "Buffered" msgstr "已缓冲" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:473 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:483 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:487 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 msgid "Cache" msgstr "缓存" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:462 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:492 msgid "Cached" msgstr "已缓存" @@ -148,19 +148,27 @@ msgctxt "vantage-theme" msgid "Chains no rule jumps to directly" msgstr "没有规则直接跳转到的链" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:544 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:587 msgid "Channel" msgstr "信道" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:950 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1783 +msgid "Check for updates" +msgstr "检查更新" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1798 +msgid "Checking…" +msgstr "正在检查…" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:993 msgid "Collapse navigation" msgstr "收起导航" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1678 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1746 msgid "Colour theme" msgstr "颜色主题" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1347 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1390 msgid "Command palette" msgstr "命令面板" @@ -179,11 +187,15 @@ msgctxt "vantage-theme" msgid "Continues in %s, then comes back here" msgstr "转入 %s,随后返回此处" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1714 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1817 +msgid "Could not check for updates." +msgstr "无法检查更新。" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1830 msgid "Could not save this for every browser. Try again." msgstr "无法为所有浏览器保存此设置,请重试。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1679 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 msgctxt "vantage-theme" msgid "Dark" msgstr "深色" @@ -207,8 +219,8 @@ msgstr "丢弃未匹配流量" msgid "Egress" msgstr "出口" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:950 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:105 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:993 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:107 msgid "Expand navigation" msgstr "展开导航" @@ -227,7 +239,7 @@ msgstr "" "流量卸载已开启:一条转发连接建立后,它的数据包可以跳过 prerouting、forward " "和 postrouting,因此这些链和它们的计数器只会看到该连接最初的数据包。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1313 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1356 msgid "Follow system theme" msgstr "跟随系统主题" @@ -248,21 +260,25 @@ msgstr "" "达 input、forward 或 output 链,这里也没有桥接链会过滤它们。(启用 " "br_netfilter 时内核可以把它们交给 IP 链;规则集不体现这一点。)" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:474 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:488 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:515 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:529 msgctxt "vantage-theme" msgid "Free" msgstr "空闲" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1558 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 msgid "Grid packets" msgstr "网格数据包" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:100 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:101 msgctxt "vantage-theme" msgid "Home" msgstr "首页" +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +msgid "Hostname" +msgstr "主机名" + #: luci-theme-vantage/htdocs/luci-static/resources/vantage-theme/nftflow.js:63 msgid "IPv4 traffic table \"%h\"" msgstr "IPv4 流量表 \"%h\"" @@ -275,9 +291,9 @@ msgstr "IPv4/IPv6 流量表 \"%h\"" msgid "IPv6 traffic table \"%h\"" msgstr "IPv6 流量表 \"%h\"" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:473 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:482 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:486 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:523 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:527 msgctxt "vantage-theme" msgid "In use" msgstr "已用" @@ -291,11 +307,11 @@ msgctxt "vantage-theme" msgid "Input" msgstr "输入" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:52 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:54 msgid "Invalid username and/or password! Please try again." msgstr "用户名或密码错误,请重试。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1343 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1386 msgid "Jump to a page or action…" msgstr "跳转到页面或操作…" @@ -304,31 +320,35 @@ msgctxt "vantage-theme" msgid "Leaves unmatched unchanged" msgstr "未匹配流量保持原样" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1679 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 msgctxt "vantage-theme" msgid "Light" msgstr "浅色" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:28 -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:64 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:30 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:66 msgid "Log in" msgstr "登录" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1712 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1828 msgid "Log in again to save Appearance for every browser." msgstr "重新登录后即可为所有浏览器保存外观设置。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1322 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:135 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:139 msgid "Log out" msgstr "退出登录" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1316 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1681 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1359 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1752 msgid "Login background" msgstr "登录背景" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:99 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +msgid "Logo only" +msgstr "仅标志" + +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:100 msgctxt "vantage-theme" msgid "Main navigation" msgstr "主导航" @@ -338,13 +358,17 @@ msgctxt "vantage-theme" msgid "Masquerade" msgstr "伪装(NAT)" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:457 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:472 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:487 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:513 msgid "Memory" msgstr "内存" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1961 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1978 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +msgid "Model" +msgstr "型号" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2079 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2096 msgctxt "vantage-theme" msgid "More actions" msgstr "更多操作" @@ -362,8 +386,8 @@ msgstr "网络" msgid "Network device table \"%h\"" msgstr "网络设备表 \"%h\"" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1320 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1670 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1363 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1738 msgid "Network path background" msgstr "网络路径背景" @@ -372,7 +396,11 @@ msgctxt "vantage-theme" msgid "Next rule" msgstr "下一条规则" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1401 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1749 +msgid "Next to the logo" +msgstr "标志旁显示" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1444 msgid "No matching pages" msgstr "没有匹配的页面" @@ -386,17 +414,17 @@ msgctxt "vantage-theme" msgid "No rules: %s" msgstr "无规则:%s" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1558 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 msgctxt "vantage-theme" msgid "None" msgstr "无" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1218 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1261 #: luci-theme-vantage/ucode/template/themes/vantage/header.ut:17 msgid "Not found" msgstr "未找到" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1238 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1281 msgid "Other pages in %s" msgstr "%s 中的其他页面" @@ -410,7 +438,7 @@ msgctxt "vantage-theme" msgid "Packet path" msgstr "数据包路径" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:141 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:145 msgid "Page tabs" msgstr "页面标签页" @@ -424,7 +452,7 @@ msgctxt "vantage-theme" msgid "Passes unmatched" msgstr "放行未匹配流量" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:61 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:63 msgid "Password" msgstr "密码" @@ -453,7 +481,7 @@ msgctxt "vantage-theme" msgid "Reject" msgstr "拒绝" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1345 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1388 msgctxt "vantage-theme" msgid "Results" msgstr "结果" @@ -473,17 +501,21 @@ msgctxt "vantage-theme" msgid "Rules table" msgstr "规则表" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1713 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1829 msgid "Saved in this browser only." msgstr "仅保存在此浏览器中。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1343 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:123 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:125 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1386 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:127 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:129 msgid "Search pages" msgstr "搜索页面" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1322 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1818 +msgid "See the latest release" +msgstr "查看最新版本" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 msgid "Session" msgstr "会话" @@ -493,47 +525,52 @@ msgid "Show %d more rule" msgid_plural "Show %d more rules" msgstr[0] "再显示 %d 条规则" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2118 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2236 msgid "Show full description" msgstr "显示完整描述" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2107 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2225 msgid "Show full help: %s" msgstr "显示完整帮助:%s" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:96 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:97 msgid "Skip to content" msgstr "跳至正文" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1558 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 msgid "Starfield" msgstr "星空" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:509 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:552 msgid "Storage" msgstr "存储" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:495 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:497 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:538 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:540 msgctxt "vantage-theme" msgid "Swap" msgstr "交换空间" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:462 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:493 msgid "Swap free" msgstr "空闲交换空间" +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:493 +msgid "Swap used" +msgstr "" + #: luci-theme-vantage/htdocs/luci-static/resources/vantage-theme/nftflow.js:249 msgctxt "vantage-theme" msgid "This device" msgstr "本设备" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:474 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:515 msgctxt "vantage-theme" msgid "Total" msgstr "总计" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:461 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:491 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:499 msgid "Total Available" msgstr "总可用" @@ -547,19 +584,23 @@ msgctxt "vantage-theme" msgid "Unchanged" msgstr "不变" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1311 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1812 +msgid "Up to date" +msgstr "已是最新版本" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1354 msgid "Use dark theme" msgstr "使用深色主题" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1312 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1355 msgid "Use light theme" msgstr "使用浅色主题" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:461 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:491 msgid "Used" msgstr "已用" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:57 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:59 msgid "Username" msgstr "用户名" @@ -577,21 +618,29 @@ msgctxt "vantage-theme" msgid "Verdict map %s" msgstr "判定映射 %s" +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1809 +msgid "Version %s is available." +msgstr "版本 %s 可用。" + #: luci-theme-vantage/htdocs/luci-static/resources/vantage-theme/nftflow.js:204 msgctxt "vantage-theme" msgid "View" msgstr "视图" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:537 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1810 +msgid "What's new" +msgstr "更新内容" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:580 msgid "Wireless" msgstr "无线" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:478 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:519 msgctxt "vantage-theme" msgid "available" msgstr "可用" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1353 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1396 msgid "close" msgstr "关闭" @@ -605,12 +654,12 @@ msgctxt "vantage-theme" msgid "drops unmatched %s" msgstr "丢弃未匹配的 %s" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 msgid "free" msgstr "空闲" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1351 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1394 msgid "navigate" msgstr "移动" @@ -629,7 +678,7 @@ msgctxt "vantage-theme" msgid "on %s" msgstr "接口 %s" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1352 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1395 msgctxt "vantage-theme" msgid "open" msgstr "打开" @@ -639,9 +688,9 @@ msgctxt "vantage-theme" msgid "priority %d" msgstr "优先级 %d" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:473 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:483 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:487 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 msgid "reclaimable" msgstr "可回收" @@ -650,13 +699,13 @@ msgctxt "vantage-theme" msgid "rules drop some" msgstr "部分规则会丢弃" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 msgid "total" msgstr "总计" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 msgid "used" msgstr "已用" diff --git a/luci-theme-vantage/root/etc/config/vantage_theme b/luci-theme-vantage/root/etc/config/vantage_theme index 2ca9ce0c3..0d4e59172 100644 --- a/luci-theme-vantage/root/etc/config/vantage_theme +++ b/luci-theme-vantage/root/etc/config/vantage_theme @@ -6,6 +6,7 @@ # option theme 'auto' auto, light or dark # option login 'grid' the login page's background: grid, stars or none # option backdrop 'grid' the dashboard's network path background, likewise +# option brand 'none' next to the logo: none, hostname or model # # The dashboard's Customize saves here too: its chart style (option chart) and # one layout per screen size (option layout_wide, layout_mid, layout_narrow and diff --git a/luci-theme-vantage/ucode/template/themes/vantage/header.ut b/luci-theme-vantage/ucode/template/themes/vantage/header.ut index a73c52347..85af0fbf2 100644 --- a/luci-theme-vantage/ucode/template/themes/vantage/header.ut +++ b/luci-theme-vantage/ucode/template/themes/vantage/header.ut @@ -23,6 +23,7 @@ const look_theme = look('theme', [ 'auto', 'light', 'dark' ]); const look_login = look('login', [ 'grid', 'stars', 'none' ]); const look_backdrop = look('backdrop', [ 'grid', 'stars', 'none' ]); + const look_brand = look('brand', [ 'none', 'hostname', 'model' ]); /* The dashboard's chart style and layouts, saved with it. A layout passes only in the form vantage.layout reads, 'wide=hero:0:4 chart:0:2:h;mid=default' */ const look_chart = look('chart', [ 'overlay', 'log', 'mirror', 'mirror-split', 'lanes' ]); @@ -53,11 +54,9 @@ }); return would ? 'relogin' : 'no'; })(); -const boardinfo = ubus.call("system", "board"); -const hostname = striptags(boardinfo?.hostname ?? '?'); -%} - + @@ -108,7 +107,7 @@ const hostname = striptags(boardinfo?.hostname ?? '?'); -

{{ hostname }}

+
    @@ -126,6 +125,8 @@ const hostname = striptags(boardinfo?.hostname ?? '?'); +{% else %} + {% endif %}
    diff --git a/luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut b/luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut index 23c4704e7..b2d1a6b04 100644 --- a/luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut +++ b/luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut @@ -1,7 +1,8 @@ {# Vantage theme - login page. - Rendered with { duser, fuser } for visitors who are not logged in, so it - shows nothing about the device: no hostname, model or firmware version. + Rendered with { duser, fuser } for visitors who are not logged in. Of the + device it shows the hostname only, as the heading (LuCI's Bootstrap shows + it too): no model or firmware version. fuser is attacker-controlled (formvalue also reads the query string): it is only tested, never echoed; the error is generic. The form posts back to the requested URL (no action attribute). The inline script is data-free: the @@ -17,8 +18,7 @@ const look = (opt, ok) => { const v = uci.get('vantage_theme', 'appearance', opt); return (type(v) == 'string' && index(ok, v) >= 0) ? v : ''; }; const look_theme = look('theme', [ 'auto', 'light', 'dark' ]); const look_login = look('login', [ 'grid', 'stars', 'none' ]); - const boardinfo = ubus.call("system", "board"); - const hostname = striptags(boardinfo?.hostname ?? '?'); + const host = (() => { const h = uci.get_first('system', 'system', 'hostname'); return (type(h) == 'string' && length(h)) ? substr(h, 0, 63) : null; })(); -%} @@ -54,10 +54,7 @@ -
    -

    {{ hostname }}

    - -
    +

    {{ entityencode(host ?? _('Authorization Required'), true) }}

    {% if (fuser): %} diff --git a/wwand/Makefile b/wwand/Makefile index 0506ce819..2a36b7d95 100644 --- a/wwand/Makefile +++ b/wwand/Makefile @@ -50,12 +50,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=wwand -PKG_VERSION:=1.9.0_pre3 -PKG_RELEASE:=88 +PKG_VERSION:=1.9.0_pre10 +PKG_RELEASE:=89 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/ddimension/wwand.git -PKG_SOURCE_VERSION:=0a1f02375df53f21a105b375b9af051c36464530 +PKG_SOURCE_VERSION:=e9fd1db72db20faced06e323c06e8a1062607bf2 PKG_MIRROR_HASH:=skip PKG_LICENSE:=GPL-2.0-only

    2<&6 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