From f7b0bbb6e1501784df455f2cb81afa3e6558229e Mon Sep 17 00:00:00 2001 From: Disty0 Date: Thu, 27 Nov 2025 17:25:36 +0300 Subject: [PATCH] Complete Z-Image support --- html/reference.json | 21 ++++++++++++++++++ installer.py | 2 +- .../Reference/Tongyi-MAI--Z-Image-Turbo.jpg | Bin 0 -> 51990 bytes modules/modeldata.py | 2 ++ modules/sd_samplers_common.py | 2 +- modules/sd_vae_remote.py | 4 +++- modules/sd_vae_taesd.py | 4 ++-- pipelines/model_flux2.py | 2 +- pipelines/model_z_image.py | 13 +++++++---- 9 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 models/Reference/Tongyi-MAI--Z-Image-Turbo.jpg diff --git a/html/reference.json b/html/reference.json index 170d8e7ef..cd10f5626 100644 --- a/html/reference.json +++ b/html/reference.json @@ -162,6 +162,17 @@ "extras": "sampler: Default, cfg_scale: 4.5" }, + "Z-Image-Turbo": { + "path": "Tongyi-MAI/Z-Image-Turbo", + "preview": "Tongyi-MAI--Z-Image-Turbo.jpg", + "desc": "Z-Image-Turbo, a distilled version of Z-Image that matches or exceeds leading competitors with only 8 NFEs (Number of Function Evaluations). It offers sub-second inference latency on enterprise-grade H800 GPUs and fits comfortably within 16G VRAM consumer devices. It excels in photorealistic image generation, bilingual text rendering (English & Chinese), and robust instruction adherence.", + "tags": "distilled", + "skip": true, + "extras": "sampler: Default, cfg_scale: 1.0, steps: 9", + "size": 20.3, + "date": "2025 November" + }, + "Qwen-Image": { "path": "Qwen/Qwen-Image", "preview": "Qwen--Qwen-Image.jpg", @@ -1008,6 +1019,16 @@ "size": 23.55, "extras": "" }, + "Z-Image-Turbo sdnq-svd-uint4": { + "path": "Disty0/Z-Image-Turbo-SDNQ-uint4-svd-r32", + "preview": "Tongyi-MAI--Z-Image-Turbo.jpg", + "desc": "Quantization of Tongyi-MAI/Z-Image-Turbo using SDNQ: sdnq-svd 4-bit uint with svd rank 32", + "skip": true, + "tags": "quantized", + "extras": "sampler: Default, cfg_scale: 1.0, steps: 9", + "size": 6.5, + "date": "2025 November" + }, "Qwen-Image sdnq-svd-uint4": { "path": "Disty0/Qwen-Image-SDNQ-uint4-svd-r32", "preview": "Qwen--Qwen-Image.jpg", diff --git a/installer.py b/installer.py index d725d118d..3edb2e2e7 100644 --- a/installer.py +++ b/installer.py @@ -619,7 +619,7 @@ def check_diffusers(): t_start = time.time() if args.skip_all: return - sha = 'c8656ed73c638e51fc2e777a5fd355d69fa5220f' # diffusers commit hash + sha = '6bf668c4d217ebc96065e673d8a257fd79950d34' # diffusers commit hash # if args.use_rocm or args.use_zluda or args.use_directml: # sha = '043ab2520f6a19fce78e6e060a68dbc947edb9f9' # lock diffusers versions for now pkg = pkg_resources.working_set.by_key.get('diffusers', None) diff --git a/models/Reference/Tongyi-MAI--Z-Image-Turbo.jpg b/models/Reference/Tongyi-MAI--Z-Image-Turbo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe55a0e3b7a95ad1f7ebde11abca96bd806e594d GIT binary patch literal 51990 zcmb5VWmsEH*DxAfS|}9P;_mM54#l;&1}8YQxKrF6fhMMgnIK}JPI zK}ADDMaRU!#KgeB#K(T~8ixpT10ypFGs!!4E_Nm^ zdM0M3f0!Vkp`l@-W8z_A;xUmDk~01OhQB`mxaf!gL;w;3E&vf10SOo3?*M=d06;*2 z3;SPyfQST_7Y$xWiU246N0t8z|0(>t0(gyt06@e+!hzSnhJ1q)AV~d(3I+K;zyEW` zhg19)z}P;LaM9C z$A62Yk^T|tU%}u~;p6;2RRK8v^YDLF%jML}tL3cCWcg231mv>+DD=N|;G+J&0O21b zhjrWGJG(b-1ZJN9KEtX0sq@eE;UoN}B?b7`Bye%z3c;WL2jJ33Y0dPP`6joZwIoZ1 zxWn;qsp0ncPs0T0OZ4z60914UKnjjRIFX&xM9EBB*Bfz;hjWqA`j7DVAdiJ9{xuVv@*_aF zxtqipOD$2+%R+7DU(4f=0|3PU0Fst8(~J}noTWA(T$^eRt^;(c`y!-K_+*zr?%-_U zF-Rc=ui(CCRUHQt0Qd+eWOzD<0v!QPHmmQkKPOTF;Ow#C=>KswG78`W03Ch-SRL2m zO7UGqCIp8%ju<-FFCC23i|dVuF~yf^>TTyfeykoP5-{EzmliVd1e*$g2R`f0Ei!pe z*2AM1`#)AjC{BlSh8su$u0-)i#Hc+n=WJ+W(kgCHmZD^-`a?s`Bzws#dFHg0+}UY$ zIZNH^t{>MX}y7m^TN=pMe zAJc|S4iyr+-1QeH5TN>#=s2&z(7Suh`|I|&o!iJ3woxexJ_8_wO_>|Zv zXo%qmpU{~Nu5a9iO~M*cwM0HDf%C?UiPwjTy7=s$G^Q?ffBXm_wdN~i!c4TK11 zayJ#%x7`f}5Dm9WkgF4~%z<<;wQ(#>q5lUoqntTN>o&@ne_bIu1zXebPL-1~?ruL59! zw-L>N_z@jR-3pPL_#+}bn4G-4U9NyrzdbFF^M2R~(O^g$*I_wnA^GT^)CmeZ~>K zEO(uh0({V*3id_QV0id&oIg4#HGZvw!kWur^%gJ=1Ltq3s~Zn~GUO+i=7;$g7OWkQ zPUNLk0uvW(&6*(UvAz!%Sk#$Sj$)gk1q4dyZ^2c%LKN(yqjaD5quE+z9pVnK@bzb47*cwYQ1D#{iCf|YqmEzOQ~CR4$-=&ZDjy&$2|d_?>Lk_`&%Q=uX}SfWts~( zWJ}&}SeK8%4abEHKro1lFgA2tx;~%h{-a{rF1Mm5OVS`c>`v&0RNW8Gs5v@k2;ZSXtjjOF#mdj4%i0J4PDGLkgv|Ji%?SR}$%I5mXpfa2e z-v@XGdPdE8=MGpQ0tQgf>18?HvO=}?7G5rM$DDFXZPlc4euano9}34-efqYA1W~XM zG;imWYrg2u5Yd;GHRG!3vN;{oJ(HasD|M=`xoK`67A(tmGIT|e-5=*LJ-Hy5zcL6t z@f}p0E}bJCjm(u$(je<#sg&Y&egX+*cti3EScs? z?t)3~`L9u1i33DU`vPwIEGk*N7^*6PDsnrOCTbP_6Vc)Ot%;boLKHoEkO};mHEi{( z{b&h|zX1L_!-8aAF;o1mw~yL~g_;KZi+llASPTLJX@(yYk))7hvA*#2`{sqJ?=Ar8 z{}>w;`NJwe(M`zTwofI3^2W{xrYyt{K(UvlKgHba{GdMqyf4aZbPb#eJ30q5JV&i5 zhzzCmTc>^fXEq%0`rSoL_Q$ao_$!7(qM?O72UAYIrqKC^#Ug0ddV%->1$}}oLl`$Q zH!5Q3f~L4Z<3q2vU;!$mby{Qt8u}t8(C~*Sg z5Kc(=GARG)^3hAbqamqMV#-=WBRsl!DnN*I0JT{lPtFJBV9UF`l5R#IGT1ZRCFi}E zAj6(2cF@UB@tZZDBZ*GoH{n!-?!SF1<`dRTEw+HUOkMRXKXQp%WGysX;L^+%sHj&0=;Yy{YX?Zi%b^Gf%D0j*6WGw(ZR@bw!6wGSnw>azr5Byt9qE9)!``CsIXEHWnN{=7=(v~8tuUpqWK z^6Sb`0ndD2tR6qzj=Cyzl)jQsF0J1V>}mDQY@_#)_(|*OzyC0t2g_O}5X?U38Nwh= zPpQb20(74H^X~+52X#ZuD+XKNYj}2-9wnOj`4n;|B`oMJsPB&*#}D(^=oN-kUqg=q z9A@G~ZB<>IPSZ6Q^K`eX7Ki=qirA%5hol?0kMoZ^C}>mII$LUu^rH#x9uH?gJ5C*M zh#GT`n7!43^ldy*kOWeN*kXW5;bE3JUL%3bq_?5t#`S58Pyc-3(3&Ozzmc|Yjfecm zaSYyeYeH*xfs@@iqo=aAUSFu+fyjdcFik#`{rET|wjnDIeAfM04Y$=i?xy9!>yb;B zg*S-1nMdvAUc2D$?R2j0P^upw{kbs1>V)Xm5@!V^SHly&yD;b^XW9ocr8r{Lw=f zkkR#(k~K{!tD&f^g(*IPAT|9`v>WM>*t0n6@}8C0;o#Y~)7(5Y5vFR9k)e;_!K!Qh z0$~Wua&xIG!wfg8?-#DTeRNKi&AK1$>6wfp$>oRS2OgX|2bTjy=f~>lwgy_lZ+h9*!`%yaTrvlHoL?un~vaY&>{9%GM zR8YB*V__Jn6r!;~q=p$tO@QBQJdJqoTRRyj#O|3uwl(vdxo%j6kjitclc*vibC@Wk zP%l)FM~Ng;2PP(w&((FGqw^8jRg0Vti(EuxgJZQyVXNZP{7Bb_h-1roM9*r&sa{1a zk&Qakp54)tfs435V@cTp89k7SHV43bL$qL3lBTSAWwF<=`aBsLPXLLxob!@wc+mH2(N;OL5h_o-wO%k%J$pH&rtG(vF#^1kuYvxu-$g0=4L z(A*@2=MB71?ljUK9VAMAI6OY-m3ZApAy$c1b*t{2=f7@7Pf`-q*-K(rb>t?Y<&jGm@3xQP(!8_T@D*G??y0DMyPg(wr3?RL@mN%N9^+yFKV z+|6l4qr(N^WaYN(dlGz5=L8<5$wH@VhXOx1G9%=Z@#QpWwRccq#+hh|0U5Ky&7!1? z=VT*Cr@*xfS*|S=>6kBx5fJNVE0~-kq^JbsXLz*F^YdUAyjFXESdv1(#B2{t($wU4 zibefS#l&C9Xy;1ArTY;;DtrXMt32|6E%~>UfRVGOHVd43wthS{_Ij)@bE$toBqzK+ zJGvLoQFNJpr7n^d@7clXC^!fr`#dxch9oF(_jDz=bTu4#rESi8`;(|N+t!4bcZ2*EfXpZDc7A6LnstRnyB90FvC^t^*DiWrTg`_Tw~OhEY~++TNdC`>)C1 zsm3c-!ygA!r^l7J3q7mt8CnlG?1x8AUIDr8TvgHD)0HQeKF#j)8fl-1S8&uzP!xmo zbbnRYi|O9l7MN+|=O36S+JbWm7xE`x2`2Mq>4VmYNj;S!$>fS}HuM6bVzstA-(>C$ z1ujnf?)qHd`4Ai+wD~@nw2>F*UxDQemQ zz$w$RmSSPd%Vc560)ILQOxX4eMQfugAYG8b)(OB){?v`6$;JL4WG$V?1{K$X(yyrgvl^d127($0ps^$=~ZL!J1bY z^K)FVHU-7KQNh@$nK_6&e{u`Csc)FEvo_axw!Sc#k|X4P!+?fnHMfGLy|6G)Qv^SE zjaEO(kS0&NcBu99WUi?_V>eJdaA-U!L~yYucQ?rox;T|oj#gPe+KP2mU)L#IdSP9D zY3IFn`~I-9`f0Ilp}4ltUQtbCv+CD_1#S13NJ3wOeyrkJeLx$(gr>+&>!E{L|IEU{ z&CP*jP1R{v2t81LLd_>%#MVh*c(ZU^zf74?rLGOOlHfD;3Bo97%I$H}!h7S4dDO)& z%zM4b0qUajoD}x&x-NA@eV|J(erVIFhG>$iW3uEhN;Q6XaJ?nee_WX5>3!|_oJ8)R z9{nmE4NU=ZF_vzab9}JkHBOP)biUjV9#nHJW&9$x?7IicP^ma?&S+Iv|B;xJw_8s{ z4l^N*@s1r$>hw->d!t_}c(->haNSX8VIJWO#N`RkU%7^K#)(dlepn>(m>u#}bXk_; zhct(?YlP%)B-k$Vr03ZT-L$8B$xbYPHh?5(pVZvwRaElXJzaom#R;!hy|8wmuRkZo z_8U}=e@&WPB)wr*O~IP1u1Z^6pk_%&A3?pGV#E#%1U|hubIN`mo^cdS7Q0{H>0ogx zt}5+3vmGpgrhOjMQPo`;Upmc$CZul7in@umMBdyty6!V`ux<2x`*pDPV2?G1gJn3= zR#c&}xc03!Zn}k%zmR`(T5T1?V#1eVCa4%+&o_kFe4UtT8qr%d%*!l@qXa{fnnF_V zF7)MiG2s|F;j>BdNzV(L)Ytcp)YPQXwq~d43|I2*#SU%>aCZhcYZ(W4_3Bz1w1*5s z54^B@eomh*R7A6*B7vV7Ky#imJDxYZEk_NS%7r=SZ40GC;9%b(LDjG6`=u!3W7Lyc zP<_`XV|HE4I=?~@P7IC2@x$vv3s6{1qbN(gMke}apC4%a(H3qZ=z9S^{4po?Qy07S zW}eO(x+`jq3BgWug1qggqsB@!Q5nMXa_s157wKo6T3cUkPgr9$dgAoW>XkL8OO@H( z4sVPvHAIQ>WEAGhky5F33)?9z7Ia{yfs)>-zM&NuM zc%_}-C|%l}^yQQguc#->|ug;QKv$-ezSkc@i*5b;@ilMJcqMRuu#lC@0kq<^lYw4GI=J=Z!~~yXW%0& zkLZQT$d1+;*&dfZa>ho1S5M^ z#gyeHQntKEH}WSYqxXgmbF#^y^ci9Blp&%ND!Q!}*n!F_ECuf~4nAe0eb(y9@2wj9 z=0XMYM2wYeJ@kPEdh6MVT?ztaNNWIJW15$nuukG&imEY2#Pu~;K%#D3S%%simd7K4 zuV?xNgqNl2(A@=y_UIotp0vvQa@9a?r9E#zv%`~Ti8azEba}p3V7B&+% zI6NOgPV!xSd@SnA>4d+mp0ToskSA)!^~CNQSIo|zGgHYP1)}oe270gMG%Hz8c$!bM zb)DqBs;%Fr1q&m@47-BZJ?B>^kYD2fXnATZUs0ak?DCn0%u)PIdbhp*RhTQgxF0qm1Z@N_Hype$-}cze!2=k1?k zttRTEXiDRL63NJufg#S2@0aMEdSgy>`pSlXLBUMFmfyAbN`D#J$6Rqd+t1(u>a^tK z5HX%tB-DfC8cc({XY;aYDL-Vd?Mxm0$}@uJ<^TXLsUdhH4ge&mJ;xv60Ma)S@s(2} zx@Y2~DK*@&3r^W!a&^Z=p7ZaUa+nV>KSz?1U~VkAb@A~{ZM}Be()>fDwwn40KSM58 z`pmsJPR5G8$QU$;NLDdbxjgs zwTHUi!ph2t`G$~pZwy!^;%@WiX?2|od$&U+YQ4&1*9o+tRS|iD6O%!=$Y=m84AOLb zDI29dTG9v%fb7Yw|8s@GjPr1)xvPmptow~2?4vwkP1Dw4erwcT-_+AuxCZSzH{%DN z(;TJdXr4itFk14uRFCUh5Z}R6;wcLvT0!a-eG)=Vg&vg(-`m#w>zrMQK4-ZEKfp|& zP8ft1ml{(LITh)HN*DjtEw1Czjen#fS#)sEW0{kbgMAzW6G5_!^>RL_Q9>o)A*fef zTo{;hN~|&)J6A}>lVMXi(Xhy>yRv`nG#|12-ZX=JbS!TL;6$feZAs{Jo!KPi4)}P; z%PoyWh=b0hL0Uo*%JD4pGuFTvy5FzJJb9ujNJfVm6$nqSnNyG+p4Fx@becYM1c>_n z4EN+d6r37!7n$)YR*!0-pVf;N_b#h2c9*K&x-u8pI;f+&^eX{|`5g&I4kiXYu;vtR zAs`=ASba=}?=W%V01y!o5K)kj|Jj9tCw~D5@C_;^D3+GL!2CzPyAl&VK>q+j~Ic=T`44uG-M!rNho`(NtKT{CoFio(#zh zxdmQ%ktmD%4u00n)J5|AQ@oQeL$b?xz(d;T9r5!ao@#JXDn#^DNZ)#08%1+(!8ezr z1kX_MNlc~dfn3?S=5V^Rta5FuQ{8k2yRm4nabyr%8A!7v)!bWb=(8s}xNStwKCr4; z<`~v%Wj$Plj-!rD;}Vu=4J+r*Rw%mU;vk;;+6w`!bT|0{8Pbg@*Di#@0 znNeu3DxosN+}(A$_bw^FNHiMiKeYIa#y)c;2Kf{daVn~+8G8LBb5(2H{ZTEG?q3VzZo_L&8rK+f*Obn`xM%oAwZOzwd8niI z;fGH%7z5tDz_=%Rl8{13<7wjUuI+L#{vVfRvv%8E{;Bc!l;i^(IW(=rG8Xi) z*ZhxYxld~BU55mbWqeq;QC*dq=68OQhbXKh5Tv!~glN)oW3KDwQ&sLb;Pfd5tN{VB^!O|Z-~o4PZGm&vt^x95@*B_h%|LL-f}Tz=t})-9QC1C@@Y-=MSB z<_-efO~d}H<gi+eh^+utLr03((V=Z++d^@?s*W|xnRSP3TPr9SO+17sQg-B zC-`JVm5WhMgUk0xt^#MAsV;ih@P2me?gc2xf!AmfJDWL0o2bEaEHJ1P1Y|(qi{f-O zp2E{H@xkA4+##qMvRu)67Il3Sb`RoR2W@;o1=vNo z`6GsSeZBp=^miRa(m3zGj$a-FKG}^n<40P)OAfzD?PIqx$}TgE@2&bqW`Kf>&xEDK zON(t1b1IZvSfR@mE}S2*SesZ8F=EyC*K$s-1DfZQyanw z{l+q2{2V8{#NtB;0wAVq!jzS>XqLTb7FaaPmUWq@$7V+Tq%f?!)*iWS*hOVjJ_}4} zs=;H#a>?NrS2VPo==Lp?F%mLfU}0^BIuq=kgQfJ6dn8oE~I$@AUA^stbw)>66 zU~mv&tNMd{EJWs%qIG`*msl!IDO#zGBT4H=EtZPy30j?e3?uqVCt7yC)q1N5>AQZn zAo}b6!2PN)<5fNOyJ1_yW!)GaC&#NC@A$Wmca+y|K*rd$DU?<0w6-lUN}j#aaXBm{ zdPEG8$FSTcY3cYoKn~Z|%01w=<54Jb-J~w@&GuSI`1fzYIqF$@E;(}$Tf)u??~y=$ zHP@55@_99YBIy*Zc_#8tGtne{K}Eun>a#bf9yi^+b8U~{FJ^UaT-k6p>VGPB?D=NN z)4#HrRW41a!-$~{p$wAQ$P^zE<9gv>G}x%_9h=uP*|+Mcm5=Ul6DZrX4f~!VvzBZT zm9Nk{5_?`(+er2$ScC$@b?wz(Kt$m^=X1mT0;qK5(O~7(E%g^!8~Y1Vw3wHJP64;b zGRg)2n;04uLakmAVT?icO`nvK=wB8l7Z_!mniga+I$4&NP7QU;cMtaEQGBjWO+UWT zs=n|U^dUfn7lRdKIpT$YcLuUgzp~?eg>wz<#u>(`tGDYb)%s13r*aAe!rJrL@HR2H z5-llH2=y7U8-ouECYx)ua;y|_OP-8g)wW-`ud{#0N5J*Q`;ES5J#LG_ny<=bBF3Lw zGliDK_G2X=L$}rt6Z0$+nEQ#Ogu5gR34d&)aOu0Hd{k=|OR`ctOFrdSj~n27GRjJl z`M3+eP`u>sKU)IMrq3bq4r43V+`Cf@8-s7BvpAm~U~k?K=ON}mzJYmg1%5O|*pYtw zLPs#DT!M4@8tC2G{fKO&wmsTH1j}-hNr;~7jQ(Xf==OZM`bZML4ZcKhH+>UIOKG;` zLDG=&G?o_V9`|T?=@|&pXt-q{@g2-lCHTWC{Q=ihzFlUzi`cqw;o%0oIeeo4ODvgM zs6kO@T+LPSGIiZzZR^1-$ZzcRN-4IT*r?+`mYm;g*SN|YTmRVcVz*JBTSjx98-Lu| zoim8n6m$Kmy3D9p;O(4XI~GhWj|g;c&O0vlh>T07tYB7E#?sG~Q`d2|L*(t)S(Y72 z`LpN4uSox)zFL&njL##_a;e4%i&YpSUT-_D!c)-yh%A0YW z%Cc^&O@b0RaIY%)wBALULN4-=1C_Cm1C?j%+Kja;+j*Nu}1U2<3 zm9o?s&wA^Sdq-1PTeG!&E}NwpvwQ3Ps}ldKl_@kqGWoZ;(ne5Yp{bx`sa6!4(vab! zrq86AB|%wZ+y1IcJ-E5q$~C@@v>z+Jwrk=X{c=D~MDaRt|HA@9Pi(}H>oP|$)o)w| zg23}jHcK;qUoy&mjOdgbrUioNoc+qma1$5N-Jb=ho-z1}nHU4_fwLvG>{bSbF{K!F zlV4RP?@n*^W&It33EE(0y9yHkYx|f?w>>CWGX?R^tDJq=r0+OfbyJ8xU{$F8Y9aBp zM0sp^_dc$mDv_pkRYj0UVSy@Nt~zzDuj8Q8x>g1SW>0moV;^sz_S>P+0Ug&Lvm)o# zBaaSR8WNv;e?SvPubpxe)%(Wp^)(H6k!W${jQ#=&5Il}5oN@@`YDQYT4E=%YWKEPt z;+2J6YHZr>Es@|H0`H=zU7w0IhUQMywqoeq5%Wsip#J5wM|8PP>osN74!B-}73gbuPJNWYqQ; zjkaDA;lY9}v{?yPwF-;Ci6T~)JGFqs1<6;l?PM-P<4)8&4e|?l7O$AAIER!?T$=9y z-Ine`7r8m>kH36_d2b31{#GM( zsc!B_)lan7*_`)DBa+WmFQHx-4KGczTRb8&2k5{K{xr;_xXZ?ok0lQ18#p~ws z+KU<{{=|%DiPWx}pA>du*eZT`@@K5pp_waYHg6GosJVehZ&)sD5!Bn#bP`bxbjmy> zW%P7ip^C+iCLJD-1A&$KgmTw1kpW|4tC`EU-LKTF5hc(SWCn`hsAB8fWImH`PPEaW!) z`=0O{saa4#MFV1f!^53xzO zg1Zb>hCL{Y78zG7Y`yohwAxCvPvcVCy5H7Txe4u*#Rba8c#pNLE$c5ky^|;i#^f)c z<(s*BY>}uN9A)5-{Jb#fsxNwSG&)vmUKT&FZ&3TuQapJ$4!qXjlZY>0^z(Zdi=8nW zC6PwIdzQ^z&HC;H^}tVpyHtdPF7^1z}uro&2$O z6Ox{4NS945b}1$Oycf+`3;IX(=9ZmrS;%(6lG*~nT@=y@y|=cQt0lEx8Y{+r!`|k5 z#`-)Xhx|L@YJ zJbT%ztnm!?IXNkWxf?D(1cVD!DF_suTgc4!iZZ#_v9V6$lFht(a7j`g=V|u}&LF98 zzj~;Xx-5`-Cv_nluz9S@@r>7+xQ;Yhj#pcIh!9!~{Eqrc7luLS_(lSIMMReOeXy}3 zzFbD#pu|viYirxyZY9(@5p_nM?;3 zSHN!BsGR&h#jDkw&+BM=60B~Y(ch*Q$VoA2y$((zKL&2NzpD%Z8FqS1w+RkA6dY<$ zR(Ke4{p4<(_jE;d#mRo0d;}|W2M}3rnyKI=XzO{m7ojv4o(47hLdGXNDs&Ug{{n2d z@wDMvwI6V}bQyK9KMEw<0VUNAJ;I361JC*gE0-2?l0hom!L)li44!W zD2ONJx5qR@Az$|tRG>0*G=4dPyXxZyIKOfTPDt$V)Hu<{&%J9x-`Acui;E$}s{_4k z%Nsr*&N(&Dai|7u?pjz{#L-7f^U&P6%>PCcRfsZLu26@xu7;!2dP)?{+8Bn7lT5XE ze7s_?OuDaJY3i{HJOksFSxb~|pTA$p46WRkuOOz7w|-Cj=@l>&q}QUf>#V;bp>$y4 zgx1Y-ZPIG0ac=OOx3@`f-}s|3+*c&k?ZK~w*{8(*r@At!G$Ghl%j~?qHY)0PGP$z& z{wB6v|9h>+5YTEOb5*_NJFWg}-RKj}p_Sv+aQ1eY#G0MHz3Q+e@Uh+Hx2DYBxhyh+ z3C_}Ws%EUFb(uZ87ZpdQ@$@nC%YP(He%wn^1UJ~SuKf;OEf~Rx{qijep8<2?^>^;R z`OfLZsO^~&f#uJ)t>Sn`62-Q!&bLp&9E^hufgoDL-Hxjbg0?)#wA$x9fw=XtJL0=D zTcF)Jb?{gbYlwNm+5)y-Ax)&IsJtK!sfT^t*T?Cl=-r06*kXz-rS-6<>`2jpO~J|Q zpiRM?p2-6@8uDc6J-JyRuVY+9(d{7V2j~;Jo$>-~d%=-xDD8$km{*`8M5mn&=2a$s zsu!P{z%nHp?8`nrGBGh~?D+aQr2bUTB-Qe)EVX~9$ZP1=j`n%ypIp@!0GY=8F-Z*Ud-tl&*h476$4!_O+J)5GC|pRIxGj4YdFnZhH=6Arkz@w* z7>>s4L{->k^LMmIsd6MZ#6MKWsl_v=}{mK_P;YNok#J5fY4i|%pTm{ZezgUGDohRbnR z{l(4u+bsT835ETpN*!+hBH7-9Hf4)nCJFP+TdfOwZiH_VE8EY0c$5A~rB1L<@stla z@r}AZo^`N;36OmGAqqT0p20!uU>OEb6t48vpasd#H~viSpI&7&H>bX~&v<}P^1d(6 z&bUagnM;0pQkh)F^f6V-bjmZ)t%@TIw1j24O@T?*6yL|%U{;6%8{>ppcs<@ur}{ZM z=8~8fzv7EiZU4A$8_NQ$+g&e*%~(AmU-R!bb`1T*ZH-@6OhEnv3Z^cGFxZeob$Vv?ctF z*N&h+gl&Tg=+BB0`F-zj$*QfdjA&TgKc;1x#b84WAUCMhaTmlL!kF^w(cd&QE3^Lx z$s3u-=r7}_X5qJ#<%C>XaJbQ0X|p7-+T z_x0YdI~XP;^{0TJmzJZ8hh_W?`!ti|h@D=ab6tm%p;`@uMb0}(usA`KO?LH(Z3`!oM1ZGlRbE~&m%rpzKHt3)vAur2qu>qIDP8_j@dw`}Q{?3}u1(g> z&De9cE&c=V6#K98_g9)6Kj}A9eqAew2pH}@vuP6#TQZIkw{K-^(ox$KL5c9|(#-miaK@MequI{^3XAfb?dY6XvGP9c3hJy)9O!$02aqeA8?wXe*m2EqEdC_-a zkmlR1s^pX!v(H!b^$ugK`U%O8bVv0A;L3AZ7>&7lx==_r0io-;f+VRtp0PM?dsspt z+S8GB`dWXnY~Ma=9w@LT-p!cB*%*Je}5j^6gTBIG@hm`0NkouwW$B zD1PIzcVQDiUb?Cc;k*&eRH&UM(u=QpG#%w%Kv{KO0;o_Pg#)=Sc7Lg@Wc(%|DOo!& z>U7xc9-7XMlhsN-p8~Qy`n|SLjq9=>$4*9uj}=i2d~3I$GAa%4^OV9iK6vEsDq9P5 zXt4(9A(@ulobW?)0ZsSsUY{^FqrQ%F)~E$9|5OlKDvo0+O{{ob3Mm;F%eoekNQ0Ra zrO~x@iHy{jW(1`KniUB6jfeS-%FbILQ3);QtM4XjgHc#?F+IMtMj*>{% zPaPpjjc&->cRqNX2IK8NO~vIZSW<|!Pk`Q2t%2>h)Uc**NVW24{ z6J1(7di*hL2xa{WN;Q@J7!P+#X0HNL#FYxm)uGlFlm|UT<<_znCH29ItLV!FBVaeX z0~2AGRBj7pqyNQjA#y<>7~SB1!yNjsmxKH46DKsu6t=5DUW0%35A?ltj@ckl9%2U z`Gitoff{kUg3`n`pa2himWr=DR95eZZEfpl)?&2~2fgR-&~8>+ApO0tFneAsD`~?X zb(hQns~5E7sYr1d?K`u1Diq_lhVPFvjflDgM}kd`N2c5h8J<2-rZ%@!iRfRAXv>Me zWM|E?mL(~wzDK{PmBtC=se@r*N-IEtJQb#T9*I4(&=1(L*%6cjyS_#wlW+#n8= z%(qw3hs`|C3AXrpSR0K>s`3?}J+asErE(~nf*Z;8Z`<_VY^6}1u(pt!c>)FUIgxyq z`N8y~5N)Q?=pU5IWs9G$+9XE0@P{*S#&Y1n&vP8SOu^2r(D|;PMm)J2TYTeitNY&5 z^6o<69nHCeAB+)Js=e~^T3b!2-s^25et?=sJucH9m-M;_U+%=CjFXvLE8}G=rWGN+ zcH&0^7CV*XHu~hRW<$ot!`O0!mJXXygm!`f`7Z;`;abbkSM zj%T_8IkG>GOC}5S)qBV`6i13(1Trc}j1_iA&5n(TweAHmvg(BF(^cq#avl`RCkxt) ztn^jEK!5tgK^X1#y}?-v9@;qWOKo|JaK6w-9&beNoQf@nY!wC z$cjD;*$Fw{IaPb$8Jd9`@s)1StxZdZKBDGb5J~UbfK4m9Kc;G)>;3dEt$zVlb_U10 z>?!F%6kP8Te<`4C;Xkk@m^Aqpv>bOn>jK$k3jssN{`lD)SVb zwbe_7mx-j(@p9-p#NF*QrT4~tlzU?Fc00n1^lf6qU9m%fCcDaR>wf_U@Bl{6gyfk+_@8aGu zYE!hFN2tYhbJGc^$%Ah3JctbFOuYs&kz-i`7|n8moMFS>Pzu7F<}t6mNz8?y78t~{ zgI3%r9(q&^`OyHfKjAQkRUB7jtX}%mPxOj8d;8gE=e4;{U(xt*ZPa5KSfwxq zl#oR!s_qQ3LPw_G>4;%z!&vkuI?pe~t#^&QC<4^He{;VXff!bZH87p9&Mo!DQ_8tE zcZdrtGYLIVZDiHsL(8+ZYT^0vsrXYLg z709VbsJ=i?>D$ME@lm^<8?nE?3h1`T0~Hp#UDVinoNkK3kchiQmb^OFXw1D6s{GlU zw?i;?;_-EZe7&LNd*ZlB{G>!yEF4ZZEj7pKy}z#DXJ^H6jkO@gqtCbz?mrHMd)%Jg zqP&HSL&_mGPsGFP^NJveA&3^xyf1z=_$(M2pH><&q65vg?sD$zvhg%G>oVHQ4`xfE z>lA>JUh3fP)yzWLo`^-9ek-NZ>|XGQDgOo34buy)EQFx5m?ayr>hi1AlgNy!wBGJQ zO5@I~FOIoGM+;;RB6l@X#oCwI>GuYcpBIW4iLdt;vU18ioAWLt0PJSV^t;CdvAM zq+DK;zG+PwecitRx!;Oc`0>z5T1uj{Oa(Fn_%vj6Cd2PRWaO%7)HZ8#R_1xd#+Tav zZ5zF6({a|FRp-=%PPgoJaLzBW_%LEh;Z5j5&B%v=3gy%z>znDz(6eY&;yC{0qMD?4 z&myL$>@R-^YrAU<-fThT@hzi9%2gvI8J8nXZy(P_I=F01@)f&%(Hi+Unk}qOt?xL> z$o}A`UGi4_w&j|&{jCYwbW8D0OK-4yHC&`uw~2U>+tK=@hP%#95{gAK+xX!76_w?; z>e=9&qU&;66p5d=D!6EoHr`x?;2BdVc_S}bJLQCwNSn~L`DW~d?wv#sv2AxE8DUFM z$~%zl`%w1Z-X7P~Bwum;-=$URVQ==Di)Zf*#;G~qDbnq37ckgMx+LUTwQKisk7{GM zk;;>)$c#cF=6ZM}PzqFikKgSvu__I>4(*oryiyj?XB@>|eT3B}cl`xKhlzfOun*uL z$zb_ubNH3yjSX9VenF9ChD&oHNBgDot(=n-wB z$w!2zyL29Rc8t};cJz{SKw~rF@g9ou5;o5IsW;-o?l?}2@{L=Q>i1=Z!JW~|oBXO_ zR;Y95F+!+tm-rx9Emfn`YI=CjCM-+-m)bhyy{Bz_rG>^%Ee-I6n5RqjTllc zsQDB^Cp}f0A80fJmHR!3!0j&DrF|GaHTwL<3JQv{DK?3voF?xWz7tx%*s0~MlT}5; z%6c{TDYLMh8m8*UUXHW_=^=KREKQaxPqQq6pQqZ`uy;78mh~ss) z3XrlG&yoQRj5KC>o*F3{zNJe9_b=^fD{Vm(tH|g`0KuGPNhX$g}gvQo#=OUmc#+gvFPHt}?V8dX`}EeExs>NCs%B~MvD_ju9@7d_90PPU~;6!9!z{xW#j4}4Hp8G$jV$CKwZN}V;Oo+ZIbT>#uL?L+J zn?`ieY_XIrFG!7+F`*VI7~hl8vTTHxxUCu8Mu{;Pp=YhhRRm%pFNMF%k(Z$n5SYGP zvAC8tS-8Il_--#mL3y%9MtW%P%6f@%G6=+}TO~htBas9ziNE}sWLAiw2uMudM&k8a zSf4uHnHJeKt6nif(fCA%n;Dg#@$uoz%Jjt()@1ha?O$djL|+^wWRRP(Fl=^=Zpjc| zVoJ1Hv60vBOzZO~+Db0S#M*5(k%_c%B_0Kh*+mG4UQA?}k(lG{;W814f1 z8G52b5uSd|7R4hR$Vfu?x@Xaqer(35Z-WndG*^<3i{O--W%w-+wPVuDEQgC3m7a^QG*L7|RAcdEjL5@M#F9OvY=M>uAudc&u1`^y-pT&}Ml?iUE?8`kn8-+8 z3}ied(HU0+yC|Yb(G={VLd6C{qDWCT5=LmV6bdLvhl?3F*yAYlPk-#g7d)vMzeYG& z>oWUr*t;>riV(aI{9d^uxlz{xL|GXN#y%2bLxHf`QYjI~WMM^VA}C`i6pBR@CSQvh zB@-$=20NRPKgvXE5!}hm<(}dZ5)ix){C=r;WQFpHaz-qSei=w}9GK+I#gA(bBY=;mFEj|l0Jjzf^y zWsp|Ijt8+3VoSxL!1mdb3tHK@hOE6L$+Oc(epBrAxp&KAF~mr(G)P*nDNE@YrMg5! zgfA5%DA6LcLvAE8vKh#`_%b#;q5BJZJi zP}vz4Jtv#=IW}IGLYM1EX4Gu`G2D9;&Bcw_g?$rBTryag;!(7s zGiZ)t>|Sz0gR(1H@c#g#)IzyN9Q;!r8C8kx9zVF7Z2Y0jOdg?6hu@1mGI6xyE5X~?8oXjrf%nw z_VW?Rw`G!t+C4X@-T2GDJd>f9T@ifpBmTszYEHRNkOxHt%(QO;ZtB3g(8A91~h9)*X+tdw&~rdx*Q&+C7ot zp+}KTDDq&<5;Ick$)UuDUJ`c4q90@$avv{BvN-<$V~FBVkhQV9Ht5$DDytV$o4+OMe*a4B^al>!z`WYj>cKI+&O5IoTy*%-;ZQvFH0@6A)9cuy<^_8;S6OT zL{+OWy<%>ozDFGqcjLL~e~Acw$>d3B$hu61M|8*8Te>~AMeP)?R!TNwj@7Fr8#a(! z64J#o$259;syP&h$w^v0bY+%x6kx%!H2j#m*DDzGWvVf*Hw;j0+eg@?_=%=TEfQsU zBugV>(yVxzh^a68)jA_01Im#p@G08UeG4s-mFmR!8`ET(;Ep-5dU?O0dJL@e{{Zn) z?U=m-f*f}Ey4OLM+>H9+=uinLoMsA-Y3+ zi;}BJ2@8SbBgr$QIdVY@(?xWJfC()1c2z4fktanJ zLd>^TmGWH?<&Uuve0Wx$Lt0jglti)FV)K-Q{{Td9{D~@l5931~8+I-R?EaQp>_z;U zCG=zHed&?-EfGGvBP#J;E>t(BIc;NC$(65?J!wT1;YAcz#NBBQiD^Fk<(Tk!?-p_E{UxYC^86mgeelYL&mPy;ub))k{ zqs5Ac6l^vdSz1GgkIi?;@~WtlsYA(ltrzhn!qIkp2+8m=QGZ3r8_U!^pAQ(pMM40FG{jXg~`yrL*U$5W$8m48lhvi%OtCf7mM@8`1tI-8>0Lq z`O+FLhwvp#e6a|Vx2EHkP?1Gw%Rb4{tu(*T2D); zicCt;Rp%xADEwdl!~i-F009F60|o>H1O@^F0RR910RRFK10fI+F(4u^K~Z57GC*+z zBSL{tQeu%5GjgG^!Gf}YgVEvt+5iXv0RRR+0{;NVTYeHCe7W9tMdDGa*Hh+CCH&vm zC~ZmWZb{AfQsY!#-4WCAknarTB4uW%a<}`G%3lijE%P>RrSF#=8l@V94+sOAd8(cO za6d^<`#Y1r`k?+U(^dr_Zz-`p4xOP?Ets7Ucf+*E=AHaN`G`8Dss8|#{3SUPu3x2m zx`Wx)P~b-eh~cqZ}53UptYjR}nLACaclPWN6AY{u}sCl_xSfD=Us zZ7nCdCB{j^E5>$o=!4j0g>PRQBJvshrGs4sDBYs2QU|lNS9L{Zp%e&aLw@|K+q;sbL!T3{{W6u{F|*h4vI;Ww{>s9 ztffjH5%C%oo|DBk{{Uph2VNmmVWxKk{>k8shmi|GDYaY!-rp}kn(Xe%)0pKqRVlmU zURvEmt6X6l7CU!BHP|14X5>^Tm>pFwhGl4`cZ)iXsv9J7lry%Z{$Poy_8Ux&K}9^3 zH3uotW-ZJ+ubR@wOd#KZt{ObC*rtO~wKEB_s_zl3$R_;p1PCyKx0eEEYGqvP#Qp&d z5}^5p6&`B_7T5^YJH^cM(UVlxH29B;k}RgHrV)Zf@BuguiL~izvQ*az*wI*i4V#%y zco&5Y^D2~@(I=WD>UeUa2_9r#^Ky;sojWu5Fp-p^3-@{~-Jwa>iy=W6*dzWnZiv}2 z>%!d&uF1e-3NU~#(K@S{5zCr`fXr~wPhFh3N}a7ec-}Cd*Ot-7%f2-MsOGrx>J(<( z=$d>&=ja9!j(pwWW~S*|vO8mb4gGyK)^t+}l^PjD?-zDWYaHiQ=k2w9i(ybdl`>Tb ztneL3yQ=s~x6M(qaR>K7t*F*8~|%tIVOezU#W4| zV@zXba1wHz6(5*Cmhq~iJuR@)`E9d*!YaMt<>ciMzFjJ z!z~w7>G(}^g(qL#d^=p`?g+NW#52MV%-(#qca^s0$j2XXtLa}#)u^~Z_Tpu0h#Icy z7I$iP?l06U++#Vf5wR)d;C{qdc55R%a1Nx zLr&0LI8r~UWpTRmAn@e|;bo_8>T0;TSTt-N_(Up%>mgqPKVSO6uIe#}JRLa2-F6RC zZZW9c3Tm4Le7|tFbi~tRvb1VZr!LPcD5wZm!g?&oWpBAn1M4%4$JT$w49Ai=cE=s9 z?Xd$!@wLnh*!y8g*`crr3Yejk7X2u;uaxQ85rK0{r1w&0R+yAo%bG3vHAMX)!3-gQ zK{xK5%IT{`rw>J^4TE5we0ycMI{PPks&mp6fWYt`>W<16hfB-XVof$XeDl7GFFAzP z^d6

9geu>O)HlTT1#T&$2*bmc)4m<6!!$fVi#0DLelNwq` z%%>gh74=)ZOs#nVUGDwUZgIDm@q}An`r;lm<`8pCf{s>_S2b_$q`C)fiR8VMld%}+ zv@4$rMW+?d`(Y&$%a<5BlvES+`)p)?^3V2Nim;Wvro;^}cLz)-)3*$RQ^vZM)GRw9 zonI#-(`Fl@fs2O+TrKHX-lqcN$vMZ;mJ_%Zi$%VE$_5dH_23xQOz@!b9h2!2QFrCT z!ykSnxFV%N0O&fQo6K%_1dT!)MHyC8$A>1eVoXYgH&TK)WeR0NwbzwNU6cxIF@P3Ya`zM}R{-D2gbxh$Xw^dp-2uUYqRqPD z&81Wn$t^d?MxKgJ)ssx~SF+5_+U*wZvXKs$z)&vvhYZc#sx&=OWk!~`Z9rMeY_gqE zcU&&46_mSPiux${MxO3^GQ*_G&s%u(;q@s7$||rqXJopM zUYji^Mdt{SrVN(`<}r2QQn^lR{K0opbX)D+TbqPB0UX!Nbi0AwT@2nq{qPXn+tUf8 zw|TlEZ5=u+g|hF?aF!JgvBpA!=z#}AFq-z8AMLSmzsR7_=R4m54v5vDK3_4@Y%a?? z2@cRg&0H4^O0qR-48UmA+@LkUg9s8d(OZRN`PLOYj>>wiUL%w%%ya4x%1Lzd7#t%} zh1IO}^j0SBvqA6(Qnfj}6$VEyItoOcoO3BRfz&4X} zIUHRF<_m$Qmxr>bU2h`gr7?t%Lu!rpR#bi{&%F=HrHs}FsGsQOHY3*j5yJlm!L zQU0KunkqcFH%=|~&QU7iZwSIzVMSYaRyz~=f_;BZD)zN^3o`uiU)$*Bqb{vXTBNtU*@lrJjCaWwEH{=56^X=f{jJ6~Y;`QW0);$WATOV09Ri zi6tLoF>BA0C=j!|S6y98Zi&loY7~K(l_$(JTlc_Io#Ung0<J>+QLy~bq}-yi zv`dbQ%O+%ii>_;O=o4_v!v{s3^rhff^*zxbM4d3d5EZCba9(6ZCjHl(v~&euWzEII z3*zD36_vWEY5ra34R6tJCk{)XMNTcLLbrx>gwW^bJy&cms=9%y6)DN38D7!JFf>bm z8BrZDd2rt&bx{*?RZz_{A?Pz@F@(9~m3I|X>OeHgnMs+d4D~o9VU*)-Y-nJfw78_CQg>lcMtiBTbf$ zr3)uJX`cHH?yrpCY)%9A*^Wq@E^wBt+?Q1tHWR9Sf8eIS;zmM6;Wd-G{oXBl>bX3%FB?Tp|cfTap2SjM2E4*RmI30inrvrz& zgXzOj`>H3l2eu~|=$Ihs2#>OiLq+GREOW$;i*(Fg3T?TGy3XEv9vvN2opu?V`Gkw| zQcRQ+whOR~1{3LQfcJdfEmxiZ!q$3<1=>8Jky;u%~* zgLP(wyz6$^of*|MiOCQr0FE(_eTg2JT|9o3m)#wU>@uh!%+oTdm;>&wPxf1naQ^Fd zqYAq%*+FR-R{c*6Q-q_iJW0vU5iGt@r)8T-Zf%00d+m|wo9>_eEAEKpuL6T~r)`ewu1@he;im(UU5>r7^Tb1<)5Ss9HvXHKZAZ(O9 zEZ_=%vitB_IWd`04tNrIuasnVTkQmAiXB@<+ub>}i7szdWOgMCWk}Zp>1PM~BBz0u*)^k5ngyCH z6Nl*tfNa|!Q*#TbecRJ$I3YSGWzuY^7Bm{B4E9W^LD0#UDy6>4Ibl0GEXR_%)n*=w zaD{v`bx!tA-~ral+^)?FviOJcY9yfdAF`36+-fySziuonz2`vVTkl#E2e)+cd~cB#nHuq3Y9#K<<&X_a>Kn>P7h}y!law@!=lw{ zwJTKxM>QPqzA$jzSJw+KD$!YLyx3fNDOOOSA8nJdZ_5g$6Yel~Q)J3xMzsZ4{+L$^ zr8iFM+#IDwLC0RR910RRyp zF+oufVR3;VFp;6L!O`JBQ1J0^|Jncu0RaF3KOz4B^GEW>{?_UFhd=EHKlkD6@fZC{ zc%Xa)I?*o^{iPeX%MFMbHWJ(Fa%AU(RCcTW0%bk%a*jXdSLF)!ATm{7^#m8qAHYVQ z+&Nub6cyUsKi~fVW4E(#CwV5R>)cdTXdFOT{{ZlRv_>?an_emhfO1Y~dd^Rt|15>SX|Sw%vxmus(HCk>iI>*+k#}%YFo2MUxJ%N7?o1TGcCF8FIz|({WWPqVpZ7adjPk@-h&5*!*7Q>2@vt4IUebK(0~oaa&VrG1TV2 z=UUS0A(()wh3JHkk-P-FP-Swz#H1vSxv7|*qq~00AUXkjZ!)`r-KM^xI!!Yx%U#Ma z-WXp2{M^3EHA*=7{{T{`iQt)uVH*uXSmxmE6!$Q@J;xt_Qn762amXJHGb+`_j=@2iE^$C+{!T9C}UZBu@O2L>Q?k?s0 z%HIwZ#LwxY)G3lVM!{{=QImpcmy)Fm_KfBgm>&?-77(yYM1}ks$SrC-)hgxyYDjo|3OS+lMOsW+`_yq-tLf$-7?*9OTUzPK-3~*yz z&C7kJ0MRR$K$y;DezCz$X4!zZQFJxT3d8Oi9YYFJKp?0K+t4|Tp-GBnn>Pop>K+YC z<>Abv;aw((J`n6qCSDqe(AyKbExBq}6(M6D*dlY|58yw9@lvHql`2=4@*ggG)E0M- z>XmHNC-a$+K;P1$x;`fch9+p+EU`BaqXim2$r9UU^2fMW-dQnRvZ(1BB}}MZ0>4>J zsL8@Yv@?~OJ$Rk5i5j6bRUQ&ksFkk}x|cFRuqGfAg$IwzH3C$x3Y97(ugGp}zAxOu zX28xB`tB~+-KxHjvtAf3VvhmFG`-E>7G>i@;uJE*Q7DlQ<_~ES(JHx?Au`mjuigWG zVpLomI1Z8n*5|X~k4Zahb63O*v-u@{mR|OhB_#qC11mPIA9f=V{{SZH1PFc;u#qKr ze;Cvo*%imkR`gxi;P~*3ik{%=Rm-h0&P+@|m&_&7$yF~#fQxk~AjC1pQB=JTEp8~} zJa$6A_5IB=M6ZfJDaPO67BOT8h6SjqDBbwT5FzA;fjW+O5op>M3<7K%8=Og^c%r#^o2^ZNaoi=VL)Go{R)qdR_Kojue6F6NA8-i^lBxCYZ2* zC3}i->~0~tb$Wsbhe)L>hvKZ6g4DQcUDOg8LKS@kt`hWHzT+kG& zgebXYh_xuj!6SD+GTvg5gCO{a9K;&nS=@I?Qk53&qmL(o5Q1im0@b1ddNb{omX?R4 z7c}j+2ZQ+^IS540ZZ!``F#}PSY8b&mN;4UXAdS_}mLH)QvKXqB#n*4*Q#3$v1kRKf z5S9}CMiMf{s3VDJvTupP#`umsQgBjNl)uI~L$^&L?u z^ZZ&(9YX3}HV3117aRLh>TZAq84y(cLiAQ*5%=1S=cA{{H~-UNkLv zU1O6`qn`)CkW&l<)5VLdcAtdu37TgHCBK3g6`7x>!Yuh1{ybY_vpsHcyO)n3{bh(F zfVheL2<>Qa};by*aS+_Qs#KHztyX;ekL@Js&D zui6(xFlsd}IHOG4sJ>>eB&C-dd0hVhz#b1FnF-nt$dw`EOE2&yKaoz?&anMN9N8=! znOMj>EkS_N{Y{g@MqwtUdeTgXF0%_>UKV3;g$AWg6{a10{)mk$j$pNyOBs*3wRn|- zC&|)qQX{_@-!u0?vDDWjEgC1_CxgJjEJ^7sqX=b^ae2>!AIHqSDr^dFjI&JZi@E|-) zQAFHNkI^}V7HV|j_@1;U5#N)_GEayoi_MP6?I+Y|XZo4Rp$Cf}$UqH;uMdg*(&Tef z;em0)J3ImWp!w@HW}(TKeIx$Sd}Ohg$$!2bn@NA407$8}jMV^`c!S~cPS<$&QAR_Y4lz^G1BVDKxOYBtzN@G+J+hgC1cwW^9KoA@#w4j3Z27%Ehw zxI7MJqwo^eDEK}f!^|;*>IM?2NJ?8abjYkdz8c8+ZJY3$7p~V zOse>6h+Rw!JOy!>?P>$GOwK$#=8>;H2z4`*%aW0Suh*Mk#ePIQw;-;8kL5vvhTQm) z)LbOBd=4>>h8{@Ehhb*5!_?WIu`>IoaVtEmXR)DLn|!5=EP^5(({R_C9@dj93xGn> z-*Zr-AJHg7rIzVS8oJDh{YC{F;7tBbpBG-zQH7<-HwpEa-0x0wgh(=ag_>|^p z;qhW5!SHzVG=boZQ*c4NZsq@^@Us4g(d&Lhq!As7eEz;GSIh6Jn`Q0`JhTD%FQuLAcB!I29xoxpj6Oji`r znQ0PMaR&OE0R>i}?7syt_EP+6U|Jw&Z;zOWHnPTFa_01bL79n4e285Lqn@DBOMkLn z&MF~giqF3U3(o7%l-5Y<~X$^p~N5q5*K>hGr!kH`E%?*`Mz;_L&7_st!}8AhNB5Fky>`k%VIe zq-HX+5p$0NIiARPX*2@sbrE1T4=2BV0BmwL1XMa^nUgj@s%ns}{r>=%01DDiNaM-( z7TUhwIQd-Lpv{(zKnGlAGbN6H+F^^@I>&PYOH9svW?X}mL19>4qm2Tgf=f2q)FbQ0 z&m8!33cwJ!;oJ%u)OMFG6)Jk!9c~m#oX=4bx@wm~4pNkz9*A>rCnJvG{Z_z%Mflrg z#{DJcUL{JVZX~&w+BH@F6UsiVh9Etnc86Z!h_!Gj&Sl!8r*PTc_uy2D!ZR+9{{TN; z7w{3fmoNv?HrgiA-4+YW5z$5KsHW3hp5=yo20~wQw!lL*`l0Z1E-blmOXrzY(oic0 zP>qqWKq$XM^Yo{!D!)AZ-YqE8i{@?;g^Fe5B;b`bJQ*jkW!#p@a&h<-~w|f#e{P$0^js=;5^^Z zmHVoH7e(q)cFe7@wBiAaD1|`qLe-$7#rV_1IdNmsXA-U}pBf}$E99J$uoVIc(0`bD zg2Pphi1iCn+{U+vb15SBoP^ zl{S9}2q&gui`*A5Va+QM6Xqf2gzo1nxpFZa`f)OAq3UI1AsDFQPe;_Q{-y-c3ib$+T~CH&cp;TB$|w%trmcYg3( z`Cy<54-is1{2aq^UP!w5ZAXJNVmGm3IEASLvXM$pmx~KiN&f%@0Fp&w-GR09ED3>s ze}dDb3l!G-gG=;90BBb=Ip$_s7rBW+ZxG&veM1T^z#WFuq{^npxP@KHR4p;=V=g}^ zk*kS4)C$`D%7%+3c1&2`ct#eW7ngBCUb?+Pi1E0C>@np6)zqHJkv-GI_y_V#y|4L? z?{f}PQB?d5rz`Mr2F`qHWR4srz9N*%IE-x!w)G^EcnnGgNo-%yz&Qi1wtcwn{y5FsR4QJ~X;p!to+G{b%@f+@v=#?m}N^+<4W>*gPj2d39 zacWkf^2@D0K|4v*Yj%2N&+2K9A$a%tOV828mv2*R9m6!V1Y83qEujAZY%Auc@_u2- zmZB_8R7lYhkZ&&SEA-e7C5Bvx8916sl?XmFiJz2;h$OhmW{S`gd4L65(o3Ou6tRv# z$Cu#1og~v9A;kBA6p`5}&eJ871IZtLeP6Ui~@|Zt%*pHna*W@AvF)Up5er{3$|ahQY+B?<;As4 zO6RiXj0Jx(rvs;QooQ8zG-UJGi7lJG5x~Mf!+kuoj5rzGZ~&qj_Vv zH82jU0?X|f&hak-vcrX`-dEJH7retoHsqP%Ab>%L-GLwOGA4!K;9?n6WUBW$P0DJ2 z85|s><_C!DNt~Or2pPB{ooi0W{ecNbdvH^53}9S2qu)Itl4 z=5%)nUKFW!STe{wK`KrWz-W{cW7Oh!%BeOq&(u%cPFoP>d{&s%Y-KH`er1YwmZxX*WwI8FEYfZc9r^$f>_(Ou`5JcJ-V899o=EA>>o-g=hMbbC-X;*jUvQkzhN>!z z*W51SD~p3_CPTiZTq*B}rE@THfLO9|FmL6VZP5avTYaWwMM@EHqcLSbVrPMlU|iPm zGPMw~)N*+ug^!YEK^fZtF{W5wY`H=h9@{CWF00BO8KqHae6!oTVa!&a?T;PA`O(frWq>d#+=s9vC@4 zQ)Aryl)y#=g@iBt)@*P?mLd_xVSAH=i@Jg0anRgKmrX*eX@;t%jloiou`4qQ{3fv< z73QK)jku2DSNNEF?G(U1WkzmHGnpn=kGStd%I3i+_K*6OOj%fjDa6Gu^gY2O5Tg?G zvg&2k72}Hh8)gJqx5mIk8G;Tie{^BHFxB3elCx#O@dxd2@tl#|E)EQk-iA!64%HAn z=;Tb#RIgLxJ~QJj)bvk8^hA=k&R}3;QSVT7sp#>_#?J_%#O3B16EC#pZ#6SGo0>$bd!KT-wC-GcN=hXXrAn0m z=3PQ7EZ^`NPl9}N+C#b(h--GB#O%X=mj3`U<#0<1?aa%2h8T@#<($Ya=VAcVpW_1% z{N0wRz}!`3#IC$goZ?^oS(ryyfuVu3Uay@$nU!OKm~x^=FXma}=>#Mu*qcc4KZi@d zf@DE@2a;w3m%#r3e5{iTyv{cpn7-!-zf?44EM`T#$|vxb;ZYr-;l@kPiSs|cd*{A; zr?MKW+)7z1Dcua4PEjZhTubf)(K(rSc#D(Z3^fjZC7BEE%^$H6F&2HMojt0D{;opX zC#K1rDeZFYr-Z1lTt#=Eq6L4b97hDcN=og63}9#622$8<0dl4VRg8Y~N3a9;{vfg0 z1Ip*`GbB8Nj{xq7@8LbR&GiNnus)~JW%(&7D=c*sq7iS(4KZERta-{Lz9=6l?uL=n zdS*m4p61B{m*OSdXN$V_FZ_|{?5)IT>a)0-B4Gq6OYeJvlA;D2mo}`>6;o$r>zJ%k zZG+UOVEG}6Y1(HO2jcX>#0 zDoAhIWU^`+h-~6n19M=Fi)GBq{C{)q72IgsDc_2c%9S6arT+kE>D)}Y-e$c;=<5;Y zr64HJGSumOJh{}>J;51A2fkSBSTs*&L@j+e-9-Z3J$@%u#idH#0<&gN0PVJ}S7i=+ zGF^W2_7HOcwHES^b2Id47G|CFhPzzLrHCHK6FQCTBVK`(!qHO{?isHUQAfv)GcIGl z3WnCIVhh(FB2+I41vj{B%RNeZl=UstBzd_Vqg|yrjE!bK8VHPtXq7-Ldk7Kx%BOK# zSo^~-UBh`zMR+k7Z2FgG^8Ww}j`x@`f8sMPrb%>;Hh)-(Zli6q-ld1mH3o1)azN}s z+=30tbH@H4Dhk;0Mb!(abt?WWbmCzQ$|~NXP$K0nfQ4rJhwP49f(fCUvAEvPnZ7&% z6-xP;Hm+Q7vmpU~&)!8K1Czrc|bur9)Y7^(vZU5ZbGM)N5v0TFLt&3knl^-_T53{TP`whzVAv zOqsY^)HVXC0dnS3I1A1QJ>_A_r6n$kkX)jGvwmBR?F~#b zxcEHl;34A%UTzJ?PGv1)(hcGy3kbwm)K`=P@+G}dglgiX!CuI+=FH+CAQzi{37q_A zbb64`BOR5`d-1uU^B-@5_llJAmKak7u;|6IT<$+v!jM-snR6g7(FQev1*d#X7{N2_ z!DKTD!*d&>(<<<3!p;)OmZC#rFHvYUU>rW<${%x~K%2NwX$Nf4IVCGr+*Nxz?#Nj#GYC6-Af-~Ryr0Dmb^65C{#^xJKumPz+>`(Na; z+a&ufmifN3`s;0yrrSv-TWzP>ZNInO?)!edy!mv1W_>NPw$g1jxk;pgTfCARSQ6Xi zZ#`sF4*R5*rkhEmfB`02O(NOjHep}yx83rq>Cb<*Hj``=TO^Q}V2~(N{U5z;*V)}4 z)35icCfZ3P+i3tA00yXD<~IKT377Fj_Q6(`zO<8R6p~4_K?H-EPcv#U$FEx)&Ke%R z*(TCWG}~=9$^?_FvcH`NcoALl)5UqW>onOY0suiIfpA88zJS@HO44}t0v^}?-Xa4L z4oR?!)onl>Qlh#VX_$nl69sYVcf%GXj{sc5WRnFS<-()W2x(n8yc=iPWLlUT z5(1{!Xo}iO;V)vd0ky@;JxUy<1|c4^+A5~Y4Ihi-e3mNsEFg6W&e<=_H1J7($*^0W zwbJv9Wx2JwWhO?222^Tx)6mIAII}M%CFB85S1<*}A|y{0;V{r!8Yg!Ro;;|04fkx? zdi3N+&SY%_%k8#Q`@h(eCpO;dZR~=ucRpB8g#tEd2GG+f8Ud8_s+9DG$Sl`}V#|^=X$6O`uz1-jLmIPV?bpth!N!&H zi<~9oyS=aSr+<3FOp`i=K%XzGjZ;|~MOsu0FN+ywr7YH>uMGB4yfG^E7amw9T*dh4U zch=Lsgf}UR3?@;$V~aD$oV+Z4mG}e@Dp&4Nc(h7oe`~zD*j}%bdC$KVU>I7<~5dRl}fjqD|Id@hMxMnPA!W}O3N1GhHBK`-{(+!_A> zGBK{Tl5vx4xE`NO=xN6bUHX$m2u3yk07r5bt0Z2A6cE;neo8cxun1}Py6@XI(K9D| zJRX-8T*}DQu0J+)lya{D*{}P`*~C|V#uT@+r79DIa4<>)tpRccEj_8k20O>Ir+zFL z&e8_X3r?3%7IKW-2c`M(8Z2ky9A%A#wY?iHnZbht_v@4QZ^xhcUmpy^sUc~BWESCv zmZJXvNU8Ojwm0**+c3YbKCe2_qF9@W34^~&VWbutGom^Kms`(Y84$atj9w2H&iw%5 zjKofvwZK43WWlznfZmS7(i^&-jl$yB7HW}cU^Ks&(bctoRLF&b2oBC;#M-PhcQjQc zfl@VT;GsFgJ^hbU9~Jo_?4&RF$5|J{mHzTTw=IM@2Zpg$W*t)PkYIKm!S^VxMR|la^9zD zd_MTH_p9cFEu17CgMDmyXlQ}`&b}5;K^F+GO~)9--Q?b_@1D_3R@;8m>VN##`#Au_ zOZ5oVQJVRbtOj+PN1pAAzM#q=u*mO2o-9w1w}%|-nB}nbff=J!qUQ4d0Qmdw+w5P# zfCd`tHA=->0g3lpBoJ#&u(Q}a#qh-e-qGQ2b8elWw&XAW0Hl+jI|*4W#Zxiuys`Xz z=h@L+9d%#mfMLHJ-}vMYg4u^}Q^c%c%lU!5H*u{1f;Maa!~iJ~0RaI30{{X70R#g900RI3 z0RRyYAu&NwAYm{-P;r5gp|QbW(eVG;00;pC0RcY{&+fBqAum}wI0|+Cz zOSV{U_>?(jdt>08nVbwCHUks85Pt!OXtK*V2Um&V2Ox{)4gSH6maQWZ4Ly`P66x%R z#fTou^x1dA&KT{o_ma~s-^10|Ss$&BmPdoGSvWdQ@AcZC+_${RVug0ZPLVnx*(RLZ z0V8#^_dj*`db54ECIH4r?8vd_)QE@(go|s`7~8H+%z9qGk3XY1p5OU?(uY}KeShxN z`jFvuI}ix~_hGYYo=)Vj$1bzy$=A_#7G%u&Bu5)3SOySRgwJ7bwhTkn?(prGcfjxw zJ>>o@<3E!uL99XXlMLEPR<}Wia{9GvZL|0yRRkHQiwGcJx0U~j*v*1 zj-!I^9$@&EMpyKY=e%S!8v3xs+)k3$f0cvSk)DeqxxE&92uuDKj}gEaCB{s5bTh-j zv*AC1`DgSW_b$2XG4{2GhZ)28JRAkA;3(-B?}z~><^C*k@rQe2Wr%j&=W?y$-uGEa zc{#w3y}1td&*}4$VA4JxQuoiy>)$Pr1oimicQ!tw6Q?tW0r5BkxjFJ19uN?Ipv4aZ z@xU-Fz`*|i8_Pc&vd`h(Fd)qv-PVtGZIW5TCQCU_V%dv+^P*0VmR%r($Q}eaot7M# zWU$*-Pw)hBmRV$(!~9#d_>R8ViFUUen&M_zFb{s9!0X!>f&T#a-{J1B81)b?@iGbW z_rY}7Sq|5y=aFO(U89YxOE}Nq*+(vcb}dlEIAj@QPE?pc#)0kp6Ipoi8ELnNBL{Xq zTz*b9q>J#w_I-BJ88`I3u_Lt>5s)h-e5*{{RYJ?HNjK`~=J9EEdZqUSdgzLESyYyH~FD~myRu*~E zY<1n%`y4Vq1J#2os12T-%+Jma2u9H$;a#8C1wX_ulb+AWLUG7WolbsVH^!OkW962F z$8iqqITM-2p=L=g_Ankb}2e|{OZ16h0UDrQ;#}ptT$E-JAFSDDdc2EmUeAc*2$c{qUZr$*>pX5e+`&z<@PC@78@aUW^|5D1Jv*v3=^?_A%MlCz2PO=!54JA1ti;Mk~QsQ$e$wO z=)3+xR(coHvYCCQyXVPE__O$*VA6ewuWx&ZkoZd$w_0#;ZbxTm#gNBg86A3uZMN@? ztdrgJGOHc~tbqpKgL3@4B>YI=S4j?wwS|;Rxox)Id~i5y?(I$_SoF=3DcW^)t(+b< zU51mvq$Co=3kWQW+}(>LgzX1$F=1lOi4gur18iHC?&WOXJZBjmzY8sF7Ev{xL`8#; ze8YGPV;yZAoOo|7TTPrY3oMUTYq$;MmbbgLj22luInl=RvBPmP>#`6)I7)dq&RwnL zEZ#uthShvXg8M9!*CpAuTEIYl0P4(GUY*|Ft>Z?-kR~$i=M28gIX0o*NbB3F`{Nen zEwdACw%$0r5b7njkWY$z8D*AT;bDk6oy#E`EV9Tl__;=sV9YblzY%wq21LmSNb!xa z@%J}YI6Wpu;=m=Ha4g-YsP^gLM7Au0WXZ>p*on7$PlS~nUk)EKY&tKe1>q)QVEbDa zTA=xixP-H0;0rF=-gEG0N&IiUjw?xZEb?#lj6}$5bt7nj@@0gMr`$7iu-)8Y$e8%& z$Q9eSj6#`b?if6N{D&i!6Sg;s^6(ZK`dP9f_rDNN$_L002)I~)gXH$=>C0yfvDULE zxY-;g%ecNf6JgRF1bVQe4yJ8+JNq-j>O*)SagaR;{{Zm7^vkD^63~U4{(=$cH_z1L zJU;&Iy7oyPweY3Cq$9=cCY$K9{!?iB&3h1qf5s)B8eUAd?j7gYgEYH)kp4Ts6NIb4 zq^?hPeQ9cM#qvkt0N1nMO_jOr@}5nT$6+JVO&$iC9N2MWFU_-TEy3Ua04=XpeEeAd z00aXFyM7tB0N+3$zh;;0#ClI(^&;d8-gS~gk4@k`sms4d20MfI9GkH|La zUkBs7y4wa?6NgD$>cEAD?Gm3yDOgSeTFr+S_+nRhMOfo?M2!#HOi92*Z%;Tw3rMnP-h*%a6M+boU^K9*~+j{dXH z-ML}pBCpz7pDpfO?Xuf@AEkr4&Nb}zCicB~j~>303Nec|oeu7am;7FjKleUr`C4i9 zebvB=v2I(ibw2QLMUrr3%BI15NJFF#v#(?_AQ(v9N8zFNhzNG@z5f8?dM}7>KF0|R zXC7KSx9f*HhIJ0`lk_jKnQp9h!Zmod$l!hAJcio~^$cIA{+8Pd@yUM&@x`T#Pj)$= z86(hQ^O@D{tIPtpwT>GI8m*oX6U`wa1v zUhNw_77BVhx4xZ0Lm&qe5}J2)9v@Mqzc)|A@c#hvdmn?S$IzG8BaYY-t^<5K@QOrA*yqpGC?i(XLhEC?) zwlHii&LBtKeBi->lfFRdffrY-$fu9}$(L4eM`uL3J&`uk3@%8egkcalW$Q1VOtw|A zY!_J$;mO^B>Ptvj=8H_S=n=IryL{gWr|^oVVc`^A|jWJ-OyaA`X1W7s_)*`XNa z>BRb_yJ24BcL;li67S*bfj;7QvKf3s)ctTrYuY_OyQy0Ue5ITmCC_hCoOcYnrHOu| zv+gq>Y{5K3hcVRJC+A6fkWS@(#sKO}I}WA0cAry3vI#MUT|oC35^dt`8|5u~3VO^m zQ!(2i;kMg!B;j50hI?SPJBf9Yp0m02l0VbjW^kK5vMlwJpB8VHo3WF7I83{+#YRc( z{{WGa>1l>-@(|oVH%)H|yE5SMdy;hZ zlj}R$caAH;U{B0+%PjMy`?lFK${e2TEc^}xbs{iwHp?oPW^Y+#eJAk&z0O8Uwonf9 zsP-X`SpNXK+ORU;h%TgSvJUcoS7|hta(6et^`3Vupn*rt<>6yk-lf_|>U@~;)PAB| zY}*1j!Cmgrm=@c2l3h=~#PT+NVg(0KvzM2S$uZwjV-8<}*~PfV)IMVPoVRUAhnL## z#9_x*We;IEc4g?w4>2t7-ot0!r?rN=1e?ew)=!s246Va}W!fS^HV*dke9oI&6FFT& z@fk7sys`s9lY5DU-NHM+ZWU8{KSIB-CiO&F|$x?83#f|ME?NnIw!Ym z_xPLlX5SWB_bg!>Du)uAL(BN4>#q;2%23q4STK_;!AvI56RM4V&X-_~X`pjyrGUHrq}#w$Q5& zZ5yT}0E;VayuPv29)$i3EuXSI1Y42hKv{Rj&VYUH95Y_x*53W?jCI539aq0djdjD~ zA9y`8(X!t8J9zlJPpRX724BOwySp1d0DO1>2+MUW%-M3>ywu6vmYVvP;cT0uVI48L z1kV}9gYB?iWvl+A1NA3uGjDAR;@G59f1SU_Za4X#tITyS*<$Kn6CGRg7w?ixakkre zdCNa7w{6QPV=PhZd$k|*ms#>WCE53b+9gjL7X<$Rx-q98tELi*zagHbH*(Ph^L3AR zT=fIQ9Lsd-S4a$+G~LE|Ibd%!x6HO#bir@OIq&1!cx!F8+jXb-hj+(#ab|w``JS1Z z)UZ426``c#klbQH>`$1z7yVu3yJ8j5)FY`jBMUEYP+JNXlm7su{L6d)022XV#(dAT zdfDm(ilw_t1obD(6SSfkWPbku%p1>~Vw=5~5QAt-ELz27qRc)OG3kniF^zGi2y zUghX}V3$xSj-=Yc-NB|dJJf+6ay4B)_HsSOQw!iP65Uw5BEqCNGWWX~eVz@O^!zf< z&v+g(_`iHZ0FQRevxhux-d@LT;?o~oA|`y^x9!#jZ;9usJ9Ln`kvtogoy*EZ#enX+ zzG!{J;WeK+mh^CdeHX&Jl=+X;&z(g)yXVaQ8#DPohTYfHA2-@We(vp-rSTcF?^liK znF_xxfIbPqv44XT<&1sG@ZloJF0QVvAhK-@Ed&}}9Be(t8@G4MZPCZ@pl{TlcD!tm z=$H8S`EuTRmdkbeTA=R9e&>EHQWAYx12=B?hNxx5$xrGb}n`-}xK>BknF7wAHn_w%WjJ{ zG67+b+Z#{G{{S~8-Aek{iWgyJf&dp`GdzZVh|{lZ{67mv6F&+NoJz8?TV}LQULl3^ z{(z|dUQ22RNZv0+(S-Kx;cx2%cX&pA1ngZ)86m&Vz}}L(EMs|WURxlyl3ynG{(i`{ zI>QP@$H=c?wvc_aAP6Npp zSGRD=BOl4@^4ex({GG=!j#-qRpl@*RJ}&bt9dHh7A&*pax=$bToqmf~ZidOL@BaX) z*RCuApJDML06rI6SES+r*Ft>^hRi#@K5Bf6MV8fzn5Ok01sgJEoG5qJ9sNrR-Mi%UE<8TB)~j~l4QC9-ejwq=&t$LGjAY)9$rjCO0>ySf}B7ZaZ& za{O#G$@h=)^nMPU;#n5hsni=fgNIbcY@TBE{sU!~fucz-_Cx)LgkmlI;FoO@=TPk0 zJxKd(5X1Of<)w0ViRaLgDM4Az7AA#v|Y6d0duWVC6d6_J8|d{{Ut_ zXa4}X2ZQ}txDUbk*d%~kx}PVP`$}AMfy-}r(#-s3<*X&Lke{r7HkNoZVnwfMVbm+g z0}f;d^2;-`yKskh)=l5%qb#dS(iAHCNnirrC0P7C7nmP)U{~8~XbU8VT!csGWHJ7s(;R#}-Znq8*v82w+=qDEc+NJ-JiPA} zhBz?GW6lG6h&S-e@K$8!z8%^#`8{pe9+3+!1Vnzi#(bX3bdxgcc(p7n!(QF3;dL(^ zG0F~^@2NOI*aj?!k%XBJpf)VMUO0GJna=HmU;bOG2C^xCM&SA2L`UflVCi%)GC+43 zC@_(AcMRvwLz3=$)OFra?Z}qXoIM0P0^SYg1q1NNnnG5^w4VY$Z2c^`gp+CQ7MDn#xh%VHv%(Kj0<)G=I~xMQBbA=v zZgv(zg*9W&8RfvXAInuf?Uz(`ePjOs#l49>!*hTkhB!YAzU-SYKf6ui@so#!6F(lK z4J=5p91@g1**p&fbGQ$dA&ieVmU$OhYrkzI__jit0>57^ZnI&NY-S^iQA+5y!#-O1 z=`8B`FLE{K2aK7${xWPcxjxq0bw(K5yW9*?l15(fj-oGDj#-2!M=j-N>tpuSmheWV zK=EQ;AqNK!;POyA_VmBi+#WYnnT(c`%9ZLkTe6?C`yTv&*)kE2P#fhPqW~`craed< z%_n8l{5%bsBOYJTPd9s>0g-ioQD18gV#we*Bg-#;{{VX)Pq6H)UQc(+~0V`^`Ch27Y^;LgE{O>UdaN?x4a31vPK;t?%TNG zz;J@=fY>2;$tHNNqlfil5~$ksYz_h37JglM$d`uC1el(-F5vt_{-uG0PYdT67jNcl zU7Tb`fdF-9d=|vp4Hcwm(+pvV`B^b|Qyj9F!?`wLzem6OVqeNJ9>uV4FT1}bmd|ic zIR5}<^E@Nfm*V?mUD)0xgv^I<9Y;Ht#>c;`I5BTx4qXJnvf6J~FB9#DFW8m(`7+nG z1Z2ityDts2$KZ7t>et>UXvC=J99`M7_5{kk%le1NL!1K=O9iradDDwd4_mD4$^1#T zRm1upP@Zy`;(Qnf*!l|+KnLDC5*S&6`2cVe=vcBnr=gb2vtiUKbrHU{enhOb+mQMT zyIBNh6TQK8$UHu>4b~(+GAw2;M$-yn+Z`R-zp;k&MVXL=$BdEO;$|MD6JsQ0q1*>@ z@A5J$P65DJAUm;qf}3}oJ77A!s>Z#ATqHz0i@!UA+Vw@N2S^U|U+kSn#I}fCkVgx* zM#W)}Jdo*~#Orypt~XCmPr=JPAcqOIIb*KY_|xN=pJlHfB1mw%BjC{d3>>;V;kPbL z2DU+cx`VHB9Yqhk_QXUnbmQ4<_%P6pWNe;FYLIGeY5xGrT)TA5zf1oB^>6RzZLpzhb+rEgs5|$tcX}%6Be?q2r*hbX zg2*6%89J@-#m-8tX1~h;lGlN|-?5m!3;SDf>x`Rn?ZoTyavCsfG?m{-UcSS7AlU@5 zc6X1b8?)rrrL>}*dgoN{TRD&`pdx)3nIZOlPrg< z;CHWf#5=y^82O%X~fIA27*kw6V`)N*3xs>`Mi!<-(`qNX}tdc4U%4kmQPmshi?O@jdXM~s57~b zTF&-|5^k4!EWe~(ksVugGmKp`1bc4w@I@27V|2k_Z?Cc8ceXD)jU#=*foU%fLu6nh z;n}v`N&4D4Wp{%BO(VL4?ThOj8O!~S3opEG0VsCCw^9JFmQ8(^^7UhE*)>LXmD2em zqEWdRk9(5KBex(8Zh-Pz9zs}fN4hcW>qvf`$Q78&9TG zV~3ZA1e3=v81-X&vn2NRZn5#c8OHlO5^>O&}3cJL(UmBM&FHckpmSj>)8TCfzMCYj_A{^m?#ZCzJMFn_m#d$S?q_fhZ>XD-e1YdcNTsIS!ehMZHC)zglxL2#qh+p zgTd{w{pKg$RB}*q+13zve+4vt5Ssfgy8eUm&#e6KAqAXemRV(%F}5~ca4<)BD!+nd zrbLEV$C)P|VO`n3vfVdwmRJ5Ivp)0P{F@)n3nz@$cyAuTEd7EH$5&RDR@-g2Pi;oc zVGhaQ@tbdP&sl+1F}ztOU&#wY+!+XaWS@f0J|mxm@cs5Vdu)!gdpw_RuE%y+WtKt4 z+i&f%akqXCH%B9eB4gWlA0;~vaj+k3T1IBJFUxOOj{|o}EQq;wJjIS<#%%I1x_$|c z<)i$0XCB#P@ZSq3k@37we^-vN{IVA0h28EgblWk}F8W9R0Jz^4`ha?sz22|(hk_An zk5j;Hokn})vyTO~+ikX%+s4NO-vHSS?SX9=Yd%UXck$$L?bF^!XAY)%dXBK9P_bgd z=@DV$4&(?zC6N2ZN9~~@Wap@oSf#x0@5n8?UKfk9cx}DQc{6PDlV>AA5IwE(aM<<_ zQW6s1AYsoEcLd>)-k3ohy0R||I8)JTW^tUCO@7bXPx92W>2z5rU~s;EGk*uxcrorv ztRg0?&f_-hZQb3E*_m&7+_z2R#iG=^&;D{_f8~?(em8~4WSG5Y8LV%U-WkChjwn4| zcZaA%YH#kJVp8t$jkffX%jq0yOg}CB?#JNZ^}nO>|HJ?&5CH%J0s;X90s;d80RR91 z0096IAu&NwVGwbFk)g4{(IDaQ@i70|00;pA00BP`mHripRKjyB5~5-SO7y8-m7Mwn z49b-%RQ<}8UX?0WrAmoMrxK?=l{txWvFaVhYF9G75+09mGZIt^^mG1Z=Q6*`na}w1 z{tW#_Rwuvsv7Zv9W;2OWxr}EXx@M;130Rde0zQOKQ*klp*1c+1r#_6|p%`z`kFP$J z6BwLIm5)Pynw9BLJze_KJW7=qdK!daT2ymMt;(8&XEBK@(?}PYuTFh5O?n+l?p9(~ z{{RY=Ih@Lu=tPMRQW4bS(8TisGV>qsHRxhjq6I|k-PEuNUYm>}e}kEXC4Y@heRuv9 z==$yiOwJ`oP>z4W{{S8#nO>Yq^{HILew*CUE2#efDMZ7la_aq0@UK*crB5@TQfhPQ zQU3rMiRJ{UnZ!LSsKNxPUX^mCO7vkko0S<}oX>AV({iCnTrj~aQHZAf6Va9G?h?6y z5)z<8ewECq9*%u0FsWII=x6+l%7i^V;+&|kD64Yx`$Ba}Dpynhzf4CQ*Oq>2R-ExT z4U(JXmV)TDZa@qkY&A@%8w#5&YjVAH{vOfwJq$1vq9II5F*%B?3a8Sc>t3#*=hCKq zDlKKAtK{Cux%G()AgKR*gXSC)p*QY*@ryhpAHR#HfalA_PeNRW$uQH-d60w*Xcra^< zimwN}H$~>N1&T#XP}2z;vYMP>Z3hMFRUpk8v^9q z9Hawee^(xdqY1>XK=r7=uSQf!x7Feju2ih%K0Q7CDIIb3Z{Q&kryzsc&8{2x;s!Fo zbV0YV56(cmxp|2}S}HmtSm5W2i*r~5#*Ddf(yys>Jrt3pHU&7x*DJeETAbSruyo_4 z`8O}eWKeVgTU2-C!wIjUX518hAcD;?B9v7CTCWo3Z$ot6qUdux3Uv1z#E#;+hdCp~ z!H6IfRNhFl2BXj>jm)@aE5h8?5xhMr6PS?nuHZ_Z@Z925=2S_~p%PT6lDU_dlBG}F zNO&^mv4c7GI`bAHEn8OKm>{gsGP1CH)e}fzu%!P0FpCf;7Vo63I7xD^2G-M{+U6#w zD;ZFn3NN%`DHlp8A&(4kV$r@upJn)mVVgnqLHU6u?-NShv0i}Faho+dk1@$PD#hzm zS=`JjeP~-a+EI9UBbt%|(upX=mX3LXVo##2R(Ut=->pVLSUn>;pdb`WRczV>Bv9Ea zTqUZq;0;H?n0jf<<~oF^N`!YG5Y*f~JkK+Ji2_!AAMo~-Q!us}OFy_qg>w_!E@KX# z48XiEn8~Xg``N@~_~bTr^t6G2X{8d4HRIkTpsEF6Hd}9j(V1xL&566;fUJBw88utnLz%9(G_pO0JXkr*cTTshTq)J}_0>C}phIAx$oLS7h?*6Z z&8sh%nR{wqpIT-VMuCWzz1>V;6U5S3E-w5n5&^h%n|t_>|)xCO5EG;>CEO-bqQAjaX6I%R0&WeW>l~6tp5O! ziCu~TOGm`rVX0rb6`<{j5cen*Cc-uN!IB6A&@%<+>-&xv!AJ;Nej5g$^pBj zOqby=J=sb(`GDmD(FY+%ZL}U(%_=ur~&{$GK$)Lsh0(8^9A%G-t?(aEP?4#y+Q=3S-Du1 zk4lLVxmD>*B1(b4wczep#>0wU*sT+4ytK4M&!jA-;ig@ns<2`vBBHPnKrqY-P8K47 z$aOOw1?Fl|{UEq)UNjQRQCtF6W4 z#eKt%xqB;LCzw7kx_PmbwubfC8XyZCMHo2zVv74b9mEWW(85Yq%mI-XW_t3q<#XgiAH) zUaxOMGN8<;c7_uT!<2eV2;mY`5~WIvJvo6+0+7>GTxBki-W2l%W0_s1*(sN_{3V#U zTJak3t8e2{h-(ymRK(BlLf%X8+r$(6GX?}l1b0Sd;_VV5EAV5+--zX@@hL2_Ma(xJO?m_f5Ish4n?=M_ zeFGI8&L-tot?cqF0g_v*i{nW$p>}-{w-MMGRv8^{%wnbW2GLgm!LA|f9-wPA=6^Iw zjAfL>+$DI35GPj}1Tp^rHxk^A>Jp7fE`#Bj!IAm**nqD5aUL-MEHVlF-Rfkh-p4y!nscnqM=-4 zcp+`n)^Oy5MUOMfjGWX&J!>!^Vgv|(fJ4?fPV?0ms3Jg!`g56C;rEX=9wAn$&8owq z?p{Ixk_80^Lb3NRZLv8e065-YFcy_$yay~mbp4AUOWJRlP=GMg&zMfjc+YXE#-l`E zv|BIpEbMGScqMYgBH2pdX=}tvm4Rv&)&Bqx3Ow-t05Xd#IhDT=l~tE;Z}>hUrZ+No zs1RZlLOUTK=!jtEWo{>Q5xAo4nBGG~aKhmR8of7goXUX$4^i%xG1{UhP<#+vrvV)I znLNX|l`14f%HuB4v0G`)AuSGoi{L`)}d(7 z_<%O@nllz&It@LgkWr(9=@B9s8FTQqMuRHL>@TW1hUO3~WFqXdUAxSrekvvz#&M_2 zb+2{qR2a&`Fxc#9JObHw#-hn8mNLRU2oYn|!kS(Ri$acNSJ6#b{K5zcTA6WhjI)@9 zrMrHSn)D@e1DGX&=vf&UkG|GJ<`gae0KaGt`TnDcQSSbs_$Jy9W;v3p#I1&|3`CCo zE3Ztap-2*NG^_fT=anq0?;m@}AMz|{f&)T0>RYoB3#hCZ>SMraj7o|500;L43phM` z#Ih9Y5d&3cQ6oijlHvV+`;F4J+N{R`e$fTD?m7azqQ{0QX3RY0baakOi9>=w)z=VM zL9$#oB3Kje9<;o!9OPRoF=beTEJe(jd}ClxW`Rk13Zj^w674Uj9f(9~4MGcs9Qt>N z+lB*`h44zp$i%sxXeTiu%XiR9iVLW5Yztt_7>rEDGv0IQafoMoCyzd7LXP7S4PTaE zZ9oE6;tU|vuLQ0011(1g(*tpHsa7GIZ}M6Gq1msb|bV7LXPUN|+>RloecJfg8X>mlD{~)J)-MR~I=ry^@Z!$_xAiP&l@4^#TY#^_hBtayM|$=wYbT z$p#{IpAwo(^L#~xH`@)n^boB^_y{ELQtR1oU-LpUkv)r14c;ZGaHCP^is^{pq=2EQ zLLeVRa6syd)V^3HICB`y!obAI#Amb(K!ONvYL|(#3UAAU`HwFVbLgw8198d1{7rvy z^%iGnAc+$ZJvn_7#(E79C{q06sY(I{s$E1r*dNU2M3ql?7|X~Q7s>&s@?=jv%Z^Qe zG*ORYFRZM%_LRZ$iXVwlvq~?2?jOA3WQ_JI0%K%y3ORX}H)B}DLbi)NeDw%WP(DZT zEsW*dZ~zVv+tgYSCf6x~fajw7i;bYe_<}A|W^&jvmZR`CZ;) zA#hgYI*5+H?Z#b;Um2btN9C05mQ?$~$RA{OMcyG87T8ls3Bi?CVURRzIhh-&skA)A z>5f*#n=U$r24>L9s#=i-7Og`Zq`p<3&!lE#zN6TIUw&WvsbyGgW@skU1~LBt0vdbE zHDrX75I3#r5fbO(F;kfs3!A|WjwsnzpXMdI;1d?>H&0OW0U-+f2U5X^Vg{juwgTUs z#%=C@+`$tP0q#nPv+OqVK4scTs?km#B(^iyM?X7=q0-}WmJ-0)Z*LqP92cvP2XL&* zL)35MBjsVSAT3C(tf;h|sdg?*3PIkg!!Lzs65p^jrXl}t!s7zqPeR0eIlR!N=^ zw9)S<01=Obeu#mB=V=A(h~j=say$S z{i5xsv|~&5i6O=pDz2fu!W_;JYF`V`V14KR040kUG{lq%=6*|z!?vpk{gI=v4~bJS ziYT`j?p|Xrxzz4F+^V|dYgBy8wzn%Uyc|(O!Tpci=1j<&h88nct_fNjAtbWA$C-P< zO&q+?E4{zOOA^{+yTsQVR3&a)0K$c6K(&J$NFfz%a<~*rnTT)~1hCg~^CTDnT}uY$ zC?=Rsv>{M|G|!mSSYsJO3mTi3a~H2cF`JWf(^nZ+FXQnti4t5F7YSmH)OM^YysQOf zSXDfc2~wHfE6~CgkPhGkkP%X?SAmoL%gSongH}HnI({02lc{Ue#HAa|S#q)h!f~bB zqM=Mp8H;dSo>WOUh1b-^s)&2Ve#m`HK4TKQ0J@7~RXI>Ge)+GNs|uB}FjW&MrDxE$6%b<~wdV1#!CN8oluvS$AwSy+g4K z70CWT`z6MiYuZI^Tv%_!38Z-v-#|^Lls!bo-S}9-Ex@tHPj_whm23`qVYMQ{4j8L* z2?SDr-4FyIkj$%Us;+aNN{GOWT5fJC6tsfOqZN}RJWOO47P}?It>u--yWuTcjofUA zmU;9w>ZtR$ftV!YVQ@=Dhm-)J$ea=AhS)Xez2VCq^DMl;xWB^I2;@Ib$DQ^^h0bBnxw-av`;Kx3#OKKp^vo_- zgy0}24hR+06<1Qu!9URqV+3Oe$>uV+TM*5`7?FUA$h`Lv> zhLMLPJIu`bI)jkrBEyL45N8T!#1O$6V28LqlC^>+adM@4FsX|kW~qe`8!P8dV739* zJFgu+Wg_D#xcQ4FK7`C*USfKgg*@olR&@a|F(C3Q8^h``R<>z(Q(R=Frj;$tN zANhzi0>o~}hJrNJN6QJ21@iv@6D|%{m|P&2SZrAJ6>WQQ>64jABr8i27-9w731!P& zL=vL?;)dv9ac(^cp(QY7>vD!|vyAaC2|0xlvNBA-yvv6%2)C#gs5pJ)0cH~Bh(M75 zU8WL2(X#(Yomh?^t+No=d1Qh0_ zzt{V8>qJx z#J*=bm_7aHF`=sEqPI*|t(GGY2xRjpStZ4#)yxrsiDsqC+Em$PBdpY+jv|_jS#fgI zE<1F!XakRSSFR7c{;qD$h;4J)^6*O>qoqXii0p;jZJU@&?rvDc*BgE#e%5MbG6O`) zvwDRi4N5%L<(Cx~7E!bZ!W}O@@sLm+HRIr-T41{)DjLV6TGhFD^Dwjb=MgwB0<(Qg z<^qn&KuP)VwhWA(qgw z?U$R(w_AfsQWtDzby~W>)VhWtRYU-{{?xH3gOzYRj%7?8)xHg!vu=I?{R#ecyWT~W&Mi-(eECGQ^DMJ#L$BM5j)OM9_Z~dqY1EJzLuYO|z zu7X?1WgaI{ZPHD=1+;zc6o^vF`k7Y%Z+ls97du z!wFDF@`pXjo}w#iFb5;UuMzV8mBln1RIc!`pkk&!k~mYqDLu)e*h=Dp>VNJ z%CANUgCyce(N5d{0LhS+w<=wE{$=Lj(14Aghs8}XPi6lA46$1|9Ks}aKkqbw%8&M$ zA<;iw!An=#A9bx)L^)H}uju`zoPi&2?lqAT6ul?+F028KZDqm9%rYdpcR0apf)%^K z7QNvCQ%KA@xThbva(nX)p>J~M8l~_+QOg!_6}1&h3Yj^Y`pAaCP0D%2=4%>^l5*vTvvI9qjIJjCW(6%%M=TO{!@q)guaqVlsBsdsViwN0=Ezo*mF zxY^js#$|!gzaW$Z`~0Ke>Mswobv_QL@!s=&YRpJE{dSU4hOjM*(nQJ1_qMSzo#ln`5>gtQ1UVTnU zQjX*vaqWwPOGV!3%wfx92W1sw36oA9qmq)a$B!g0^v*T-D+hv9!~&{;Vsy)_MV?pL z{{Sj4q~D+`Fx9c zKJd3eAHYw763p}2h6G-wp5fYLedC2jjwVkq!yHkjnMK6XrF@?F#Yc!}i%J&dm}107t=}-+@Do3pY z(B%RlFTx_F%n6dR797kOP2u+tW`zX>dhxiU?M2H~7{R7R7-8CEOz8nCe%Pnl}ie^TEj6k1y| zItl{Vy6U)VcTNUlIRfxUEa%Z;z_oD!anx+MjS(q^9ahKlkpkbUBgPnfY6+&(lRpZqiN6VnLGBaT1sh!7_tGpDiYwTHQX z1Yo#OeXdoS*Ix0k!EL%K)Z=#qSP0hWC6A*qr(=MXQDQ1x*Kt$N5TGUlnuU(S+mhKB zjM$5!<0}Vl<%Y7JxYH!sEeJ9ct05rh|de0CqUUuOE-yf}Al7 zH7SGQvotYks$UyFH3D%f^9D+CJo$#2eafL}e=yQf2YjV_L8(p|+?8C*ER7VvXSl7@ zxVw)+0>yznPHw_oW%(rxFSsJK zBLQHn2XgXiZ!XucaQc|b@JH$~ZJRRdGh7ou@hL`#9_V#XWzx^1k4ji^1YCNq9~hxFTB!M)F}F#H=Gy7M`rcOtTz%$NfWn zDZW*5;#*x9oDl;y4gkYVpGtkG~F>{hgUm?+omx%0(cCqP9-HUkI()~izyDv zd}e%u40}WPfN*HLg6z$Z`Xy>BHp%!E9^s^Eq4P`g5UnWRf_Miu!~zw51$@Q6B?YZh zAYR{$-mll(+#-g!@8h;$hAZvBy z**J?kO^s#7}wp^I{=9^U4R?Kom1B0wI`CN&cq438a=U=V?r)NTTAb*h*`q1Z%GNXw=! zClG63jvG4UIYLYzb0m}55O2=G_bZKm;7drR@QX8u+ViUL~U$XA>0_#nmCW0b=cj z#jTW`VvI>zb zYrmjVwv4TT?H)UUQo{&Vx|g6hm2fr&C9pFK#uf{L)q8+vFpWzP0Z`Uu*vP?og^!jI zgSbhsypp{25h6MV&2BRdQh-k~$}4ib$`?~61-^nj;1lrw021LYP*KgN+}u$~<_${t z9ZbP_#P;cy4%_LMDWPx>fi#z(<$M(dbX5Q?xj5%u(2y`Eu`KYS8a$F|Xo-g$J})?k zv1(Penx&oQD~Yi4sYpsJXaEQ?Bp0Gauhm8Q|H%gI_fm5;C_MsB9)ob>k$ zLh>0*DlH6s#4jHaL@P_ngZD0!4Q;Bi#_+~oE)a`Zby?3OR$}WGS-i!PF?yX6@I1Jj z8V=19IGE%-Myzf8%R=icN`h_Wi9A}ycH^{xYt+aZiZzG?35aSX^XQE z4a!RxBCWu}mLm;*P|TA9jf+Rb904|4X_rQw+icBcD`WBz2ebu1dV;z=g1ArXLa%_=%{t8Bvh}(W~AfNT8H6RBWvMz`n5u z+^L8mt6GHcHjUI3CDiVJa4?ZhN7@*NCeR1m6}CBHx;d_5b@F3yRl;Xbxgk>Maqk2;`_wZ`Q0OL4hRZQu>%2LqjV7=I{o+dggu z9xB5Fn%VHqWXmv$yz?yVmdk3dF%hs#z1EqO@2*qjXsodizE5#7*k$`}L=k?6|W~fjDX@3=0aX0>-8UArZnKEF5ZaD-L5&P!*YTsh}y9 zM7c8FKW0CfbPs}BT-GIDmE-pW$|!kWVFfK4fDy==oJ1M>IDj{TVHP88x=-o^1+_`; z6 zztj>%8*JJ-Z+ zOjXpPMGA=ssYqCsvf%*OTwF?~DwZXMDf$2wtos%|%X|i?fB)&T=1;QQJy>qA$Xr(<&|&t9{(`w(u8%hTMvV*<|n%98aedDIVjr}sF;ntQFw@xa)37Ryc-dWzaSxljAKkV$gC z^)LG&M9A4K7I83hd`hEEJNuRN;K3HrkWC7Jzd4wmGq!REE(hi@!;rBC3!$p}sCx?$ zrEb11qqZu6Uvbk;l2F^Md%&z8}(hq-R`BW#*OMG(7qA7oiipM7xq4) zSaK>{LN?C5wh|w{6Z>l6KDr7)S%Xic#fxs<`@7_TUs6~DB)e<{lLI$e)B3# z66W8>h<7FFuHZ0fk#i6t>hqh28V7^^>JYdJ4>tt`FE<$WgA2v+?FPcg@LbPaAKMUX zwU38i%okim8y^z9#cn1xqkyUe_{6P6rbswzlFecrC*EM=hgYsK3MIA{y~`7u55&kh z5&X-JnLaBKT-B27RYZ4mZ{9eFE*-uIEuKRtGQ_P#OO;pS{aj=U(-RrZ$EN1NndCTU zEF#rtAvzrvHl>Bjsuk*1_j^c~T}`o5>9*!8%(xR2f;k;Zlx-<{hJPqP8mZOqF`0R( ze1{U0<$#pX{XkCOOx@xUpcv-@P)FLYh(VblvZi{>T8p6O96*@3@GI6}q~@mH8=9zv z+4z{VdrE!9i&)0B=2q0TF@S35988!y8i&ke_V5M(;EK!0#R)RJd%&iJti(cppKjx# zJ5>HmLefLqZYsI z)vXxn@$UdnP0I%!p&hTN+}oYL7}{F(Ef$#zL`zjLiiLHQx|Dv6r9%~Echq4O*__nM z&saaNhHfruE+xx~Rh}b^F`;l+Z__EyZPzdr5i9l&^BVVy@_(s#PdqC>2kn_2YbRtN zZ1X6M!ehomaj(_GvIPpvS4}`A5CAxY3&!8o?1N648k4EZ0qeF84nV|-DB%!Iuh`aT&&B)&rA-IrlUE+tVY@vaRa)Pj)hkSDlAJ^ z26yB5fGYhi;S5F0kE4{RmHR4`jg9bp4dqTPXnKisiUD%!lPHk+d!Bf*QO z>IQ1%!3OD~P(xH(o+Siez;r@}u;LrqRivq3w2q6k+u{gtZF+%GNQgRzRJ(~-9;FVV zD^cS~(SAJ#nz`bF+CvMdcc>Ro=3pl*Qx1YTgIQycIT?w0O|Ow>HLdY+{li6zpNPsW zE$FI3OuyL@DrV#ZYt9M0JujkfccGC0;z=~iY?r;Z94gd z%j8^S&zJ>#_bICiDTzzHRx^@QK4DA=1LG_4D1phsekHo2g(?paa<9~=C3$Kk{TFMS znw=PcJec{8KG;aq8nuhANAOEpK`={U!+H6ghygSS0WJs8_@S4s>hX=URT=q|WXhsm z*@1u3d!A3sp+}sPRyYHxmDtV9$730t3UvhuLr;g%Y7>~zmkk@#bl92Qfk7afcj+d1 zqTI1=QBG0pM@^uv6mqum@#Zl2MmvTkihEN9nm)!QrBILDcj2g8X95C-)VTLIMk)mZ z%W~n`iA@^FZ}<3@g~(Nbd!;ADJ=0&8D!yTAklXw<4yv6)_>LC0Yx-sIb7lCA#;Yn6 zkGYwo8bvo-dl37Ql#P`d<)r2iidZtJkT(dWm|8y> zhQM^rhTd$S5`+R5o;=DWYMsMvy^J>ldW}NYFELVbgK#`3dngqxO-DoGTFi}NU@qvE zn7hJKxDI$_M>3tj&oq0dk{Fg_b#0f5mp4$lV(||#&Lv7A7U2XghS;w|SUQfGbR*fn z;t8zS{7--%s4B65b7%K*hFty5jA}J4t0D zAP*%u^JK7Ss0T64XjqLE4sL*Js`u_mfz;A%ejc{`ijGjvE|1AJoc8 z;-Ed?3Lb?neAh5S{uIO9d6)QNAUY`@ajGw=L!%wPxKk7@W#=)d{ssf?Dusw3plMfx zU7Y+w^O#Bc(_sGqQ4$A55yprX*m7RwQs)Xp-z{Hq-(7IfH{U)XDxjN{UVE#%x8hq3 zF3Njfa`G;#*@>_?K3G8+7(Y`GU_R2#YJ%yE|mI0vv8+%2MEEr@hQ|9BJQF3x+XU;w$HA>N|B~aO`FP+fp1OXAQ z)iz&wsAMQO)Jos7cMq5%;5x*5uM?hAMqDuy-Ya2Zptb|zUv$&D%|*#>KIVEQ-541l z0nLAK0~7}e0K@{O4>9O>YB~v8-P6GU0`ng`6MMahLG_T4Fn37h!M4T9tlYlmEVpCz z#4#k|e{zDae)* z3XY-AXv%mG<_7Elcql&--?ioK!}(>+7sGHcqqWKu4|I-^cGs2M4Xd@nt!L^2%M~kK z(Zr*7LGJb{->I^%rk~s`#4I&8FnhVE)81h$*KRyZnJK3@#$i*H&%8FS*6P2mF*En% zAYW*`0Jh>ic}&~HYKH8i?&tV`E+VDfEa)XR7yb!?FZ-BIE9;3_M~RpWQs?Sgk#_7c z02l^J=3T}DdRG4cn1&!B_?Vw--l91L<2=FFP7>k>kBO#DcC%S5wj6<)vc zWH%@3I%}8n8pU;*j1J{3>KyWI{U6M<5`u}$dmt`B9EiiGSd`N5S`mMP^BU;F{Ll~i z!zwQ+`%Mb9dBOQ+Bh8MV^a!lFSMf4KSo@dyitLADOcJlq(1?BcmEaVkF3~`M@J%T8 zgnDn7Et2WHMIfPyK)U8+sI9I9hYp{`eL^$@*$Jzwgmi$*M<+81!yG~6G7k{S`FfthR(aa=jR?<-WF&7Yq4D6brm^?vu GKmXawT*O!a literal 0 HcmV?d00001 diff --git a/modules/modeldata.py b/modules/modeldata.py index a7c14c02c..466d7f53b 100644 --- a/modules/modeldata.py +++ b/modules/modeldata.py @@ -36,6 +36,8 @@ def get_model_type(pipe): model_type = 'f2' elif "Flux" in name or "Flex1" in name or "Flex2" in name: model_type = 'f1' + elif "ZImage" in name or "Z-Image" in name: + model_type = 'z_image' elif "Lumina2" in name: model_type = 'lumina2' elif "Lumina" in name: diff --git a/modules/sd_samplers_common.py b/modules/sd_samplers_common.py index 0cea700a6..dfebbedc9 100644 --- a/modules/sd_samplers_common.py +++ b/modules/sd_samplers_common.py @@ -9,7 +9,7 @@ from modules import shared, devices, processing, images, sd_vae_approx, sd_vae_t SamplerData = namedtuple('SamplerData', ['name', 'constructor', 'aliases', 'options']) approximation_indexes = { "Simple": 0, "Approximate": 1, "TAESD": 2, "Full VAE": 3 } -flow_models = ['f1', 'f2', 'sd3', 'lumina', 'auraflow', 'sana', 'lumina2', 'cogview4', 'h1', 'cosmos', 'chroma', 'omnigen', 'omnigen2'] +flow_models = ['f1', 'f2', 'sd3', 'lumina', 'auraflow', 'sana', 'z_image', 'lumina2', 'cogview4', 'h1', 'cosmos', 'chroma', 'omnigen', 'omnigen2'] warned = False queue_lock = threading.Lock() diff --git a/modules/sd_vae_remote.py b/modules/sd_vae_remote.py index bb645e528..e7a179ec4 100644 --- a/modules/sd_vae_remote.py +++ b/modules/sd_vae_remote.py @@ -21,6 +21,7 @@ hf_decode_endpoints['auraflow'] = hf_decode_endpoints['sdxl'] hf_decode_endpoints['omnigen'] = hf_decode_endpoints['sdxl'] hf_decode_endpoints['h1'] = hf_decode_endpoints['f1'] hf_decode_endpoints['chroma'] = hf_decode_endpoints['f1'] +hf_decode_endpoints['z_image'] = hf_decode_endpoints['f1'] hf_decode_endpoints['lumina2'] = hf_decode_endpoints['f1'] hf_encode_endpoints = { @@ -35,6 +36,7 @@ hf_encode_endpoints['hunyuandit'] = hf_encode_endpoints['sdxl'] hf_encode_endpoints['auraflow'] = hf_encode_endpoints['sdxl'] hf_encode_endpoints['omnigen'] = hf_encode_endpoints['sdxl'] hf_encode_endpoints['h1'] = hf_encode_endpoints['f1'] +hf_encode_endpoints['z_image'] = hf_encode_endpoints['f1'] hf_encode_endpoints['lumina2'] = hf_encode_endpoints['f1'] dtypes = { @@ -91,7 +93,7 @@ def remote_decode(latents: torch.Tensor, width: int = 0, height: int = 0, model_ params["output_type"] = "pt" params["output_tensor_type"] = "binary" headers["Accept"] = "tensor/binary" - if model_type in {'f1', 'h1', 'lumina2', 'chroma'} and (width > 0) and (height > 0): + if model_type in {'f1', 'h1', 'z_image', 'lumina2', 'chroma'} and (width > 0) and (height > 0): params['width'] = width params['height'] = height if shared.sd_model.vae is not None and shared.sd_model.vae.config is not None: diff --git a/modules/sd_vae_taesd.py b/modules/sd_vae_taesd.py index 08c3facc3..e599fe70e 100644 --- a/modules/sd_vae_taesd.py +++ b/modules/sd_vae_taesd.py @@ -38,7 +38,7 @@ prev_cls = '' prev_type = '' prev_model = '' lock = threading.Lock() -supported = ['sd', 'sdxl', 'sd3', 'f1', 'h1', 'lumina2', 'hunyuanvideo', 'wanai', 'chrono', 'mochivideo', 'pixartsigma', 'pixartalpha', 'hunyuandit', 'omnigen', 'qwen'] +supported = ['sd', 'sdxl', 'sd3', 'f1', 'h1', 'z_image', 'lumina2', 'hunyuanvideo', 'wanai', 'chrono', 'mochivideo', 'pixartsigma', 'pixartalpha', 'hunyuandit', 'omnigen', 'qwen'] def warn_once(msg, variant=None): @@ -59,7 +59,7 @@ def get_model(model_type = 'decoder', variant = None): model_cls = 'sd' elif model_cls in {'pixartsigma', 'hunyuandit', 'omnigen', 'auraflow'}: model_cls = 'sdxl' - elif model_cls in {'h1', 'lumina2', 'chroma'}: + elif model_cls in {'h1', 'z_image', 'lumina2', 'chroma'}: model_cls = 'f1' elif model_cls in {'wanai', 'qwen', 'chrono'}: variant = variant or 'TAE WanVideo' diff --git a/pipelines/model_flux2.py b/pipelines/model_flux2.py index 388ecd6f6..5119f5588 100644 --- a/pipelines/model_flux2.py +++ b/pipelines/model_flux2.py @@ -35,5 +35,5 @@ def load_flux2(checkpoint_info, diffusers_load_config=None): sd_hijack_te.init_hijack(pipe) sd_hijack_vae.init_hijack(pipe) - devices.torch_gc() + devices.torch_gc(force=True, reason='load') return pipe diff --git a/pipelines/model_z_image.py b/pipelines/model_z_image.py index 74ae9cfcf..1f2a18bfd 100644 --- a/pipelines/model_z_image.py +++ b/pipelines/model_z_image.py @@ -1,5 +1,6 @@ +import transformers import diffusers -from modules import shared, sd_models, sd_hijack_te, devices, model_quant +from modules import shared, devices, sd_models, model_quant, sd_hijack_te from pipelines import generic @@ -9,18 +10,22 @@ def load_z_image(checkpoint_info, diffusers_load_config=None): repo_id = sd_models.path_to_repo(checkpoint_info) sd_models.hf_auth_check(checkpoint_info) + load_args, _quant_args = model_quant.get_dit_args(diffusers_load_config, allow_quant=False) shared.log.debug(f'Load model: type=Z-Image repo="{repo_id}" config={diffusers_load_config} offload={shared.opts.diffusers_offload_mode} dtype={devices.dtype} args={diffusers_load_config}') - transformer = generic.load_transformer(repo_id, cls_name=diffusers.ZImageTransformer2DModel, load_config=diffusers_load_config) - load_config, _quant_args = model_quant.get_dit_args(diffusers_load_config, allow_quant=False) + transformer = generic.load_transformer(repo_id, cls_name=diffusers.ZImageTransformer2DModel, load_config=diffusers_load_config) + text_encoder = generic.load_text_encoder(repo_id, cls_name=transformers.Qwen3ForCausalLM, load_config=diffusers_load_config) + pipe = diffusers.ZImagePipeline.from_pretrained( repo_id, cache_dir=shared.opts.diffusers_dir, transformer=transformer, - **load_config, + text_encoder=text_encoder, + **load_args, ) del transformer + del text_encoder sd_hijack_te.init_hijack(pipe) devices.torch_gc(force=True, reason='load')