From 7006041ef646b291335a0ef1ca4010cc0d0f1959 Mon Sep 17 00:00:00 2001 From: BotBlake Date: Wed, 3 Jun 2026 19:15:45 +0200 Subject: [PATCH] add user settings --- docs/general/clients/css-customization.md | 12 ++++++++---- .../custom-css-admindashboard.png} | Bin .../docs/clients/custom-css-usersettings.png | Bin 0 -> 27464 bytes 3 files changed, 8 insertions(+), 4 deletions(-) rename static/images/docs/{custom-css-customcssfield.png => clients/custom-css-admindashboard.png} (100%) create mode 100644 static/images/docs/clients/custom-css-usersettings.png diff --git a/docs/general/clients/css-customization.md b/docs/general/clients/css-customization.md index 2f6ea48b..f39772d6 100644 --- a/docs/general/clients/css-customization.md +++ b/docs/general/clients/css-customization.md @@ -9,10 +9,6 @@ Jellyfin allows users to customize the appearance of the web interface by applyi Custom CSS is only applied to clients that load Jellyfin Web from your server. As a result, it does not affect all Jellyfin clients. Some web-based clients bundle their own version of Jellyfin Web and therefore do not load custom CSS from the server. -To add custom CSS, navigate to `Dashboard > Branding` and enter your stylesheet in the "Custom CSS" field. Custom CSS is loaded after Jellyfin's default styles, allowing you to override existing rules and customize elements such as colors, layouts and sizing. - -![Screenshot of the 'Custom CSS' setting in the administrator dashboard of the web client](/images/docs/custom-css-customcssfield.png) - :::warning External resources referenced by custom CSS are loaded by the client, not the Jellyfin server. Ensure these resources are accessible from all client devices. If a resource cannot be reached, Jellyfin Web may not render correctly. @@ -21,6 +17,14 @@ Using externally hosted stylesheets, fonts, or other assets can also affect offl ::: +To add custom CSS, navigate to `Dashboard > Branding` and enter your stylesheet in the "Custom CSS" field. Custom CSS is loaded after Jellyfin's default styles, allowing you to override existing rules and customize elements such as colors, layouts, and sizing. + +![Screenshot of the "Custom CSS" setting in the administrator dashboard of the web client](/images/docs/clients/custom-css-admindashboard.png) + +Alternatively, custom CSS can be configured on a per-user basis under `Settings > Display`. + +![Screenshot of the "Custom CSS" setting in the user settings page](/images/docs/clients/custom-css-usersettings.png) + If you have little or no experience with CSS, consider reviewing the community resources and tutorials linked below. ## General Information About CSS diff --git a/static/images/docs/custom-css-customcssfield.png b/static/images/docs/clients/custom-css-admindashboard.png similarity index 100% rename from static/images/docs/custom-css-customcssfield.png rename to static/images/docs/clients/custom-css-admindashboard.png diff --git a/static/images/docs/clients/custom-css-usersettings.png b/static/images/docs/clients/custom-css-usersettings.png new file mode 100644 index 0000000000000000000000000000000000000000..72bfbbbc482739507033d398d93a3af53a3472eb GIT binary patch literal 27464 zcmeFZ1yGmm*ERaXR#Z${P*G4(S_CN*R8R~=Nv{g)JLi1!o|!Xe=A1d-%yFKCU)=X~?Q8F~*IN62di9FbmQ9SCC=|+;ixD4OH{ev-eb-f(VZBEP$TUg5rhvCcisI|d3AL4F}F zfj+j>Pyf?z6e;{X0$f6GA`TSbH=D_O%r(ulw2UZP=dK>(-7T$zckHEHJa<~oT6M75 z%3ki~^2%7<=gUX>?r%6&?c#Ff8@uz`qknWGpIw))w8)D}n_Y0QU{&~Ydp339EM0w& za~SorLl0M7iu!node5rsJNCYDahW`sB{A-=ug&*h&31;FC3{i(!T|H0CV&3kmXsjj z-a!3L8#YAm-T%*@j-M)nJJ0?5C&2Te^7eoJnA&bKI{(iPfA$?t-u>?nLqgi*|MSAY z|FvFdG`&%R!@KCGrk7a$>%%t&;~WLed&|4SqB4JI#Qf2D`h@%`jB*JJ3F*DR@H437 z+qGc&llKqhMHOp8fmEsv9Pp|E}~E*_?=feI<6&cdij%803E^ zXsDN7UQ)t#?3m~5taavG57YR>MA#cQjzH^&cXHjv2IDHOD=Oaep1E;UA=u!tf zz_Ep+Osm&zZW~H!?db~%Viy*!7gruW#jjI-fQ{`@*3yviw4$J@{n&Z8Ell}mX~gaZ zS==zPaLAHm_kQ~E>|;LrS(6_>evD2{9pvD6{PX9z%*Ao(=PY8IPK~r=Fq|-AZf|c- zPEI!IF5Z15Kq%+adH3Y|eLE<}l;Yd!b%MSqCmC7W*_luE-zrqwAZDr>nxTp8i@^WNd)h&+7h>|~WJub<59++5`sX}Ww5hTKOq;)U_| zs)U@D)2|6~a=J_Va5ewVmUnEve*Jo~?Nq44xKluVoKBqen8x&QvwqN&`{?LsTSQXJ zC##VbgT_Qpi-Fo}*RP-PX21NmD#XjwW2V2xJ!`R>`@n$%Ja*FtM>sj})rK=<*v)*6 zkKg5-oqbAtwr#bUx%u2|r&m!~*+Bt;*MI-&+B-Oe8UJ$&l(A_-dxb&MT?K)_vnnc6z!P{kll4p@sy>dgUU-8b?u7w%tgEPS7MP$AJSbg@qRu zy40$FKHb^ZoOZ%EbB?_+(J-z^Io&#DY@|K+vA4H(F7Ei-w{JYZ>9|yM7wtydaLY-J&JYPgY_ihk0~eq%*}m7O~=LKv~0h1&&j(6 zG#|plJt~8x_|3X5Jbd)%qO5Fh33t}rn$Vkq-GeEqspDPVvSt-xGuw9U`q^FLGl%%| zaIpN$wQ$?VRt+J=cwFyi>&mi~s@>4>Pr^6VK-Y_!vgBiR`~K0c3F zYTBdfW$%s$oV0l6qvq%*AECsnUwc&0;Lj-&6P}&yG9QdvGiT@LU%h(uBdOJ~Bvz{= zTH$E=Y=?W3)5?Ck=8MCJ;i-Cab92p7U*0B%nPvf_Cf~(H`yD%WST77EQ7Ob|to1)(9J&2N zMWC4fvuB%@2eOu_lO3J(>LT}4eZ8EUm*?uoue0ifpI;Hu48`bA`Do{41G)A;e-tz{ zHF^EZ0)$K-B9J@V+jAx=BxHTKZXY^yNWCudcIkVOx*qfI<&BO0FWIDGO*``$A4Fsn z7hh6QQHc~$4z~TJtcJ7b!734m&=M6Dy>RhjJB|&Hqe+8j^OJpp^>L4FCVK7&`rC}=tnd5v@vLX%LTbFMLx0>%h{V!UUtjvST(^tA-v}9< znJF+3Y@|#3I4~8mdi_=&&HT;UrM@|8EAzLuvWgq5xn^;%x4*@@bBpCrL!Ji%Ki<$g z*BjJZ;k3-p!oqS?Ei)j`ov!NR+4bx)zNb`GStfeQ;%u^RCK)xGSXt@d|E3j>|12oj zNk>;u{r!fYgi~f2uYQ8ni0Y+Fm#n+r-10rHPfN$G8qeKv_3_p{vjq~%IVtA7v!l5* z*p?55jfweV*XpKCO-=9AhAXU*757FrF9N%3p?zN@MB#`*JWZ$+x?6A-8tFZmUDTZGhy=X*pbLN?NrY?@Xto-h_p5MrBMhy1Kejn1xK7*)P8v{kc=Nnz0E-GcY+>$bYTo zb7tW)X_iCQ^L-)uTa1k3Tc^G!A+s+|1g&%-GYR}ATZ(1FHMISS(L7Znh%YjfnOpqc znEcX{>BRVm(@LZD`eoX=d0x+4kF)`OLJ%3t?upV$^U%O`-zvAPI-VZ zg<0I*cik4oQRMkpllC)_Dk&PT>2O~uH~OxfI+0UTlaOC1Wzp&|vj+i`KG)-4m*E@9 zb^Q45Z;WrgbMf+4ZZL?L9;`pBtE(G9Wr-w7^(WII?eaWIzHa5G^PYwZ&AM3wH;m7p zKkwPLurQLvAtK_RHj>$RAq{tl0Oje&PMVmT=hoHL%~q6@l(0J?u?R*X2T7Zn^1eT5 z5qnX>w8Q1HI`y{QyYuEIdi6cB4eMjq&YHH?g)5%De?NX~PC)mUv$(^2^+~;f{{Bk~ z(?j(cc1f4BLce{BP8nh9uN9yAUZHybzQENfwrp98;AJ`g)Wo9?B&4Pz?x&XQ(s>TmW;t-q*@LYr`t@-cCxNKaWC--sUgSPs7Xk>Jm9I158X)m z#8&g3(v)GxbCQy=ngv_gq7!b_P4_jW@H>xnKCB58volalGHzv&kdWx;>@@tnbH@%I zKbhmtw~!Jq@^@)a&`D(kN zhT}*Pp>)BYK0TZosN>i8xuK`j@2riDF!s`*A-?F)!i}WLEGMV0vOz}a;`XyV06ei{ z4Goqxw=-;av$C@K3rG$1_xARVE(r?@Q)U+yR^NQkj@(f3V&7SX*t;9?IY5fhM$M`H z#{AYcHtqfWdi+a`#Y#yxZ#NWZ#8jt<+bu6I%gMYM1T6h<?_bi9=dOs4)hu|f)$#LbfQZ%esLc7|LpS8*^O2(!vmC`TY^OSa0X6!o zzvs)1_oruMm|9s`&DJZ{Bsc)d9p>ha8dGeTq0$es9ZIP46*PQznWcI$=Q6Np*Of0Q ze#rMv{QdpQs_#gl$X~c{;RAMCbfT0$eJq~|=pn{##%Q^2WnPV(A(VDA6u?cJHt9Ac zn|eC0)l)6Z^`Z-2yLPRm@Xg5EX>NHM?XGmH-?lHFu90hMP%+MOx|AVLP$KZeWM9?e zPoMS!W_cd=9<7?*6FQwW|5|!MaMR|^T|Zo@^Yu|I7nhdw*HE5!b#(!9-3^jK)*bDn z*=}QFGuV{kjbjvhw`hmk);%O|>A!DKl#@HBrS&DZqCq_RoAiRh(YGh-bhx>>X>Q%R zh5OfE^H@G%?Ncf$DoJNui;RB*y=F@LT6F;c==bpOyMUZijsn-Tv2f%eJ;BkybxPNB{C|sY7wb0eI@=#UUZV>YjHdOg_S( zb#}#K@J~$sHw_t?&3=A^a#mqI}Kx`t=J9!eO%E7A)bsFYpx(48G{FPGf)X}4(#m?`L_wBVZGuC%!%24b{6niHu81X_ zbeI>Io12RV#FccqbmdCq*y@)Av%N1KtMT4OPk+ISMa;z1bRQ4T3-m2+n;Cw*;k-rg zbku^ihs5%jSAeL^tIwYg6c-o&t&3t+RaHfDr*}qgOj<52 zc(C-{ad+;_*@q7wuENKik(1lC(z~+Ay70+uC&!iOdsXbJ4pTRk67=%WXrOrmHm1id z(H>K}yF%NRzu*uz)u0S~i5GuPPj6BfE$Ejw3>M6NOcV0?vkU&UlaaC5yh5x1jfAn# zO4gHmgCMgY(T@m3#I+o!*NUA+<{ z?im%u9if!KC(qE5X2tC#K7R;p3ZJA_h>YKL&2ux7OMU2EchS=F=~W+!RLywy`0;wQ zecx`0wCW+Jf4mtcPp|;^H5`_NO1M+rE3ZmgsWfOLEs)D@!AbL&i>>jmBADzI}TV z9nAxjax-e01S@KCd$*5TKHi32zajo!Zm^fQ9)H7aB_&ddd{0^&0cIR*$!PSwxt)Qb z2SE};vhVVlF3y^^*!1oJg1vKVr#-Omnzd_5mqB_(X=#2g+o*ql zD{e#xQO>QI?~$Vs^CBQXMU(1lzfpXviTPARWBk3H2&?_*L=65!=ZG)7H3$|o&RP-- zmh{v>UX+uUk2P);Cy@T}4f~*(zJ4-QFHN#c`RZHman=ZK z3k()P#RjKhsC|TdrnR;8XooxZj&0jcAw_Y@hwnXnxJX-IOmgWvV%Dm~=J7>u_A#=( zV;$$&uLLMWS!ULlnVHQtk2n^vd5QkGZPk1p0A*})va2CMAHCfVg|0qi`kz04Zricr zVZ8x678e$k|Iy(Hele%9o`@5y3 zi6DO-rw!UcaGSRuxGd(@Q#1V0kv;d`i(83+$$BkPL3(d=v^F?x{pkuXkXW8P5u#}} z=UllK+WP3oKMYnD%YRE0uKm&_@dI%3erp1GS7DT|zGa$b%Ct=-@jx&;6GI5%b-WYDgUo9 zl>QDshVBE`lB1c<#mULW&FzI$X^L_m8y5!#4lQ2l{k|VktPU=D8Zku+hXZYT81O5_ z7!6m4x1OV;CZv7rsR)vlmw)S!Sp5i<3mn${p@uhYZR(}k{OEc8s5l zgbD%mDkAAn=Si+cr^n-8_WASYXz*hT8WLftENn@S>J7AkoA8bLY>;*iPwP2^78ex~!rC_i?@h;QH82x=Puu!+X5ve^FJ zC+R_-gDUJnJ&)UIdHeF6nm4+#cJzori|&k~*5qc}{f#qm!D*9Z>uVWC(Dgc*%;gU`YwVoIehr=biLJP;L3(1;|g@)Lves;j@PoRO$MG= z9H|9g4#2b?+qPD{@WsCS!%copi=C{eYVPNx4X3)3YabfAeC^tHe2@Vc(6C!ks|d6s zXsI*bb8LLP16hxhS{Ii!ns!$c%33n)s)D6x{!MOLV33(l-Y@(bAcji-WS2U3ZVh;0 zl?>ZA*r!&L*9A2-Z}66#+qXYJq6Y>!aPVM^S@)$gXV3ca+*zgOv}EDgHj+@M$|f!z zh?biQAyE9`^dsGtbm8IQ;jZ3ZreI(6VV^+)Q%D}AFiSWFpj=b^`h0OG!2JajG;~=g z($PTj{?u>DLA7q9TAqq>;=TX(DwuB&ux;q84Vsc)qPP$S733n27qh7K3(&=kBS|`f z{(ZF(OdMANzKtc-hp~j$evOUY;azn9Mlg>j<8h5_XR3JJ%2havC=Gw&?|F}DO5bi+ z{{hWB0P62_8}lPajtJRJA0@!_@am}%&eNw)1G79tzSiLLvqoz|Aw&&+N`>Xw%qZ|A z(XdfN(7&jts2x}aWJ$IzOo z9y|8sR+MV~@*WXOkM|;04TEYIE^IjKwwYHvikuCd3KsNqa+<}uSXZPTEd;S7WA%{z zb{3ZMC)?SqSC(d;y1TQ1ko)oDOi!7=)YYro9OfrKf^j3AJbES|xH9aGC&T($%@LrO z{epsTK?YOdlJoI~qQXL+L@hqQCr_X5J94C0w**&l{o1uVuc-=pe}R-6hb;0t)4}ef z)vyODGAIXxQay7p1dvRJh2Ig%C+zL*3yX_2us`tz^*hwm)HM6!GWr|;{`$BYWh*%? z%{wr#99NKHJ@)CEC5{RfG|s5`q#F(E6<~Z}(~dRzwc+4L-hkGuOflDC6wp0&=gvOR znFg(y?_a&zq1iCf8{~8a5HUf_89nB9FzSz49WSV;1YBl1)$Dc08L+PsJQd*gArMkH zm+1JadhBlo&4+{3l?B|V&J zV?SN5bHBg(DL%3tSq#Nvpe~A>HIQsbjgt579R{?#12XaT+qaAhI=kuV3w?Pt!9{XF z2Em%F8f|~f%GjD_A$E&U;K;&N@%L^VrKJWe*8yXaK^1?_6 z_7i0en{)** znj5xm&2McD0-rxU)c810V;?)a8vy$ahyp6%0)`E*iTs9QP6``d{`XG|o0r%$J?E{+ zc)zW~Ao8*57cX2;2N2BnvDMW*1eONP>?0@#s1{Ek(G@XKsBIsKX+twXVIg-t~Hz_9?d;}mxAz+}}15Ah% zPpGF&)YNkTr-u$7{)ijh%p@2--{U+#^9Bi>WKjryq@d!;*M>gdA}cE!Xg_|Dg47}j zUKxx#8;;S34<8tVo5^v5;9!rV`1}z z4BCyQg_+)uk6HHPAd*$Z_kc}63h2aEX0^-pp(5P4dNmvM`S8)BpRu=u?m}0}wn5Op z%!BE~bDSsnDAmgdW2kSM;9@KjZa($!5a0?73mcgGQB~y)dZTk-pacolW4Uj5_<2&& z2@$JdqV^zPkkkjoqcO?&M9T=aZ>Owi4%lE}P+r)%%`Bq61uS+RNIwh@OjJ~uK{9Ee zl7Snh1$T#~cLCi8Mn=*hfdK~+46#OYss-AZ-(k172@DWlp4DXgGg1{o^JqPdHo`A} zukZ7>|KSA?vD%7{`Bx0W1vSb5i~K> zn3QDGS~fa1mIEmjm(gjQf~56Q?dnzaH5?FB1!q2hkRobe=4=PG=1(L@$81E}zO!y7 z{ndy4sdJEx8R>W-<$eIc1ZCHa&;!Ukt8O~kAuZjxb0=Y4(iTPmO7uoEy*P^jc~MbO zqRRsNbs_>tmG9};3oMKx$*cQoFX=Z>z5Zl5t!x>&!36jS;A#(LL^4foLIP95OFjWRz!py&tT zZvHP@aD`g3$pa*Q5E`0ml7IvYN=n>iC6=mZ)5`Jzo*dR$5cjYY*9N z4o$kj^AIQ>r0-9^a`7Tbc&OFCFT|aM+5{lOuX;;fejGB_PH-A%=C#dh44!~Gj!OV2F6TN$qiLNDY65bbzWPW9d|uB)acV$;1!1|6Re`AccemmA$)A! zmh}3_upV`2&d3d;HpU`fv5BEhqU1G}QtnlLT8j!5emkvJ`@SfQ8^|O(85jusF7RRv z!FeLAM>2O7g4I{%t5V4Rx+!`~H29He!+hn!S1mT%+1m19yE~;a!CggxUPY$vY@IGp zN5`jt%{9$*4XtdM4_J?O({nGgqi7=X=nn|AG>g`bG}P4m#W!`txD}7mg5K8~nWWDy>+mqg17O^HL{22BkuLn44>=^jc+RnzB5+ z2l5ZH?gUn`ZvMPMRC;;<;=ObKk0Zy9MdbTB(~ zvX0{FX{=sjceSjeqc{Nxz(^ngT+sV2?BAM_ocs$Y7>&w}&QD7~u@LQdpqcYFk~q(a zoE#g==T9Ah`a3>8juZG@e!K?&bPTvAMm=X0ddZ8BKdpyTdI1d5E~ns5c;RiZ9B#S@ z2tyz%J>&|D1zDsBG*kDJ|H?TugrFt7tF6sQ7b8D?!^b!=s+#b=_(`ooLL=h`d|(6n z5|Z2Tc`Ju6U%%GUGgK56PU_DO8>mg>6+FK$Rj+5LM!Gz%}@Rs0KsGNhh}i5Y(DqJ z)QDd7x9v#p0pbp+w!D1&{OI}LT~;z2Ou7aZ-_$fF#uHqCsF;}kWb3>^=fmc|R_MIY z0tnpu{gXW-Ha0fjkgfJZ>vBO!e7pbx(_`7Ot8hEcDvBU~F;pi|;jT(Eagh$605G>U z?iChh@Gd$Bxb`5m?v@%P^+e&;GfNe#pO<&G&H64J?j1`Fnd$xxE%h57@bAGC~h@bXsE8P9zl12((1G#210HU?i%oi^fS&kS84k|$A%a%N+K_{T!wy;+7K3+yNz-Dn>7(2Gkv}(i%HOX@7i>zC-raF0V z*kyTnTJT4AK_!uP3I)b=Zd}X1vK~DHWXN2kC(k}_1_lPSs98#vZt7TM>&*g z$CU|Kb1uxZ7^r>s3<=TkG(1(d6lYfLG*D7GJt$!eVjHZ2r(Jr4%I(|wG6m+2T zbT4PAW<5+D3c{bm@OM ze(&mPIRHo^r|;XhPe8BwZ>raq?<2gTknVuYj6N$je#`82nK!HU>bGNwUfCRJRoeX5 zI*mnYK`!G;T)hWsGtkq){ri7>4e<9@_FRe_w#Dv7)Lrv$`9{EW+2RMdy;Ko;(n5g{r zCr_uOiTvv0b{*sBJ$;cKqs_Cq-WPvITq#biHDR#xaJ-?Sa3<#PJP>l4SIzbMS zMn+uF!HBsCn^BlKyJdxI;IEb8(yz++Yj!6Z+@>CHlxhSKXOZe`HK{sq#`(l`1qI-L zYQW0l4RruyJt`*P;vnEX10ubhdjDf`@@#6w(})V*&C%$6{Le>+ha1Y(%^SJS2d+1o z6mC6oqTvc~F20so#Im$~l}p`%YI=*6>YY37m+O?9r{;gj)?1MzUL$TiL3bAp6}Y`T z&cE#6f8vBsP1vm)*RN}MtbxztCDbSYhN6lJD6#5-{)S&A6_4Nh{W*WF5pElBHbFJ{ zcCrZ-G6wo@MMcHq%jWTW*DYFmy;u@+l&>ACS94JtS=RjaE)nedNtAStdvUeSKbB2T z5y*p_eEjRMC7eTO;vWa!Oge+)6>{bMem=g~{MRX|(T!G!B>d*bk00|he#%eJTp@?D4Cw%rVg&E8iiVKE5Qf^DAiX>@ue0LI_8vO) z1eJo(N%Qt_+;R%GUU)Hm(CgTMnC0_fS2uqVH3iaYA^J$eVQHB-R{z+=<j)&7F+2inX}c1Gt6W~8>= z^$J9Npix120dNTXuxdstQVL)Y+5`%#EpuU*4d~_d>s>PJJ0ZuD5Ahm^@qxzxYtA5O zK)h1VIr16aS*ec{tWEz`_^D- zr7h=?uvymzT6b5ZFEpF^-m>CFD75uiP7(-X!b{+%u}Jxh!3IgMEZ$TCQU-W)$i900 z`W!+XtQN87fWztN==d?(o_i6}6=+7BYDn~Fz=NP8e#YA`0>J|=!NQ`VkHAc5sXl%B zYqzllXcXmIEM%$@hV*A_)hSE^vZp*)+)&J?O;= zC6DSE9}ZULhNRS^YhY|G9J}=Lk~m|z`AIn&w~s@ zSYxzTU@ndi`=vJ%a~)bEo57d@(l#ST;$e@F{Iv^e9r##%j~zqf|4DteGSYk&A__NB5G&g)%tNThZCsc~(ZI^cd6mBZm*)!52;r)Oq2&0kb{! z@}fZ_5ytD9EC?=z^A_!uS8ai1{E77=o~Pl6!dGVy-;R&vvL86{u7Y zF^H|tzson)VmGoB-Ws!i|4NbLSX(VxD*z12%_;{#9YRS$kWFsCp9(+FN-gPjp)W$)&qQe zuYeJdjS9=lGmX@>ViXk6=Z=+DLGA&7Hl#fQeP=CvEgmdljOcL?Z>WK*(L77~0kn3` zxj)jBkmO`vkS<`Lu7EGWAD}zN8;gj@e0V_qq*+Coo_-Iu z3$KQ8I}hRt`YpK23ZL!fEG!OP3T$zwsS}7Sjm!X}+cr9% z(1N*Yj^tyAMVPzt`QJJ?IC#1iFkkLYZ^r7)ElyOBZ^>ED`WcQ2$Z0X)jyq#yKxqi* z*Ln~$&v3IuYW)P9a+hMzd7+%&3omw<9lZmVLRZu$H8b2RE>>Jw089~T1wzPQS@3#1 zs1FLOF@XkVVAF$5F#6d zWzpJYDv}9hr?eP4L{$AqufP(V?Hbs;}677Y6<^6%nxOR--e4pM$x)|3$;x!UEcH>t@9rM669J;TAupc&^KGY-&miK?d{KE97hV zdeA2yJaXh2sztNOo4S>|P)mM-e?j{1T%LxD2zsM@XW+Si)Y*p^{h0H*hOP$$Avi%$ zA?t~%VQx;G-FDN1G2C1=kjJV(bnRzjgX;Y`KK?ZVHBPT4l+h~yAF_S!;NQUinlwr6 z{aD3N0Ny9(}G4z9Cyw{Y>i_DEQ3FAsOaCu>2VYE|8)ODD9*rc9+ z#+d}Q{tD6%ur@J=6DjZm1S7(-LMnsxoD>Ma26dcpmDKwio#FQ(_E4glfVEA*fCN+% z;+-7?n44!eW&-B}eliaSv7%1R$uQ^`iO>CJC5!uW3~_?}gw5HJKK@2$%_7Hg)_5fbcLIUJ(V)%k75_hs4AOLo(d%r$VQ3yfF?KDRX zO{5f#e2At*-T+y9_}HJ(jQb}iTZvi2ffEocZ^V#Hq|3N*4A5E8pG1_!|eyh^KJDJpf@xbrXU z3(ztl7>;5vDHih=M`_)!c?AWrqG$XFQ!iZnAa;ttHG3}h1L@I=SRN$<8E9J|-bb6X z{|K72`gh%&5*t~XreUAN{sLI&1zA)PD;mmWA)*Y13tFhKp8(2G^v&C{sfgho3eW6- z+Db8m0K>z;&fn^?%Ii7?lQKFLBdfKWjKBG2X%h6n)8Vk>qkhDKpdN4!L&hO z&cSj{%r?kwI+$m<|M%Ae4E?--4GqpKj~V%1z#v5a+;|DMG5xQ+|AQkx_i!Vw<_i=X z%s{x}T$#c?1RiW|ex3~FfU*g4S{4S40&%I@Itz;ems!qTKH|j(SisC$TT<52F%XP8 zsBWifbQj_5B36dw#kl|pr$C%cm~>Uy4mqLOBc^|aL<0tV#6Ea7pfUzxx@mcNCadxF zzuuYeVOT#*&Ah-#(3G2$*Tu97InoG23S5G}*{#vCtZGB41de0qL#-sZl1z@-!z1*M zSDzS{oK{9wx`EQPVBC|O1HfolqmGj-6DaBj(DmY=^jpf!5ibbNu;fb$+o7NHm0^eA zIT)u$ns?+HV&f%aHN;B*y#ZIu5KOq*m8I5|GX1EGe8>Sm9;{wZ=4=p+u?)8pP9Twy zDI=KFp`eF52ojGfM1Z@CvtyFkX_yv*07a-l05@TfW&e}cJsWW85I1-47avu=elpne z`!g}w0P!$WFpnVvOlA$S6dd|Kj56>RyZ;k$)ivDXhdzLYIME4nIvZwLPPE!jq@Mng z0juSQBhKNly1xXV23Wr1?fCcCKL0xONff~M>I*bmwcg^3OK_qwr?M4+tF<$i4IxCbGr%r6u<&|zHKmx_Pu1M|2N2grsa3$|LBv1fj44`B-rdLx zQSwz@I91r47+FEgDb>vSQ+0|VZ=AX*@)nn;E47dsF*MhpAH{3fAmA_hts(H=gI|_B zlw$}YonU&jGU^x}o30nsqu#N4)hZ84<&k~+9>91)!UMS|m&rK&G)M;|*u=xPZX+{C zMn;lv+fWKkeHMC+!SBHl)(l1B6Nc@Mh>B=<>%v-)R><@v<}|jWQW-pK?1v6q0I~#1 zWSYa&;gbJq?ReNedfxtU5mraZDNB0#eu+GvwpofB+Jz|sra&CaTaF}1laU$j}tWg5P8?Ix=v|7?_WZs|LjS_1)(n35`7&t~3M}}~M z!~Y5I3l2@wZM1Fhe3BFjZ%$Q~lau6gX7o(dNJcS=E`QNN=RjJgQ?q}GsSb22q#cD6 zB^dk^3>|SXKwtr*Mcln){+DQ*Xh%oOMMiiqc1f0nbcHDQRR7F{ajB@IIS^eKjO*&| zCK59AK=_#{;UEA1fB!e@&?5V;N$Du9 z5cAgMyZ`=r!@iXQVdkw0M`@Su<~aWDl8>r8dtk@4htmHnBL2~BBD8nM(+_n6b8%}H zE_y3NZ>q0XREUsYKKfsuAf*@~Us_)N1IA;WjqI2l{m}UBzxJU)*0%TUe>P=<4a=dF zga7$e$ISl||GlcqY;L7fcJVuK`G?e0#+sTMSU<^#ZMEKUin^KEtE9=2i|pQnO$PWp zgO&#h^HTsG^i3LOW;?Xw82J1)gLMS|#vK|OieBJxX{pSGFV{VuKVL;Tw|_eZ3y8rR zvhbV4YE>V$D$5S^b4d?hnZ1sxsx^9u^*;)Ly+ zIjjo0d!MiPYwS-HErJGq?r#Kdu(2!GJ5XTDtj7#Fvb^5Ob-6O49D zPEY?(=NWxFZJfz$x9|0(gQQ;2drEqEdYbk;&C^({l33a)XxxI^+gdJqhN9Elm~6@x zDDJSSZLVhK-8)9es;p&YWs8c;i?h-jf-W351B|4nuMeN~Qy5U76>fo1L_t9zdvP(n zEzulMzrVl#s*nJHETd4IvCnqPVIh|zo{2d&$?~8N_+g%tmdV}-u;nUCp^7Hde zW`=M7ow9XtbK8IL;Mz^D53^?9eV03eA;PvQS&8ln+dE*Qh^mOn)P`=4e$O6Pg`<*a zOy!R32D?mYgSQ5N=d`&wzqYnE+EWi;MtofCz!7e4DbzO>QEO+ghi8wx+0V|t4%{xZ z=0UUN@Wez~fD$~BLbOzSf|~kJ_Waur@cKSnJQ*GfU7pQGkLAObE*5v&zLk)KNQyy= zt7>W$K?k3xM&UQEx$SKgwnn&uc%>n8Pg8v{E(yBa++6GFK?V@}zbY#qeED+FvISZQ zCRts*sypz${w%N1z&5<-^`cETq_OpL)M2no(%>_aaIJL=6`-ANMUS z@yLbMwC-zB@-UdJQxfqa(HugQDqPc(Gc&|=7~MGZ#KYqp9=%YZ?ew&Y`m#}t-fn_L<+c?Nq97ZPQY>#898@r_umS$7IWLqp?(+!0ee|D!3( zDM-RU0nR0ScL%WCq9QkWPRV@>i;q!JUJ?TwNrByc_}aybjw4!49L7+H$@414IV9)? z6qhMFqQ#}9=VWDRoZhPM*|SGt?snGGryDU>;3i?y9A02LCwxy=Hyf6x50$zm1GUE} z&T>c2!>D&sM5O-Zsjj@SFQr;{@1ENKa+G7`fa*C14hdQASY}&vE)TFC_86QQyug}| z(E77N_uI0(tjsk>J-Zc;rzk&Eh)B|s#ykn#yC&M*yYCnoZLNz^>#gVj>y!&xeH7M1 z^IQ@`V)Ksuc+weY(E~l-Me82T}Sy))kn4rZGAfc8+w6tl*M7Itko3KB3sXn z?xVoDwH?ebe&u%Iz>lu31Ml9w6Qc9MF#+uR^ySOin>TNwzjMn`Kc%e91ft~;rY8)V zQ+H#zl_F?Q7&V`gQ-9`egw^~3-@n``vAi1T z5>nd(tSIa9=z2>A+~h;a;M0)Af8^%giBaI;=YND#6r7Y)XJ`XBQUXgmev zg`Cue2ErN*W@T+{PvY4Fm>Eq-NSKXUnde4YpqzqOz1*#~yjCgV?Sx2NY^(`d0(*3O zgR%QxZora5*>RI$e$qJ+7Vy!Z%pb(;-zcC4?=^L#z<(0zem$sji{1 zYHDhVo{>?b&T72tqNw8{J#<`10~@w%alI097FnpFq2W*Wtgj*H)TjJ%BX4f0lC~A< zrMduPC1NZ;Uox?r&ub5c7NB%*kPO})92`800Ob`CDT#dC9=SNjSn<}~!{aAM4{u*GbE<5ZYhJBCM1?ujnrRGd9~cC}G!W|?34)vy|}cVp;_J|dqY zv<3aQK;I@0)`7i4`+u%Jv${pEGOS>+(@(Eg) zkC~Z)8F9IT6DxSY$cNC-P4I$JC|5itzLegSmp>C+NuewcwJvX=K=+YoLuFpoX2-1l zn%7iSw|=?4 z@#(o$8LAa6c}F=pmCc1!^hMjei|!KbnMJ~JFxJ@qOhdV4+MfL{3k~gR{gJ$pB}icf z>Er9~pNppn{Az8bIrV3ZDq!q8R_W509oR83F)^-~E!*Vf)wH>frr=1BOT=)@n%zhC zL1r+8VuuwVC-udJ12DX3GHrxUBqK5Q&^k{a=Jr-$%Un=wAN2Xks7 z#5_2`8HiLypc&5BFTDho5hY7YOAVMok=4&CEBlwY7Vc!Pv>ET(sHCI>u!>Yuq59L$ z?S{TSCnF={-Zz)7Avb}mkgpBHgKLYp(-r9GrY}=*^{{(Cz^j zlWiv0vCR1K15mqHepq8H5x*4>5KyurRm`(faiO~kN8(J8=~;Tb5= zNG%^~^y;Ol3Mwn`0 z8;OC>bfiTL17o|vJ$wrdJ%cO_1B(bHo7-`Wn)oFELljh0&cUq?yhlq%XQOXEF1Ji+ z?O&~lIKr4q4xTHdFKRpaWT-|}K|$TF^OkwJLo;`_o#>7;y7pu81@b4khBtV=ah@@p z@RMN|#e+li?YDP8e?{q#1pHuRV)|IA`>VD#e_1?5uoz}q{2|J#w$csAItfhl4&P?p8+VO>`vi(z6V(Omk=b*fq3x0ep=z%2I1 zn3(NI!&i^I!P>xQmyaX$p2^ufs1?tJBMLS_COCp9vw!G&rTxH-vM_I5k8KzOANoTt zA@*$9t)1)XQQSdiomag{jq@K=+VuXo@U>?ZZ-I^4S*l8mJfpGo$H}&;FjVJqkG%r=IVO-z>WxoeGa>s zn5bV~aKW}F#*|Jzqm-v519k6s>atUX()(*|hN>5YyVxympnz~V(EYUm6AYezaZhIJ z)~%~3ZfsYdF47K&}Fan=#7C{9r>WQ&M^c$9X3P#|Ia2 zDT@;lEBqKOuFvA+;>urK6vamu2tOamT;SsHWj}BL{i!>DDaMt^EC@EwRCx}<6#g2t z6v01xndi*_*;ro_js%uJ@>f}Nd+&il=>-QN=ub|Y(Dke1f;@j_>1Z=YTecvBW} zMrHsK7dLO-yqAw}2YRJJJ_H6{*V&XXFfvl``}Yozp=DeJC;0hSzrRv&k+dV&FE_yV zZ#8<;Yt>O$P5Q1@_T5i5X%$wWs9c@J$C=0CDi6wsr#zKP>p5_!9e{>wCcwP>rJeJF+1ckL+H5^7(o|7k^MMiQ_ zvj6`5`|Q1HU@>c(odYG{>BB1_k8;~hzN>lE1emMMlqiet_~A3#5%GMZFxO@^je~6t zjl?;SRbno4JfC7$Wg{{`Hz76sL`#*}=&zF~d7v|@qGRs=RfIZ!YBtYP(j?B_;}@exLbxHTu0oRQmWP^q`_!Lxx61 zbavj#W}ws2(cwLLa#Mm*8G8~|))^qUsfn4=J33n-u@bP9R#|xsZVod4`99woRT5b( zXSvZRsS_%)fyYjz9^}*drQdz`1In{%ep0m+h^WGT*WnTF@9Uc#1<yWBJK1@8rggf_$|cpy%%^bVM1Rxfp@FBz%TGC_pKK%)8Zk@E8L z*kDy(k&l2M`UVbq9#7tf|TC+qgbpEe}dM z4$GiGT5~x=rfyt)bab>c7V*lbB9&2GWBomS-V-Mt!>_Q51Yx|=F_0mI%sKmAF17?z z8s?6+lL_mwuA-e74BbN>8U@d6jKO6UPz^7N?y@j>mD)Q#s@914ke0@TR&Gt3=yMc! zu7XOVB=eID6rEs-$vXG$b?et}-?L{+ib}a(<_@(AR!VvFNm<9)_Vvifq`XC zEu8=#-^1_U4-*4d6~;%fxGK*-p0G@7KKMQ0{d*K9osq8?yQVS`dmDIC?kx_fPK7Jl zrAuGVI5|n!+Sz@S7im>sLGFU)>_fd_r4{W68XD-n0evN4($w|ziZ%EDY>V>$F3lOy zxaa+q^)U*YzsnW-m2-RHwRk!XNS-bk80xM1-VY59o;r zJvTUKhf;+h2NTGtS8^L}g?*W?B(9YMdUsZM}XfrK3C{iys4&&iw>M;sJ#^&0QaV?P{izi!KTDE4} zc+ev=p+htCXQnDogha3gogGC;DxSym+L!Aw1FGNel>O?vZxp4oI9n=^eJfNtQ$d;; zk4TdOf&%;GW8Sq(H>;I5j!bK1 zV5zm9Bvk621AQ05{PoM1(>SbJ_ahojIDopHjo&{SMjHzb?8Dcu>(Cnz1(>^|R019m{t=*LnNbA4q>-#LL{kRJ_;MqrQIJ0EjK>K<)XQJb zYM=dGh@YRIz+0o1^rw(5?*RDHGccGo=Kj3DD!I`q+s2B@M50xl=MB-{jH*Q>0P$(3aE`FVatYFEoZspG=;Smzv z>MUZWR$EMyGP_+=PQZ=z47@k#%-OwdntDN0`Xti+Z`EDR^?$RBB5O zk+ZC!wAHMZmWmomDki6##yXT(TPn$lBtkD)XVQcm3Q1G6S!OgQ&1jm$)sr@~2pgDPCP6`-EYDPoUl_E|-w67-o*p>2f$& zgg$!mWRVmQYu>40=*bU#m^D06@_qC5#Pk9)FX7FxKJs~Nj1NtFQ)D)M>pvAep=uif zBJKyiWN6+N(+yYni`rHh8XM=7mVzK%hG{79eAbx?9mcDu24>%yq}F+zKhmE5#rhDt zj)_8pkr`yeosyCe88^!Crg?AZ+J;6(gy(`ko;*F+n$>&)@+1B)Q~XsWH!JNLbd= zF`|Dxy|u3S2q?Lb8ns!9hv5popUJSuYPS27?=|LYzA)S}st%(viA+X!={_FtHlT`~ zatq5eiy$PBmdD|Ii`m1p(JfZlq3d&)C0aNTn#m=X+_U9Z&z_yb5eLIWMXV1P`Ob9H zcc3oQjaEVn&T`1dMDpRK-||uJ1cJ(10`8@k49LsLHM#iK&WBbA$M{h%FImj01YyKn zP5qw~dr%bt1qDdKZx1CTA@`Y{j9Xv^n*iM5iuqUyuH3_=%k zia&%7eAWufYV-`TU&+i&B+Px)a+^617zO|;xp{e}9qirUh#?j4J#e6P+v+#*Amni9 zQ!;J{Q{8{ch;9ct0iRt<`vpB41Ied#$})IPy5no`3it`O7ffnTg8C7KQcDjL-DfDu&{=~j;KIT_n7COhq;AO0jNwnBrQFw z@Q|V20R`KjaW=jH-#NxG|=y1FMjDJ@MFGb=nh>Y$Vlz2*%m z?b>-=I-NDAE#O{{S6{=#gbBB*%GK63#$LQMgiTF;DhYU$o2!L3j$84>V+*sfY`bP6 zD@X2G-QAoPR$BT_E>U(ncKG$bTnBkEm@^ob(pb4=#ih{6&);LGNf7W{<&g_l)i1bV=UU|i z7G4+3Q7Nt5&+h$*>Z(=S>GZAZXQ?)wo_M&LM5F<$U^m!KP<9|^!GfEj8+*6GjA&PaZa0d~XX zg3C%1&ftzuoWK7jv4jNdobdKO2hq^Sru1tZQ&Z1itV35pS2e9Yo$++ZoA419TvsIkkjVQk%+ zx)=TFy3V_x^U+-4|J5QMO6F}xFx}WOYL~x+c>v^DFvB$Nx#!WS0=zXyGgp(6x{cMo zfim2UgLfzO=+feR<+pA#*v|Tljq)E)R(h#1v1me4H)Vn@)Or+u-FR zQOE@d+`wInbI7+PQl6O^NA!-WwFG(`shNDf`};sM@OZb%%LAyw$17TVj=}IZ$X`-=Iv+tIH@Wf zdYP{QGhKqzV9xD?DWjd<3VgfTj4{DSEni8eN{aq4k-z)4Ht{WNa>;At>MU+jL>WEmGyuMo&<#V zX6ry*#uFNS>L{CS-aE1B_6(E>d_ZLkpQ%7ywwl)P+;Oet3!_Y36`rwW$YFqC4lCAD zc$g7KvjdM6Xh#jS?#i3jQ>vh4x}(9tQp>?U7KGIC+gVw2h-aM;WMBb;zd`|cKQyEg z9!}(JEPe1HqTCM}AXyG%1_Z;>HXd^=2Q7$FdW_K^I3lZOj;Z@;Iu)!7*!i476@FbMHdPG(Z=E+KlipHTIkXaN=3Pd7&x^!b@ z1Z*mRtKG0^6He4)xO}rZz4U>XtY#(cp!8dipn&vJGLs_Ew@vsT*@06Y9`m9mJ2IjA za(??0vf|;A<8flDz5N<+!Wba0u!I=dap9Wr*Sb@b;84)k(INJM!50LE-L0(5s;Xi% ziww|+!KIaA?+fbJL$6A56U0kT`1;1-I6&z~>70v?kR6A1d-^vUE6f_SNXa_zM8hzj zK6LYol)jIW2z_xdK#IsOYoIn_BN&{`*+xF-lSBGDLq{#zGC_+&vIC8ZJEV_#`0kx2 zgo`p(=tg@fJtL#XT4}6bk7vdq_Hr(e%(qK-~mU0pqlFtBB? z{R(t1<7)|sdjX{*&Q>tpCWfE!-Dq|JO5PqSH4DcEh#jCdo$2sRC+0I0Rn);FSRn-C z)$r)i+~fO;50}{Cc}6XEV{-MO=3;!zsjr`HSvC^-Ps=5l{DhE)zzT=~*?!0HA+Hdp z3fgNyqT+xmDGSYqvNa5yij(su1b!wQ_Z;t&hVVl2VGzWvw*#?;a))jXl-U1LCJ-{- zK4)i=*$dSO^L-O2=DolC(tNhTCi$mEn+ zh?C=&+OIxtK?A}LuS$SjYqTqfN)r|AV=GyvYHhlw^m;8e>*)N}>LGYQ-?{T^CEh>i z#h{?AxC%IyJM8R6@Qnp!$3_`{pu2x7N76E}*IWu7jnrbzL`1N<<8Yv58r`7op`G*SB zD4(IsE=TCm=&SvNjktTTh&yyidGz$KW?y`LVyj0eo=-ox)3=7?Dp3|mBm((it(d|a zh|~cpWl*y-QefYg@~iurpg0=9_-mxOm-vJ<6MtXTZ@Wn2t?)A?Zrzg6a;5m2y_1Vk z3aQk^xKiDshZ%Y3)<00yytx_eRmAm+QJfvi7R1*(Y*`S$@E_vgLj>E+((933E_g9unc?muZivV-ki7p-~XPX a$zEL0snT<-1K(&R_2c%RY>O#w(f