J^}q@&6FDx_`Ktv!gnJwxB2nx`t8;p_Cnkqmui zuWx;PD4A@?u}tL|nJoY2Gl_(hJ0r`TrN44xkE9+)On>pR>n+h-++Mp=A2u=OzK=Z7 z@(#z%IvSFFMEZ-I2zv+4mw?L*o)1U& #xuw=~R9pvo-6J1a z 2Fm|L&G;$ZRQ-i_XK$a;-QC5nWAg%{xt(o8S3 `4yeFX5< 9u51(s`wM z!s;@2-RNhDw`rEjWx_Tj?uJ@-u&BIB16uowvp339f;Uy8?SnJ+9%C(bS?dkr ~{xF-TNNAld_ya*kmJ;nL@&G$QXMi3)(_p95ta7Kpg z-JC8#QC3QpnCQ1vg?DtmS6diQta?&g=J(u}X~jyP(IUni`yi=CHdRv3E5ts WT1ynU9TXIzcKiJ2V(c zkGFoud;U%L^C-3ID`_Rje^{um7cipve6u6vW4k8pGHQXp1oEbayvVNO#IvBOH#&2K z)XUeM#SQTOx1gR7B|RNoxQK-@CkyZIL!k&e(eO)A&6~56G1qxyE0_@VN0`y?p;ANP z#VGNm-k~4F%!nhi?(r_soFp_~lPhhO*~9qd;t2WLj>NB8v;?{S{iE?x@i4!stZ^N5 zvbo=!NBi&Q4CqE!i~u-E`Bmg?8gP=gEj%L`4+kk5wm_f$e37{Zz)UBk y}Bk$! e7fNYs^;DZ_c PsDd4218cfyUE$B;;U@afxwzwgRyxMuBVsl8ye4xzY>HTH{_ HrnjRYaq?ft oix8a+J#jTGO% z7N0u9-V++S&3kXD0s2&k3=ELCusM=Ly^GLs6fBA>Yt$(cM8yj9^uBVfq^~5*eYFR8 z-<2X6q38?STDs&=ZU}w6n|ij~07-g0q=GJ@=zlTURdmpMyofF;Qm8FT1HxdG-mN#G zvkM1Iq=f^{VHY}yYHPPY{SA|n;x!AugBxrkoXzlY{(gQemafU696EeP M^vIA>=a5b986qCbeXd_xANRNZz4R2V>cVD;z7g--hj5`NIdl3o2U-L&E2Zy6 z 0JDF^$n}N4!6rLUg!af>JjSWhOB;}OjDXu8q;Ssyi2Zb z5L|+6;^KJF&tPYR_Q3z(cGVj(rYm0%J$63siG{ v(6ZE*L&T4znj_c!^4IV zD=6i*yMc@_jsBQI+lPPJrr4_0ogItwo(3E%8IYmB(HAzw%eB4(fWauh1Ezs)|A#JY zi *1(`77ipaI%3&5BM}7qz58lRkopbF!|9I zh_Pvx4S1Ukx_Ft!Q}O3zx_+0N%$l&oF1@60u7K6`Q_GwO`l{cTZ}EX5vLUP(Ph`a6 zgUeWLMN9JYDQ4|qF~QMe{l;C7J(&sW4bSD$3a9QiEESQ{Ef=AD5|{e|L!+pfU;1Wv zzder~+%^Aw#iS=%tpYr-10d25Uj=z)qu#uC8Smxw+EvJEl-v?0{40vQ(=OxKVZ9qb z%qc5QN*jGZqQjd^wdv!lhfvuNl|A6g4F?`1x(Oi%+LWM&cb_JtJ>rQ7_(n+p4*H)t zjZ+ &JApLYpNi@T$C@0h@{4*Bt@)>#F8DW zQlT>zgb{n+bDMg+cDvi|QxHkrhQ7;P6jRoVJ$p9Re%*+6t^!%~!lz?-^&T`JXLV?i zP}eL%h9Rx5(ju@mxxbk9I?W+3J;@>+#om6; 2wT%+Sq~9OCsT9M 8=v2%|D}tG~-5t zS|+R1xL9&XE!T6Gf?|?&zplH}%OvezRE-xkYOs5uO9h5et7}-K+6Uck!z9;--sa?q zenGfE<2-`6Q{UXg9={c}j%}TXu$bF@k< vJy2#-*nCZ5%@vI>nfNYGgkZ} zrmSi^I03ZL?kcFmftz~WCj|Bm_F3prY+ZKP&i={KQ&T3({0)FkvLsD6y36i5_Tr|- zldIjB4clht7m_Hmj98I`tu;+D*ln*rG+E4hoNv1<>^3L!AC$Qn2eyr*tzLF~+hlXX zR>^`6&r98@5-opiXd@>Ba)NqmHt+pC&`2J2BK-bkM~&`6+eJDMiMDPS5i|ANSHg<@ zeC*Jjjs&|hPTU8%38re^)q2cPKn1grN3qzDAo{vXrDDt qv3w6EZ1n*cXwr6R?&w(Z6tJSRd%X-}E?l9=oZrW)s2aLXiM$BvFy zW{m96J(_V{J&a)mw8c^TpX1E`S~?rM925b;mL#AJ;K>CgZ1UniNcYbvY2%d3P5YGi zAM|#ib< QIXP;L7NS+TvMeMvw&!0}FY3|3 *$Ov$pz9obE@^MccFDUyfJz 2U2q3nRQw=MyNt2h`xh&PwtmQ 4DKK&UGx0Mt^Fo4iAkXB=s&5P79TaN(Qb@u`NYCDhm zE>7H+y~hG6g$9m4?Qxh_RySkG4tH)Uh8I)ztf<+S7e*b~P@)^qdMpi3?Sw|E?vp`- zPcv}Mu{CCR7veQzCts~wmFXbO5%e>jI6l6b+)JVn(&>Q0Hf;T3vaIN^Vk)NmM7&$@ zUHGU$Ss7NrbpEp~Gl(wbfmKBLqdwi2n5O$U)<^Yo2buFq9LjD2+GsmC5Gu1I^0|v| z>UA>9f<2Dit&FkjiDgPAdvD{%4-HtJaXK)nEMuJKQq(8z;N?**<%kbo&9fH~cBHKF zN@Zowg!i9`hz)bqP90zFjH6 R9zkc;y<_HcpVexO=xP3(Z-cgHaF8!(` zF3Tq|SH*?~>iG(Y0M4{9VjNFhSX!`uWpS*s@pE;2*$CmUs}7x0Qg)Q+(S29S#4KfB zis9<}lF%ooM!L |D Ia@WPrWSvEaLrh`B$wUY5YAKp##lJ@F(DdQ?cNfsh`Y#&e(TtzYOl 9w76y?QSKj)B`X8MyD$JP?h?p>uY-2EpPpeZze$mFDAxi`_I zQ)YNq#e5_hc|$gH3qK48sDm166~)O?vzs#BDlSc*4QA47+FL*2F%5Z@S&O}Dku>X( z@O3ZjxU_ShN>^Um)#dm*nXM0Zr*x$v`n)9HVA( fhW&?%FoPb0NKZ(i UU9qcujg4Wg40TN3J%X$NF#fksi~H~{Y-WK9uHc0 z|MOR(@}$Dd!#*WW9k>0L&ra>8HV4nV08of65JHOCx#_}iQ=m&-6Plk>immd;Y_N~y z6kPs>n+bO!mDI{y-~2`GYGd8&00fn67bI|pD?$B}BJ}t2hQan^^Ng)|>{Acz&%s}7 ui4L{C;o$*HVDISv_b=4{&-0CQP1BD(*Gd~a{jYLD0LJ 3HZsAP}Rj&V4fw zh#U?Aku`!TE?O$sUAHbSIwl4dnm8Qp7Xa)H51-7;tao>dh=_E(eLL6KxY5;hGBP40 zBqSjrp(rRjzqECJelAQUl2hK`2wRh8xvy4# yFT%8_3{LP0^Yt#QKS1J#jH8jE291>lYP25m2>IKjF6L- ztO;B1%h3g1jw#)#(}O^U4zGUC@#M56rXr-2Y>7*~Q%$w?H0?EZ_#`>m5?`^&7@~ik zQs0xOJY1&Dt=#CR-DX T^FgfF&<|hkz#;L;wo5$@0 z2J`coO ez{9OI_Qe|~Z znHT5t^6xUc!UA)XP+r-UtK#8S!7XKu=m6gYgn-(uq^UW5ncCZVU(H$fI+1mhE8;C> z57GNore8eoXc^erD!7^#Xl}aYTh$=W4_-Uiya 4_G0gAEIgfe z^HCiZ`w0oKT()Ga84};)SC+<1$1)>Z>EUPmu1{raevPUjN2SFEO_nsW6eaJ@Y22Yj zt{o&~$t~qeo>~@ujII>CEf&bQ6$^Oy{Gg;q`ciXRZVIj9p#EV2b(0uTrzO~+lWdK5 z>%2l2rWDnhX!R!t5(-|xFGwoN(Ibh$qg_zN<#g5PBPYg*c)vGPm6ta4Zn+P&5s0!k z`dM38wP-rWIKylwLcnvDS8IMVJ$QK1DBUb@AoQ4qpcrU5iv2C;^N6!W;R}Y&X^GKN zQesRjC_cD#yS@WM(V{SkeayR`U3aW8eg)gGosdQJe$M_zE@Rw*AgQa#<&Q nsU zTtjHpLo$h}m(k-li(fWBcSXuku9UYZjABQe#s5SGq^kKx-`FZ+6FA7j1<6-tXJvqE z;)O|-w?%XXXlt4i*Ebe9q*ppbr1b0hFT8BQ=_4btywuf=WtxR(p|tuZFoTw}#d>Gi zpvGGzI&jd=-$B>(b?tSR{2zX()?BN-{)8!nJYJEtbRzwZYnl8Yr6aFYi$V|PS-%-} z=mwt~%Sun|+d>Frd1X!G& >x;vLRHD$=O293B2Xs!YXO8&fW}8jX z*^AGt8&ElS#U7E>P+V(PB8wO2sDO%gT&TNcY35O+JgO`u=5P?jMZ~RiRbudMX97+C z*w8!ot8`0!z9Oq1{PJ!5`!|*(#3IMz3y+nfahG C+clhHYc)_Y1SdD7fNhDiQ;Jpa_w{~>0;b0 z`-XY;?V-4s6#jhUSts%Kb5ixUKDw< |EGM2ykceLP9cPtI3=~jfne{=z-8Re_Q9yVve=%1FR=cB z8dDI)ycgAPlFQ|C$>JYXQMhF7lgW4Gdf|Kbv?)AbbXe`-loH>-zjTrXx8S!N;_v<) zykj4f@wnW{F{Oe(w)r(x;;gtfXNl(9H02(5o1*lx?|;nXROer8CX?fqVV9tsA5@M` zLmH{T6-)ct3}JL1s}@h Kh_i;FHp${OeML%d|h!w{ZDYYBm zqHoQR%ZP%wQ^PZ1m*C50OP+w4T#d!;XtpHvy}f*gWd%4>Zc;9)#2xmKjhrBtPKG{v z92@1RO*;B-uOz;wrh+Z~eAp+n8c+;WOX+J2({6O82`yaR0YQ;?O)CRCq7=s*59}3H zwv9G3hJFBJ?+0>2o4S6hm27|5muM%ENT<9GhRb}=*8MBNU%0FU-3h6vP?f?j4`200 zxvfdVL%pf0uk(Wm3yUa2Tk-Q+PyJv!8fa+Ycr0h}Jpy*7o$k)Ee;l!q9Faz%7F#}Q zUZbV85?m?KXrDhgGeSvM+#@`J!joljq;# >|2rlxK z4XabeDpuR+94vjfW}$_@2KJg&!}S#upi<(+^Fr=A)AjH7+M6k@{I9RTfhz~(?im=~ zG+!#f_V#ue4ItClEQvUc>QsjrlZl0`GgP-w0zLdtnw6cWT!4B-*t4v#$?0Nw2tG=4 zX`F$uzz&3{#BQi%w%MhNF`4#^hW2`+swDRYdj|NR*_Aor9G#dCHoM2^Ub-+a_4{I3 z;7Z_;n9h8HhhVER!WFmz(q|XIJ_F!Pf%esAD2QKl8BtaB2S_Yih|ha12eP(u6_wht ze!AA97hZS5=YQ)<)jaX^+y=+$M&SL)Z$*#T>QQEJ@R+o-6ou#SJJ0mm8XPhXKEkm+ z&$aMycm$+}h7P4m@dU|v1X%W>#LYYICv~Ty;^k_zwntM+QN4);?9h*5E&Pai?~V|G zC_cva`Mbft6QUex*7&f&sSxoL*0L8NfKtH*1A2e+It|t)mDp~LPo*U+@BuxA9{K?5 zaS8=6U$KdFu%m!}PTmC)B{OYuCW_x+U-Vbr47a=%o`E3;2xwk2 ZtB*~3tf@_wk0+m6Qo|H{nczRy9=9rprV(E(_8lKTr2-Nl zse7HeBvxEAx0Q4F9`kk^3!EI`b5|%VSid5PQtaA_U3)_BLwd{hPdVPc9DobWqyS=G zeTfVIM7~0T0w!7W1wn>z(12|&*4y&aqd$LgRE0mR>o2Zw)@{COr5%|uaeL1b_0hpK zcD-v<6Bi@}1YKWQUnw-=BEw`(Gu~g;6KM=u5=DvZ)u-2+(N!QXTvLni6s1fKG(#{U zcDo*L6j`x?4*X!4aqvuhdd5(e7-PO`V4-J@`;st9xi(=^)cOZqKDTv+LzbY2sBy zkyto~M62I07qvr-{(6PL$ovqOFiZkIAs8$GZw+P3j(g1!PHY;IPa?-cf!&{zM!*$Y z{s_oxj+c{dVVDyTG`vJ)nX%*OmwU7(D7(wneg|`OI5x&Nb}~3esOG>5-A{bsSJNLk z8O*ShOr4nG%Ll(^Mr8jW@jw}0nfQIs`9X|N*lo8a#6rk#|A(A`5Po`2dIU|x9&`J0 zHne``J8nCAFa}IbsNJLjM8ikdHd@%It_JjtW}bgO-93{}M3KYI+s4<;E)8+uwmJ4E zxMZpichn}-BsS7ep-0$E!W^nsal1Zh&jh!O#)gaW0^V2Ar&?My^mlb=qDnmWrpRDp z&rcKM47Pg0s8y|B$GvX;BKeK3WP}YT%+Z(OFFec3T44d4U^m?bE2pzH()90`aFJtv zv;lg*X*PDj{EvUii5(Ca_ot)Y9i0-JL@C4wrYKrD$-wdO)<0?lRIjkPf?_wlJenlg zpjG*t#u!_f0H=jlT?4+pt0qTV> `}O8*O+r27paqq<=9 z2fln*iQ_Lvv@*CL5ejJ4dj(3YL;nNxU6uW5E_I_76oeda1PsZ=-i>@e6}lgjVtGOK zr Z5eeqK&(s+;#NzOVdU3;ALt+q96p| zxykeJL5eT;9wTgO>!QLE2n1QQc$nOw+`GwymWuSm#xmyxFjF9=%U0qbhGc_WNDU@| zE2OlMwF1eO7d>{%hIcQ}AbpXIKP9(fwS!OYn*B91Q&8TG8BigE{$=RZfHG9S%N+_s zMMuP>P-P?-n+ssNg>LG%vp?Ot^UseV|3~NH`G$-Fx9Kc%N?>_~YPey{W_~YZUHy^s zmQ8}G;~ixAq~BW*%!8_Z`8cOFl(!xPb8Iz{5w_aNk$ H>rcIBsL_c8Xmi9CBsxTz%G||7x?ex0Q@a !XWpQ*)CdB~aE!nX1dm z?^frz;YWte7G_iL(4?`7t|BnbVE;Vh;!#YTHNrRM);K6R4VqwlqvS7)W)ujC9D0$h z^P<)y!xXC`J{9bA1fT<4fxI7fF00Tm)uSyAUWd?~R4yDjJf`sQrBPBTadsu@f5yby zmpt5k&q0X^0Kp0(uMBK;a`9I%{RiI%5!BOkB~%wb6&!>yxB?}RNnpiePbjy_P|6yX z;$a$Zz))%g2;JoNH34^1<6@2!-ST!EBONQ~&>$_^e*l}7GGG&vs_si|4~`>FjJ$2w zIZ-pbP^y= #64!`fq+n(XsL70Rdc?ej78byY+qx+n)&`UQcY$r6C z?5kW2f>FiTzrV2n_2_KhTm{jiXou!A8ui?uaCQ5Df*wdzl~s9VnXG2;c!nvO2`+@_ z`qp-p91twroV2B_m=a>Uv^y FR~|Z$VXduyE?0;wGf2vW8xN&A(V$qkYj|{5AHA*4lcGax2g-c6 zw{pF+Up%9QKeg|#cVNi;fK3nA)F7;=B?n!RWeZ-d^BAM!oiy{JLZ4QgSl@p1j4M*k zNoBI?N7SX3S~~>_te=&+-MYRU#YPf3>7|1W;Z8$1M_9RVS;!f>D=RhtQVvu>_EbCJ0R3?Z z0ApB`lO`*A$l<(1if$dnuXlT6KY9gEzJEZt4p4Kw*ZQ EjUe%q5-Pt98X81yC}d*ciS zES81l-yyl^zF5QS%u@I4D{x|OkD1tYN%)eI;(w55zN`M4^ro$!1z)fo*(d$`$6`0C z-n8{~hK}C*`ld*dFuzbdd>5H^)5+O8ryH&UPHhTTwHkQYB#Yh9#V+97hR>*l;Z1R! z^OQ0D#ys3`i6H|NcPSYAl-tD=nTbxJPT{P30vR$z)wzb!SFM4s`3=@V^m0Qx_r(I} zkf>McuU=psnf=DI5mO0ISBu2>k|u})BvDa4%ETG38Ch=CT69>;oLBW7_zABfgVf%A zyGUO!qP()8EFk=;Q0L5(j?(k`PZz$3pbl=$Y8U1&pmE }iFqC^jzMn#H*1U-$()E3w zv=%i!seT)mt&zVX+Do95r8Zo0sEYu@9Yx{E3_+3_L3;QO+n3>v78e_|C!5jDpC#@< zTwex{4=00QrK_h!Cn+u(Y}b8yvSuPW2{o)y2PN0eW3ro~X^qzH?J2QVbbkARZ(M4X zhLU Xr_LXnc4}nE#bh$sb<<_&bQXkH0pT}mCT9b7R8IdvTgN#)n->Miw zVo^tpT6_G}bB8;S%)g5(`=?Jv_`-b=gIm>YxwS>sAfZXP1Msc-TKfZ9oJ@U1Qvjf+ z)dBM|X=P_)i-I_PDw)y=eCeR&ofC6I`9;KLf|f&`%al74=Ojq0?9WrTv&sws+Rm0Z zlrHziP5BYwt*gyDwKj#Q!A`16ga%3i3fz93r~bIfHQAO?T7q=mK$Ykv|Ht;#6{xXV z`g1n8L!G@sa;`p4RY5uA)jPsy^Js>qeD`Lz51LoQ?^*Tt-YDX+dK!O~OQyEp35&|l z!?O3|Q~<&8u)oOG6!=TQ=_(m{)q%S#7 R<^KF&ePtV`2DYu*ofH?{SFVi;OYaKiP?%5w~SJ~dd zBUOepSKxk}e+ASh!@jdR2it^&P1J^|qn#c3v2$pYuKy1e@GZ_*;t{>LjD-D%s?)dj zN?GU5s8ru_B1ZMrDkI)pI9SG;ly$Vj-^ 2tsBH Y5p>ohk{Udo;jt3Yl>X%g+mz$^8ClK*w?X&y )Swbk<_bh z?21|7D fo{?0qI+0Sh1eC zhTcPzCOp1 0-&W)&&+b$bvf7xTyPOSZek4DMhZvNjY=%PZf1O zeZw*^e5h^M8o4)hiJ;tL)-JQlBFlu3_4K=~Z5~7PmmVw+dD9*(#&|W*Ks;%djKGl& z!dF64;_9AooDrDUmf5i ARERF>xXll$I?nEF =|X9944LHuTL6W{NHBvq+eyvgn5aej02-=XSB~isL7#Ux=+V!z0UyrWeqxcV* zTM(J=@7Ot?s(Vw6b;aY5*mlPBdKZ!PF(94)L4{gHj2CWHxrc{JgsJqDIZTQVlL{@8 z)Q0uSP`qJsV|u$YLGAnDa9yP6NwtrodWDP*YfrU-TjS-cx7Kat*^lmMP<%HJy;^!i z5me=G7I0kqxoba0KaUw&6C(b|hlxsCp! 4s?OU>A zd8I5YJeobb5ZW#ixv@)qkoT$&MBss6%>gC({mq-zuK)a9$2f+k%P>90;5fQLqR8aL zbLb8jw~e7MqR|hUDT0k>9-=~0=F{I2xg&^7z 0W!kqL zM%{TVM2T188*^vTN GS(iHbl zlN^9|sXizOhn9a92133VmxZbpt6fG}nxlWlr|K#BpIil4-fEY7$->=^;Y2We&jN&o z>ty-IqYO7-E0a`cZ&Nkmud*a>T*A&{kQnB(2dZS^PflDCP_~Vut2z15F6?Av9Wk^# zNr#?M8DgfyW=~L~XXvGGPra0G_^gcDT4Nd#rD!bsz}7yWsE^oNBhzR80j_XcHUPdT zen!r^qFh^Le9%TzV$DSNJ&p(tqXQoR7&5WHo9t5`MJ#h}AV~pdzoTN}ENy6k)uG`_ z0Cj!ZAp^k59r;!eQ)V{lBvZQMj$$OUaYH`@SUpmnMPi%HVg=N!u4eXv+~MPTk$cV* za5vt HtG-(5=L;fkGxD;#bP ??`8dP4rTCf#?rmP zdKz#Pwv0sU$>8k#ed`9hA<8#KUQV=VEEA;v`U#n7Ol_zjrv5AMRffui+FNivA-RtX z*j=iD4z>D@kSIcN*l*nz0wN+!Nf6~9x&$k7m=D>Prb6&V>ceL46$@8V;T3NxD9qg` z^e3v9i#bmp2X?T`+%#eOC$sM<_$}?-MVjE9`G`E6H2>GA?lW*O=Gsu Zr*72k-Q#$^ZZW From 95129ebfcfbb784d9ae7b3a2a0fe9687941e1888 Mon Sep 17 00:00:00 2001 From: dwinters99 <65516417+dwinters99@users.noreply.github.com> Date: Fri, 9 Jan 2026 01:50:08 -0500 Subject: [PATCH 10/26] fliers --- .../modules/company_logos/code/company_fliers.dm | 8 ++++++++ .../modules/company_logos/icons/corp_fliers.dmi | Bin 0 -> 318 bytes tgstation.dme | 1 + 3 files changed, 9 insertions(+) create mode 100644 modular_darkpack/modules/company_logos/code/company_fliers.dm create mode 100644 modular_darkpack/modules/company_logos/icons/corp_fliers.dmi diff --git a/modular_darkpack/modules/company_logos/code/company_fliers.dm b/modular_darkpack/modules/company_logos/code/company_fliers.dm new file mode 100644 index 000000000000..3bf769f57024 --- /dev/null +++ b/modular_darkpack/modules/company_logos/code/company_fliers.dm @@ -0,0 +1,8 @@ +// Basically example items for the different brands but can be used as set-dressing + +/obj/item/paper/flier + name = "flier" + desc = "It's an advertisement of some sort. Tell a coder." + brand = "intentionally_wrong_to_spot_bugs" + abstract_type = /obj/item/paper/flier + diff --git a/modular_darkpack/modules/company_logos/icons/corp_fliers.dmi b/modular_darkpack/modules/company_logos/icons/corp_fliers.dmi new file mode 100644 index 0000000000000000000000000000000000000000..40119cc37e7a9e7fc9ecd31f24ec7de78f4e7327 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv{s5m4*8>L*{AXbJ|NsBZn>W|5 zU*Dk@d D^&r9Atdi*h^u~qe(|5g(w7jc6J-9ZeAgA z!sN*#A8oHQzO5UkipKnnIiSYGFl)O6ckSv%XP|w#o-U3d8WYd<-R3=@z~P$6yh2zc zcEKgiSO2U 52rW(eL!Xcr$R!lwLlpgy;Ifoj=GL^H=b!dvdQSjK& z Date: Fri, 9 Jan 2026 04:35:36 -0500 Subject: [PATCH 11/26] evil testing commit --- code/__HELPERS/icons.dm | 3 +- .../company_logos/code/company_logos.dm | 5 +- .../code/company_snowflake_code.dm | 123 ++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 modular_darkpack/modules/company_logos/code/company_snowflake_code.dm diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index ac67848447ad..7744cf879305 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -566,7 +566,8 @@ world if(no_anim) //Clean up repeated frames - var/icon/cleaned = new /icon() + // Done this way otherwise Width() and Height() would always be 0 for this icon + var/icon/cleaned = icon('icons/effects/effects.dmi', "nothing") cleaned.Insert(flat, "", SOUTH, 1, 0) return cleaned else diff --git a/modular_darkpack/modules/company_logos/code/company_logos.dm b/modular_darkpack/modules/company_logos/code/company_logos.dm index a83395cba7d4..57f7d295ae59 100644 --- a/modular_darkpack/modules/company_logos/code/company_logos.dm +++ b/modular_darkpack/modules/company_logos/code/company_logos.dm @@ -24,6 +24,9 @@ GLOBAL_LIST_INIT(all_brandnames, brand_list_by_name()) our_brand = GLOB.all_brandnames[product.brand] + if(isnull(our_brand)) + our_brand = /datum/brand + RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) /datum/element/corp_label/Detach(datum/target) @@ -32,7 +35,7 @@ GLOBAL_LIST_INIT(all_brandnames, brand_list_by_name()) /datum/element/corp_label/proc/on_examine(datum/source, mob/user, list/examine_list) SIGNAL_HANDLER - var/logo = "[icon2html(our_brand.logo_icon, user, our_brand.manufacturer, extra_classes = "corplogo")]" + var/logo = "[snowflake_icon2html(our_brand.logo_icon, user, our_brand.manufacturer, extra_classes = "corplogo", non_standard_size = TRUE)]" examine_list += span_info("
[logo]
Brought to you by [our_brand.full_name].") if(our_brand.slogan) diff --git a/modular_darkpack/modules/company_logos/code/company_snowflake_code.dm b/modular_darkpack/modules/company_logos/code/company_snowflake_code.dm new file mode 100644 index 000000000000..76b82f43b00e --- /dev/null +++ b/modular_darkpack/modules/company_logos/code/company_snowflake_code.dm @@ -0,0 +1,123 @@ +/proc/snowflake_icon2html(atom/thing, client/target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE, extra_classes = null, keyonly = FALSE, non_standard_size = FALSE) + if (!thing) + return + + var/key + var/icon/icon2collapse = thing + + if (!target) + return + if (target == world) + target = GLOB.clients + + var/list/targets + if (!islist(target)) + targets = list(target) + else + targets = target + if(!length(targets)) + return + + //check if the given object is associated with a dmi file in the icons folder. if it is then we don't need to do a lot of work + //for asset generation to get around byond limitations + var/icon_path = get_icon_dmi_path(thing) + + if (!isicon(icon2collapse)) + if (isfile(thing)) //special snowflake + var/name = SANITIZE_FILENAME("[generate_asset_name(thing)].png") + if (!SSassets.cache[name]) + SSassets.transport.register_asset(name, thing) + for (var/thing2 in targets) + SSassets.transport.send_assets(thing2, name) + if(keyonly) + return name + if(sourceonly) + return SSassets.transport.get_asset_url(name) + return "" + + //its either an atom, image, or mutable_appearance, we want its icon var + icon2collapse = thing.icon + + if (isnull(icon_state)) + icon_state = thing.icon_state + //Despite casting to atom, this code path supports mutable appearances, so let's be nice to them + if(isnull(icon_state) || (isatom(thing) && thing.flags_1 & HTML_USE_INITAL_ICON_1)) + icon_state = initial(thing.icon_state) + if (isnull(dir)) + dir = initial(thing.dir) + + if (isnull(dir)) + dir = thing.dir + + // Commented out because this is seemingly our source of bad icon operations + /* if (ishuman(thing)) // Shitty workaround for a BYOND issue. + var/icon/temp = icon2collapse + icon2collapse = icon() + icon2collapse.Insert(temp, dir = SOUTH) + dir = SOUTH*/ + else + if (isnull(dir)) + dir = SOUTH + if (isnull(icon_state)) + icon_state = "" + + icon2collapse = icon(icon2collapse, icon_state, dir, frame, moving) + + if(!non_standard_size) + var/width = icon2collapse.Width() + var/height = icon2collapse.Height() + if(width != height) + var/new_dimension = min(width, height) + snowflake_center_icon(icon2collapse, new_dimension, new_dimension) + + var/list/name_and_ref = generate_and_hash_rsc_file(icon2collapse, icon_path)//pretend that tuples exist + + var/rsc_ref = name_and_ref[1] //weird object thats not even readable to the debugger, represents a reference to the icons rsc entry + var/file_hash = name_and_ref[2] + key = "[name_and_ref[3]].png" + + if(!SSassets.cache[key]) + SSassets.transport.register_asset(key, rsc_ref, file_hash, icon_path) + for (var/client_target in targets) + SSassets.transport.send_assets(client_target, key) + if(keyonly) + return key + if(sourceonly) + return SSassets.transport.get_asset_url(key) + return "
" + +/proc/snowflake_center_icon(icon/icon, final_width, final_height) + var/width = icon.Width() || world.icon_size + var/height = icon.Height() || world.icon_size + + if(final_width <= 0) + final_width = width + if(final_height <= 0) + final_height = height + + var/left = INFINITY + var/right = 0 + var/bottom = INFINITY + var/top = 0 + + // Find the inner dimensions (non-alpha pixels) + for(var/x in 1 to width) + for(var/y in 1 to height) + if(icon.GetPixel(x, y)) + left = min(x, left) + right = max(x, right) + bottom = min(y, bottom) + top = max(y, top) + + if(!right) + // Fully transparent + icon.Crop(1, 1, final_width, final_height) + return icon + + var/inner_width = right - left + var/inner_height = top - bottom + var/left_padding = left - floor((final_width - inner_width) * 0.5) + var/bottom_padding = bottom - floor((final_height - inner_height) * 0.5) + + icon.Crop(left_padding, bottom_padding, left_padding + final_width - 1, bottom_padding + final_height - 1) + return icon diff --git a/tgstation.dme b/tgstation.dme index 6bff78e65b78..9d970c947517 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6989,6 +6989,7 @@ #include "modular_darkpack\modules\clothes\code\under.dm" #include "modular_darkpack\modules\company_logos\code\company_fliers.dm" #include "modular_darkpack\modules\company_logos\code\company_logos.dm" +#include "modular_darkpack\modules\company_logos\code\company_snowflake_code.dm" #include "modular_darkpack\modules\curtains\code\curtains.dm" #include "modular_darkpack\modules\dancing\code\dancing.dm" #include "modular_darkpack\modules\decor\code\bench.dm" From 42a06a2de6a087e8f9eb5019839de4a0075e5ed1 Mon Sep 17 00:00:00 2001 From: dwinters99 <65516417+dwinters99@users.noreply.github.com> Date: Fri, 9 Jan 2026 19:08:18 -0500 Subject: [PATCH 12/26] thank you CM guy --- .../company_logos/code/company_logos.dm | 27 +++- .../code/company_snowflake_code.dm | 123 ------------------ tgstation.dme | 1 - .../tgui-panel/styles/tgchat/chat-dark.scss | 12 ++ 4 files changed, 37 insertions(+), 126 deletions(-) delete mode 100644 modular_darkpack/modules/company_logos/code/company_snowflake_code.dm diff --git a/modular_darkpack/modules/company_logos/code/company_logos.dm b/modular_darkpack/modules/company_logos/code/company_logos.dm index 57f7d295ae59..7db210e6c677 100644 --- a/modular_darkpack/modules/company_logos/code/company_logos.dm +++ b/modular_darkpack/modules/company_logos/code/company_logos.dm @@ -35,20 +35,37 @@ GLOBAL_LIST_INIT(all_brandnames, brand_list_by_name()) /datum/element/corp_label/proc/on_examine(datum/source, mob/user, list/examine_list) SIGNAL_HANDLER - var/logo = "[snowflake_icon2html(our_brand.logo_icon, user, our_brand.manufacturer, extra_classes = "corplogo", non_standard_size = TRUE)]" + var/logo = "[icon2html(our_brand.logo_icon, user, our_brand.manufacturer, extra_classes = "corplogo")]" examine_list += span_info("
[logo]
Brought to you by [our_brand.full_name].") if(our_brand.slogan) examine_list += span_notice("\"[our_brand.slogan]\"") /datum/brand + abstract_type = /datum/brand + + // Used to index the brand and reference the icon_state var/manufacturer = "badcode" + // The full, plain-text name of the company. var/full_name = "Bad Code Inc." + // Company slogan. Displayed alongside the logo in most cases. var/slogan = "Bad Code Inc.: Telling America's Coders they screwed up since 1970." + // Formatting applied to the name in item descriptions var/name_span = "hypnophrase" + // The icon file we're grabbing our icon_state from. Default dimensions in this file are 300x110. var/logo_icon = 'modular_darkpack/modules/company_logos/icons/corp_logos.dmi' + // Company color used for coloring certain items that change depending on brand var/company_color = COLOR_ADMIN_PINK - abstract_type = /datum/brand + // Stuff you could find on their wikipedia page, or by asking around at a finance conference. Public information. + var/public_description = "Bad Code Inc. was founded in 1970 after John Code forgot to close a string \ + while writing entries for brands in modular_darkpack/modules/company_logos/code/company_logos.dm. They've been industry leading in hunting down \ + coders who make this same mistake and stabbing them 126 times in the chest, groin, and thighs. It is estimated that they profit around 1.6 trillion \ + dollars per year with this business model." + // Stuff that you have to KNOW to know. Things that the Hounds or Truthcatchers would hunt you down for finding out without their permission. + var/secret_description = "Unbeknownst to the public, Bad Code Inc. actually spares the lives of 18% of coders \ + and instead condemns them to a facility located deep under Silicon Valley called the \"Bugfix Beach.\" These poor wretched souls are punished \ + with a dark brand upon their left buttock, marking them as a \"Maintainer\". Slaves that show extreme aptitude in the mines are \"promoted\" \ + to a position of abject suffering in the deepest point of the mines. In whispered tones, the wretched \"Maintainers\" call them the \"Head Coder.\"" /datum/brand/pentex manufacturer = "pentex" @@ -56,6 +73,12 @@ GLOBAL_LIST_INIT(all_brandnames, brand_list_by_name()) slogan = "Pentex: Making All The Really Tough Decisions For You!" name_span = "corp_label_pentex" company_color = COLOR_CORP_PENTEX + public_description = "Pentex Group is a multinational megacorporation, one of the largest in the world. Originally an oil and mining company, Pentex \ + Group is now a holding company with subsidiares covering almost every industry on Earth. The vast majority of people have never heard of \ + Pentex, but almost everyone knows and/or trusts at least one of their subsidiaries." + secret_description = "The average person has no knowledge of Pentex Group's dealings, which allows them to pull the strings like a dark puppetmaster. \ + The company's main motivation is the spirtual, moral, and environmental corruption and collapse of Earth as we know it. Despite this, many who stalk \ + the night still ally with them. Why make your own power when you can ride the coat-tails of the most powerful corporation in history?" /datum/brand/pentex/ardus manufacturer = "ardus" diff --git a/modular_darkpack/modules/company_logos/code/company_snowflake_code.dm b/modular_darkpack/modules/company_logos/code/company_snowflake_code.dm deleted file mode 100644 index 76b82f43b00e..000000000000 --- a/modular_darkpack/modules/company_logos/code/company_snowflake_code.dm +++ /dev/null @@ -1,123 +0,0 @@ -/proc/snowflake_icon2html(atom/thing, client/target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE, extra_classes = null, keyonly = FALSE, non_standard_size = FALSE) - if (!thing) - return - - var/key - var/icon/icon2collapse = thing - - if (!target) - return - if (target == world) - target = GLOB.clients - - var/list/targets - if (!islist(target)) - targets = list(target) - else - targets = target - if(!length(targets)) - return - - //check if the given object is associated with a dmi file in the icons folder. if it is then we don't need to do a lot of work - //for asset generation to get around byond limitations - var/icon_path = get_icon_dmi_path(thing) - - if (!isicon(icon2collapse)) - if (isfile(thing)) //special snowflake - var/name = SANITIZE_FILENAME("[generate_asset_name(thing)].png") - if (!SSassets.cache[name]) - SSassets.transport.register_asset(name, thing) - for (var/thing2 in targets) - SSassets.transport.send_assets(thing2, name) - if(keyonly) - return name - if(sourceonly) - return SSassets.transport.get_asset_url(name) - return "" - - //its either an atom, image, or mutable_appearance, we want its icon var - icon2collapse = thing.icon - - if (isnull(icon_state)) - icon_state = thing.icon_state - //Despite casting to atom, this code path supports mutable appearances, so let's be nice to them - if(isnull(icon_state) || (isatom(thing) && thing.flags_1 & HTML_USE_INITAL_ICON_1)) - icon_state = initial(thing.icon_state) - if (isnull(dir)) - dir = initial(thing.dir) - - if (isnull(dir)) - dir = thing.dir - - // Commented out because this is seemingly our source of bad icon operations - /* if (ishuman(thing)) // Shitty workaround for a BYOND issue. - var/icon/temp = icon2collapse - icon2collapse = icon() - icon2collapse.Insert(temp, dir = SOUTH) - dir = SOUTH*/ - else - if (isnull(dir)) - dir = SOUTH - if (isnull(icon_state)) - icon_state = "" - - icon2collapse = icon(icon2collapse, icon_state, dir, frame, moving) - - if(!non_standard_size) - var/width = icon2collapse.Width() - var/height = icon2collapse.Height() - if(width != height) - var/new_dimension = min(width, height) - snowflake_center_icon(icon2collapse, new_dimension, new_dimension) - - var/list/name_and_ref = generate_and_hash_rsc_file(icon2collapse, icon_path)//pretend that tuples exist - - var/rsc_ref = name_and_ref[1] //weird object thats not even readable to the debugger, represents a reference to the icons rsc entry - var/file_hash = name_and_ref[2] - key = "[name_and_ref[3]].png" - - if(!SSassets.cache[key]) - SSassets.transport.register_asset(key, rsc_ref, file_hash, icon_path) - for (var/client_target in targets) - SSassets.transport.send_assets(client_target, key) - if(keyonly) - return key - if(sourceonly) - return SSassets.transport.get_asset_url(key) - return "
" - -/proc/snowflake_center_icon(icon/icon, final_width, final_height) - var/width = icon.Width() || world.icon_size - var/height = icon.Height() || world.icon_size - - if(final_width <= 0) - final_width = width - if(final_height <= 0) - final_height = height - - var/left = INFINITY - var/right = 0 - var/bottom = INFINITY - var/top = 0 - - // Find the inner dimensions (non-alpha pixels) - for(var/x in 1 to width) - for(var/y in 1 to height) - if(icon.GetPixel(x, y)) - left = min(x, left) - right = max(x, right) - bottom = min(y, bottom) - top = max(y, top) - - if(!right) - // Fully transparent - icon.Crop(1, 1, final_width, final_height) - return icon - - var/inner_width = right - left - var/inner_height = top - bottom - var/left_padding = left - floor((final_width - inner_width) * 0.5) - var/bottom_padding = bottom - floor((final_height - inner_height) * 0.5) - - icon.Crop(left_padding, bottom_padding, left_padding + final_width - 1, bottom_padding + final_height - 1) - return icon diff --git a/tgstation.dme b/tgstation.dme index 9d970c947517..6bff78e65b78 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6989,7 +6989,6 @@ #include "modular_darkpack\modules\clothes\code\under.dm" #include "modular_darkpack\modules\company_logos\code\company_fliers.dm" #include "modular_darkpack\modules\company_logos\code\company_logos.dm" -#include "modular_darkpack\modules\company_logos\code\company_snowflake_code.dm" #include "modular_darkpack\modules\curtains\code\curtains.dm" #include "modular_darkpack\modules\dancing\code\dancing.dm" #include "modular_darkpack\modules\decor\code\bench.dm" diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index 99f0e74ead7e..1944e49c4906 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -1298,4 +1298,16 @@ $border-width-px: $border-width * 1px; color: #b09448; } +.boxed_message .icon { + width: 1.5em; + height: 1.5em; + margin: 0; + padding: 0; + + &.corplogo { + width: 150px !important; + height: 55px !important; + } +} + /* DARKPACK EDIT ADD END */ From 4e8913654961470df1605a53d3e8e7db88f04790 Mon Sep 17 00:00:00 2001 From: dwinters99 <65516417+dwinters99@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:01:55 -0500 Subject: [PATCH 13/26] company fliers and some more logos --- code/game/objects/items/skub.dm | 2 +- .../company_logos/code/company_fliers.dm | 93 +++++++++++++++++- .../company_logos/icons/corp_logos.dmi | Bin 8866 -> 12306 bytes 3 files changed, 92 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/skub.dm b/code/game/objects/items/skub.dm index 893911cfa163..eeb8bbac65df 100644 --- a/code/game/objects/items/skub.dm +++ b/code/game/objects/items/skub.dm @@ -6,7 +6,7 @@ w_class = WEIGHT_CLASS_BULKY attack_verb_continuous = list("skubs") attack_verb_simple = list("skub") - brand = "intentionally_wrong_so_that_it_defaults_to_the_badcode_logo" // DARKPACK EDIT ADD - company_logos + brand = "badcode" // DARKPACK EDIT ADD - company_logos - Proof of concept. I kinda like it. Leave it? /obj/item/skub/Initialize(mapload) . = ..() diff --git a/modular_darkpack/modules/company_logos/code/company_fliers.dm b/modular_darkpack/modules/company_logos/code/company_fliers.dm index 3bf769f57024..ab025b7622d6 100644 --- a/modular_darkpack/modules/company_logos/code/company_fliers.dm +++ b/modular_darkpack/modules/company_logos/code/company_fliers.dm @@ -2,7 +2,96 @@ /obj/item/paper/flier name = "flier" - desc = "It's an advertisement of some sort. Tell a coder." - brand = "intentionally_wrong_to_spot_bugs" + desc = "It's an advertisement of some sort." + brand = "badcode" abstract_type = /obj/item/paper/flier + // What the paper says after the logo + var/blurb = "Bad Code Inc. helps thousands of coders every year, but we're facing a never-before-seen coder surge! \ + We're looking for consultants to help locate and assist the next mistake-maker before they push to master on a friday or forget to change\ + the blurb var on /obj/item/paper/flier in modular_darkpack/modules/company_logos/code/company_fliers.dm!
\ + Call 514-BAD-CODE for more information on careers." +/obj/item/paper/flier/Initialize(mapload) + . = ..() + var/datum/brand/parent_brand = GLOB.all_brandnames[brand] + if(!isnull(parent_brand)) + color = parent_brand.company_color + add_raw_text(span_info("[parent_brand.full_name].
\ + \"[parent_brand.slogan]\"
\ + [blurb]")) + + +/obj/item/paper/flier/pentex + brand = "pentex" + +/obj/item/paper/flier/pentex/ardus + brand = "ardus" + +/obj/item/paper/flier/pentex/avalon + brand = "avalon" + +/obj/item/paper/flier/pentex/circinus + brand = "circinus" + +/obj/item/paper/flier/pentex/consolidex + brand = "consolidex" + +/obj/item/paper/flier/pentex/endron + brand = "endron" + +/obj/item/paper/flier/pentex/endron/atlas + brand = "atlas" + +/obj/item/paper/flier/pentex/harold_and_harold + brand = "harold_and_harold" + +/obj/item/paper/flier/pentex/good_house + brand = "good_house" + +/obj/item/paper/flier/pentex/hallahan + brand = "hallahan" + +/obj/item/paper/flier/pentex/herculean + brand = "herculean" + +/obj/item/paper/flier/pentex/herricks + brand = "herricks" + +/obj/item/paper/flier/pentex/king + brand = "king" + +/obj/item/paper/flier/pentex/magadon + brand = "magadon" + +/obj/item/paper/flier/pentex/magadon/aesop + brand = "aesop" + +/obj/item/paper/flier/pentex/magadon/autumn + brand = "autumn" + +/obj/item/paper/flier/pentex/nastrum + brand = "nastrum" + +/obj/item/paper/flier/pentex/omni + brand = "omni" + +/obj/item/paper/flier/pentex/otolleys + brand = "otolleys" + +/obj/item/paper/flier/pentex/black_dog + brand = "black_dog" + +/obj/item/paper/flier/pentex/rainbow + brand = "rainbow" + +/obj/item/paper/flier/pentex/tellus + brand = "tellus" + +/obj/item/paper/flier/pentex/tellus/sunburst + brand = "sunburst" + +/obj/item/paper/flier/pentex/vesuvius + brand = "vesuvius" + +/obj/item/paper/flier/pentex/young_and_smith + brand = "young_and_smith" diff --git a/modular_darkpack/modules/company_logos/icons/corp_logos.dmi b/modular_darkpack/modules/company_logos/icons/corp_logos.dmi index b864738c65bb4a4e02a40ceb9d60866b461c5464..760c3b6d1414bc6cce5f67f13f7ec3d714125a4e 100644 GIT binary patch literal 12306 zcma)icT`lp(=axgB6X=E9fV!FfPnN40s^vJx?Gx6l_DLa$-+{kEg((lx=Xn+Ka57VgQ*oB8lzy{G47e4K}e zM@&pikz0CpX_NPgaBk&$XXL6Ry{1~D&{;>64BqY$dDG;rv)ZhdJ69MtSNlh+Vi%9k z(sUI)I5^I0*4jVgeHL_fc9t8flziUe1wT_GGcwiruP*1vhu{Z*pQf{~qmSDYKexx; zWMqMPNvWOJqa?1q`1nVd`2z>au8kEn!(FYqZ1s%+=$HM}8=yZsocR4r&i=cK7mxUG z!>Uu52SI;?qj3vi9B1le9Id9~izps-BIhi^zB4@_i!2)PO?~t9)QtICcc*6V>4gAQ zg07yoAje`R{-2rIv2kj?@BC$nW<6`! 9wLjV6Sr_a{fn*R~$) zhzhZioyFa98Y50ebX?G$eVNQQURy*)#!aTDsrDc+Z#ADLBJWOGTvP7g)Kq>t>wD>? zeua+y@H6osH&s*fxB9v$meG^KNvK7Q(&Vlfm0Cda^>YoJhbO_O#WBSkArdI_3zSIZ z{{V@InS- (T_I}|5cFZW)v%oopucqYjoI) zd( M4gNF9}Br3Q`}|L(Xqnhx5cNO~cvp7-Kt3zYF?>Nou1{)IXu(>}dI zyonF*u7`Ve4f8{y{+88JRH@gD96ff`oaX=;=DtD)Z)hI^R#_0vV;gd>MGL=aD*8DR zJ;RoBG;!leQjQH~HB7_3g5Nr& wbxqeOki-}*CLef=sq7CAlY|dq}dz26hI1}6p zAF}CWQDYk7uQ3OS$~k&4>}EO#;6>obV+wSKY_-%ML*@SWmJUO>lzKAgT|CjQ(==s- zk|dOxRJ^z$%x1-5Px!*WjCS-d0gUOfwo%T1zp=VmB-1leWZ5-5DyG7}6GJ-IoE}Fq zH(u* {L zP?zH8+3xdxRWf12qB0*OQNX5&8-W5SlnxLXMfCEeS4DTKbcyZ$XNQ{$X zk5V=Qp#l*kKhVBYUi6U08bM9sV%MU0?_I-SqK?ydYzV9Q^Ws&ff*_IxwW|qD+yMv? zF@_XZp@9^l+2xgVHe8@#%eTKxU_(%iR1tTyIXl)ouDCZzrx5 WKK z9Kd;tWJYiwdsuo(^0|(B{P`RG3^tG$ud hKhMr)AM>@1@#tRHP@4KR5 zR3xDkN(@^g9ga@&CZg_5E732%DV~$w(c W4o?&*#NJ1`M#%QOsFj2 z6Qo_E?!nkwR;52KS0{vb_cm8J7si8;Ar2Gq>8cuz`i^xC(oqed$6lnvg`Tf-u^Tv* z`RW|`bJL||q2N+OKFfg>mA-<$E<3Nyi82qz(IIFY8Sx@2NJ`Q#q1^EL;#gp=*FEl` zTkyxFn_M{v>)HmBQd&%*NM6nZZQPb)gHBCf7+LL~(fX5zTFwTIBrJbK?AXT*jp@th z BRsV`JW2hrB3GJJ3|uu6vr zuW{`As^F}tmeu_5*h}N!JtcB>o&Db_a@xsGn_K-Weme8@%3q}SumE1+Del>IjPZ_1 z&DURUg?*2G{%*!s1qDMRoNzYi$;p}Y`N)0fJJfu3FItdRy5zCckQ2{b{|O__k3Vl< z6mS`DRonpBU|0hTQb)nU<4iZ7q0f$LqcSsR>9I|~>J8kTwgrkoif5bl_Fgq~*t&$w zd+W!S;p uJ$XrPSwKg*EM6f3r;8^~h=R!)Gz@WB-9UuXuiB-P z8O5o-pS%UEU7MrPr^n&|FAhXuqKf3A)TsjEs`Jt_c*#B+9o8RgaI0Z2v4q$!gR58m zuSIV_MPxkjbEGAQM94Y^DE VezNZv_@Vf3OM0cviVMzVsHQFr2~9x(?=Qd6`uA+x2-^6gQGu3k--S4017N!m2oz zO%T%D%_;oIqH>{=%_!pcPgiHJAwbzgTCR`os$GLV9UKu%-L)M3pfh6BY zH`xBZo8ZIuHxx>f(ZHFd^I_z4@|j+i=b#13CC0sy`cW+YvzL@+gm2Ls^do%1)Jzir zX_ lZ*tduNrLH4qXBn(&BNS}Rz=qf@ z&2S&ZM|<3p`eR*IA;2s6N*y_pX=QE}q_HzpN%kJx%+o;}t3xz`r4LEED X5KOu?_&SoVK^~Ws}v;b`mEYzuQFM z!7LF8!wRWDhkb(_UO&*^tImj KDoxo)hj&Nb0?~}4^vcFz}tuWcye#7|_ zf}1cvot^DhoHS| _H2En_TgF8ee z!(fxTC}2F90JeGZB5y71+AeKmX|z!@=v7yFU|7&$6)7$+x(P*duk-+u_Jn4_M&6dd za2oi;fSqwgp!($cBRhyfSNt*33de#f?V?z*L69`;zTh%|cp>%SRh5V-b=)GgL#CsB z;+_o`JsPpMF7Ap{$1SaVD5g)2e#{jvPH*t`o41p%ouLbXFCeEc*=xTl8w`79zim`S z$XKVd)j{lj*BjQpiNI{y6h6~qrD?nFbx^ek8fLwSXAt*DC?yTC_q%FbhZz)JD+S$b zXXb`X%QD!7)zfVOLE&c2uVdXD;^B8?vW;+u`H{L;iX&Kf9G077~yS=+PFW@ZYn9h%bkmx z?>Sxxx&kGP4jpwF9u=YdC950hR TrAO5^F%#-umjlONg^(2DG8nLROK9$^Y?^XgP$-%iNPuOSHiItv?Lfhr=b84 zSI4;wixjeiSuK#53`%e?g8NcVK$N5zdx-Or^gZK0-{;%z!~^0;LNCLxYk$a#5x8yP z)1vTo?e%Upe41JH@J?(OLVj-TSPd>7rq(k68)SF-5>K2EdP6mi;6ZK-gg;>do#UPD z+sqSoyWDgUM1-XG*%on!0#rkwE95f1M5oX*(?4SM4P&!U8te#V+qMEG@~0aaQLxEL zZ?~7k9O=^Vf*DDlebA7Lmc#FeT{&toy!pc4!|ktZc=s)izmy4<<8TquxIr@49Y3zy zezf23H7oVL4EKUimMigEQsyJ%EyY8wu|cDf$M>pUj(l_$jUe6;JACya;V$D!0>PA| z54Kf+GG5HNk6pnl-HV!+89lNOq5wq{@y~uMBc8G#cvm2FDm?Hk(^*0b_s0J2+I{5g zH87Uidi83K<;f}cDtGz59@HLFRPN#r?FemQ(7Path_md1XVv&fV~#a@94KlT;Am&1 zWlJ99*x3 W-i9?pwD+0wwBgTiTRuJevbda2r_oQlE#)!jnE8 zTwgriecK)oi0M?cRj07_9vSG^jSh?8dlVWGTs?qKurxrF&cD6JQS<(8-*TSi@3axy zU;PvY-Er2%U+f8-D|I4BUSy&m=G6li{Ac&IjH6dKo&57xMv!xhj#j$KfR%c@Q3F=B zkU`?yo+GfoK$&kW$pJ5UNYU4z@d9_)xqTkwbqx1x5x-mz1Tn;yn&SM1YhykPPP*7r z-jD}#7VKHzXBQ 8-_R8PyYi6Oc;xof}-{y`IOB#I3u|T?Kt>epz zSGaNra;o0OcX6-Wt`|lA*mQX5&kzNOGN{N_ATEkB;7zqZQEV5L2o>NTBI|DFL-hu# zJFyEt1xn)fJ~b J82e3Lt z>f^*&9nR&8G(B)$9{l4&R!f(KsvEpOM)q7LNXc(|@UvO6_mH3}?r%`v4s)P>o1Hy& zyyC}6nglku>dUB?H7%+^j@PoS4SH| F4gWlLYHV!x z@#nvpQw-?c_yvor;Of1Ph-KmrnO6Dtmetkf?hm}f 1ys0O%_q2BBl{vRCp zche_6HIX64)wI8`cr*0wkyWYo-24~5#OklyD@iG>+{}29m}TGXz}&LJ1(ucF2K}Ug zVR2p7^6AS?cWEJRBu^2=PWYx?-1h$~%i^R9*pzYu>sjgul({w?+W&dF$5_#m$Ur1y zC(z;@u6Cr05X_;&s(ADy;BT4z+jS|sZRZ4Hp*cb;kwHd8u7fu$2N2?Pd<*`@nlv3| zZlv70*LC+j@Pf7JUj>N%sC!+7mTpZTUl$7X?AhV{_^(XbDpa%UO66ObbSsOES*bhV z)W6g?j+kT1m PGUdYZ-s>n+KW_ NiQ}QLY}BwlS8#A<+ t);L#3?18G0guy$lX7# K4&O>I0yH~)CYjVVKebkSz_9vI$Y+CnjdR8ig7P%N-V=v z!c!>m7cU>WRmE6@n}|~!ofdqOe|}yKg~b%+py)osz|pw>b#BtlmsI;;AL`FN7d2ei z1{d?~^bDV{z8)(f>GL^77%E<4HgOG1yAb+0xn7YD{b|202S3>(yh2r+QMxYVcy^qI zDRx D+tmoS} z15_RnG_c@RC|U8<
DuGCdfl%GGDW0kJgoX4=OX-xTA9dkVK@UFivZNVO|W743vT1Rn_I$(`+Oa=pb z#ukm;=mr&K5;o> aX0vbRRDEqD1ECu0Y7UfMv0qV^fHE24TpLuCE_S8LYjChZ1y zBxoMIDydVWQo_g2hA!|(BmBtxF)NAGRsU_p{m0<8 ?Sxf5A5nxF!8UzQFS zF9ERG{yUO?sEs9*OFuA9)eS~`u}!Udc`sVYE)h&kmOv3>SL4;gRo+}D75(Dndv4*Z zsgzaMIqkJKP59JtIFrTVu_e;ld?h#3pGPL??MOgEsGL|`gD|qvO6Ps} iHKQif@{d}*QkW0Gs`jgoqThxqR zTl=~{^y3lS7$>=VSe16yYIIuDj6KJTTNQf`A6l~57W~;vfvaa21+)pDpU|Fl-k<&w zZ=2S0kgK#x21z|#NIBA|rLmQ)(CFE*L&z3pvbGvqZ#}MHd%s8+>0U`k?E=w4#}~tH zTeXiS_ghQN3%rZtCEeK;t0D)X9!U%~fZcpEEWPYDrq WnyM40n!eu8aopudvjhm;qqGZXb%)y)9Q@xC)*HYL}$+FK3x zQ0+l@D&W*;|2?Gz^N0B2W|C~wtA$16`n9k-FQ&_Ur*?k38Ik0#K iC~Ty=nIosB z6__b}S1ym;7l{$x8r2OpUnHTh>h=%)s$E-lT1el6Zqs>Slo_!5G2zSer)=_D2aguK z4`bb`UoI5|Ap&5m-s&ykBWw%7*6k4!_0LR^Pn_*=YiXdH>&HpTKl#_k{<1XpdmX7J ztt@o??mWni*P3rAOF8{i|HUvM{>Mn)n&ZOz6kTRk$5MwSS3p%~UWtuz^zp`%c!AdC zB{_DQT$K3nHlOHOiDG{J1~#s7V;#k9$QXUd7YR_!LV;g48Fj>e;1i~3D}K (YLny^=7n7eE))!eoA3KSqG%s8dTXo-GEg#as@oWfpKRa&lM zf6oW{ugy<^s3FazX% DP>Y`P4vt^RipW^mz(&F`JrBwZDgO6TsWYpRuZyKA% zmVe1?zrRY=eT}&DAZyU^wnJ0gn_}5ia<1!meNgcEDajW)dg8D!o#JZMaVrCi72bWy zC$<0cNKX(Gq&BKOAksS0^27Pf(^o%e*q>$fDAg~RemyXs*ilXtWfqq5WIFZQDqw!n z!X8oamI};|v{Nz+(?#Ml0o;awoAU7@m>M+xeb^Pj!~D%m*INJAs}GfC3ex@!If(Gw zm!f40**RLuPLde{(i`_gy 8e;%sXQZ~O8 zD0)z>n&+GDa!Q)@YUX|2LiPTY6>P=73HTy0$b>C_pB*&7?(b{i>sKlDx2kGK+CJ>d zV9pDUCd10)X&w@rE($i!pxg7RHEmi(vqeDzE8%o?->0YA g=RY+ck~2;8R2(M|irzOn#vZj_fb3TA%~6(0Dp_Od;cEvp z8gevqwaFo%d*9u8s{OIIGqNw`(8kFL ?fDMA{! zYXFja`|3nn_tVC|h6yIE20ZiMb3<;}dF7q4n9lCq?Dl8_SR}CJ<+p8qz8%|qFELXy zwbt*24_p _-M4a;EsmvG)*U6=&|1mmZBLN1^DBq++{(LWyZae?EuE<@FC8Nm zR(;$1`y GI1dv?%w0rq+SJ$>h#hZi7jSv8pFt_C{Eq$mXZqz!IkT(BMqr!M~wlrCfn+yg^or zA5#i!5#djDSVW?$EG)HK*{2T+tAF)*)-}o*mjOpM$VhJ;uJS0!LWw=6;M8%}4o6UF z8-ZjN01pT6%2hPaEz}mLNNeAEQ(9Jm%GRdLw_BL5GhxHOVqEDFBYW( ;R96rbpC;7P(+{C_Xxe@}cIIv%AV`$&bqXuWZIz3!i*){bsO%>}xvo}I^vLl;-J z|2Hwws1s2mm2N_J6*r)Ge#eSzpj1Am+#DCozJiQyx(xlJ->L(4BJQW$rgDiiN8ODA z9$uNf9Gh`vc@z<4`I?=`gSsLzn$Bp-T!ELM1S3Uo<1rb|8>^j#j5=~<4)-FsG2{)) zci#8NZdl}deuZYg$5RO#@O)m*uFDc7J@qyT!84Z7!PR${pZi+yk|f>Z%bl~WbS=|< z65q#18` R6m=IVZgGjgT<%S @&h6v)?VAlA4Ug((7f~1Rc0&Hla+KulXqR}sq7NYEtH}(JCE*b=K3Mg+1 zh2LBWQ?n1e0A S$~_wT`F;}*nFY_nBKyh&ZjLV{I( 2naPj+lfObUBrJp=GQS@(Ui1#;50Kc=Hd{F2fn%xC4y)wA|;{ z16L &gMfnDiTX^k|Z^{r7we99~zT{n?4xQ;k2pxW^FSatzGD`EfTO-5wt6 z0gIxckb3Q)VsnMR`%_=d9U_5c?E(KR5z>ZtW4j2H7|oDrA%v?3JVXDAH735;!T|cv zH}#}cKBSFHBw)EK$_OX6f5IQJ*$a~H@jRW_J$F)6d Z?u zut9GwH(jqTD?LPm9|D75W(n4Y{@9_KW~y0zSFrSGmDAV5QV)Vl_kG@~kA8lnVT-6^ z#q)~)l5S1{s9PUaTG-$oMLiH^@}h<`bDY6`X=VFq7tpfJhu#fJlU}1U5U;zBTg>=K zwBX0I{-`6oD|BOhxV7QSj#0&>=2 ADO!=HuTv=fv;0NGH^-SSdJfWS|<7{X&%2EW9^a(LJVG?43N13x9?A@ zB2wf}=xmeP&;2fwzmcXm6&93pBhSR)eV=d%`Afs5>-0s5GtW~O(?* I$4F&{$3)J2rqk(5Wfbi zT}`~3cHg y-rW4tOTwSXn|FIv9vugxH$ID}yUP%bJ*B_B<0Cy^Rn} zCe7{lpx>A5OxfDS6*n {l2N~7(q*0+`$`dfy1tZO5{tTB~s=W?2m%tTL>I1lE951C19eHhV2E6i+f09{nT z>Kw>fZGd+6bgDXc-G-6*LAM(3-lqz}nP0UHVNe-X2{Qee+bANRQabrjk7U7%^dlQ+ zFS^!%bY*P ks0%B?A2Kfy-z`q|-}t#3*b$1S E-JLARR)OX z9zVQZQ9J~nH(8KQANxHyoR(}*X2FSX=GC&Jf~JZSiK(!e)kDI&g5-AIL#t6q%y*xo zRpo5`V1tei=w8zq!-X`vK|3{^^KW-&uc<~Rk57%j-tR{O@Om%E{8taW{ VG%<|0Db#>8-!#Z!s6{a!z+>AZlc%Id$YN-({ShfdRSeiN)5J3ZmBO zb>36v6@C>FBz@y=kxup=Ha96Pvdf2uOqwTq6A3kWTVOuUdb~8s1}?RrVfxnXdmYXD z&sJ)c=6!Sv{dkc4uhw%bkJ>1Uat8E=?Oznz`UC!c2F4@QV16GQ%p9^vu-19MH*TYk zz*JtVK4t&XiPK+hQ%C{Q#m G |9G%}a=}Zt%&i2}+_*yXs!%BsA!vz>@qWT2 zI77ViEY6Z>qlSA~Jx@4NJLey?G{zOD;A3{8$C!{-h$)XQob!WVe|D%sxX~hl#&=64 zoU$%iIZE18m^mG1cyPs`S?I>vVxn> qFT z|Kht=_u1}{E$%oUb)`=KEhAcw#2*b);c^KpDR83$lcGaQaMb6HgT-GGtZhe!+dQPl z4L7S@h(6I$*XrCq q|F6ktD&kwW^^ZhyVZBV}2#{P~aCbe!cmS@OHH4~@|A<9?x zWcYu)jUF+)d@ds X*~t|bAnzkEaK zjW_8}?3?#1(eeJY#erK=9cr~f#<=BeL7W>(K%qMny6G-iDMDZ <&KcW!Xi~Hppt*n*Ua)BPSV#rL12I-BuKWv8rRFc zQVt^R>=(r;Rb-hxIs+?%n9*9C9%*iW#PB}y@N)4yBV`U3EpSpPpX;T^FNwyt74gVT z#9gm0)1I{ =Flrnr$e!qf(R{yvVhw3Cz*Vv(RloO zhsut^z@9%rj2M $==ILnacHQ2>`~fh3m2V|owslOQ!bKySd-Y5+O)-fCrt8YQSB_Ce3T zAY_#-88RCKyZOqJADK~;*r~`FnjSlqRmC_GR>Q-xLS3kXJBsl)g~F=@nYqw9pno$E zx~JySS!G6`{svj!actz+1y?72NU2*?l;fzOp5-s}=wZ1MJc!7Z{GLPr^SK=kb3X+* zW|X334814$px=6Fj)Dfb7D1A2f@?fs%;`~o5nJ74g)tzC)+(ElX<~xP#&j8(SqujG zeh+Dbb2L-VurlCoP{Q4%>1=72V-s;wL8Yi5YR {Iq)+q=GBU#qLWtDSTEC5M zkHS%NI> e+OD#sQs6F8_)Fn7BM0@&57BE|uRwYNFzn?v zSI7ec5Bp!JAyjIPW|R#oTo8}d_?dIDPGJA{-u({``!6pEf&?Kb #%W*QeLx=bV6ZkeB)E54C)ql3-Q3|-4+fe}cpompKmH5td>KtLKYGa*k zH@`@P^rDhqacphyz6s`Iwr~t% UcPJVhbq5P^^`41rp%C i csT*;3NRndXL-Svtdl#e&QvI=luK6L4j_$V=tkkVmKfkI=s#?FS$0w&S~ zN2BkVs!kQ%5+08)wQy G5)Dv%BM= zI7^WEQ<}hQaCF00;l>71D+no=WVH_lgLUV&LPZ4uQMV~@CU6ZBtV$R?(10Bu=Dvqv z4r{8VS`qCui#Dj#VnKn*^c;K#`ukNh k)jJMBMh1&lOM$0}^Hjb|J4g3(o0}6X zCWydjk+%{y@UH`vy=#_}ydH~;RU>=Au;}nR^rHq5Y=XbST7ZUF T3rDn4J(*dzEl^}lGUGIvUACxe*{$#HB{#p z?2G?nR6Qf&OmWGio*lfvDQxr^7bt_jsE~SxsxE^_cXbgzo9*I; ;^B*B;57E^Ff zgWN<0IuC ;{ei*Drg=*lzqG4^A<0Il~@o?zBxDJY_|8H!;48PHexbQ9#pz~ln zfBKxbjJg8JUO0acH2hExoGv<3-KW7v0q3J}F4G@z=I=J5kTz#fNF Ep_3@h!s2+dXt2!FeZpGdGJFf9D=;Wh7Vwa_|e{l1C4ZfSBdF_qJxY#!HkrWK+$ zesLMVF&R<)J4sXpPx&n6rwg-pIniUW7R2O%JxX>bX~@Y0i#ZUA9$!TO1TpM{}T6Pw2 zk}=nga=%UB{r(EZw*KQPFUBfzTKYQ+eu9$+`32UR-I(B!XPU~(Y|Xu|FSoxwR0d&U z49CONaFcB6({C-jju<8-NNR7tS6szOb9rEx(ViEf3GO5GV *Pf}*lPg?#EN0ToXH_hxv8hWBf3VuP9s`_aTCYbuO3I#kS4l=wvl0(Hb)~C# z%FPVq+ETQ_*Z(|55ye6;hgIcwVlm%Fu?+#_(0^UuPZUnMhDLry6#g@F?cW?dEhEh; I^@maa3)*0a#{d8T literal 8866 zcma)icTkf}*LUb06b!v1(gFg~d+$w33Lpt3p`)TGMLH Z@=bdl9Kkj$to7ws8b)7laZ_m!|*|WRXiMO&aWT54w1pojH#zuP9001cz z03d0lCcBc<-SFJIs*J46Z1wSY{C6DgXnOi=aq-u{fS8zAe?h@gYwJ#b|JkQc0s;b3 zQc|k?ca}HzE-x {`$3xi`NXzO*0vN^@R1-_Lv+ZCSv{_o zn?}ULy;|DEvi5WMU!xE3eBE$vgXu!b&ewXhKEF{do=w5mZWcMux$PQ3ie%sVmby03 zJgO6~jkwu0V1KW7aW_Bw!`CRf2>ts87Jorr;P1R61eZ#@{#d%wGVs*#JNvCDAd_J9 zndZIxu%8-s?*V}w9;0J?^2`7LKfqW|+cvOZyO1HjwADY>SfTTs;$GQ+*VBp1%Ssqo zMzx8Z4rx-1vU^cs{YR?h-L}KXpB$9bQT+cY7TC+GyTpD4){g3HqvCA;g7&r@7njer zu*l?NDNn9{QTXqN;x^g(L38%-;Sma~IC i-ofoCP7utmgy@A50dbr#H{4*O^4D#H-+M= zfL*UxNY6J*{edk-&Sc>dOV?1Olcb}5bDZVxT3n`%Nk!Ms`0q2ESVlQh)+9+2=1!P> zyp`U~IpdGdYBb&k?3&bKCu@F;S|{{RL_B#`9QS0?V9F(Qt1t%QRjh+$lr`;s=9S@# zhPj#8FzZ&nu5jC$)+O(l+LAb`W@=2TX_gu{YD}z^p>uk3lpQRe3*<>`*54_K-18k} zPVB3`(b)8S_6J$}ApE3nRWjFF_Nbi79QWNW9Ww9|>3DA(R1+tc*n#eYUfJ2U!H7-h zP+0_B%oZTO=xeOZ33Aa9g(M>&4jn4PprbANMh!hVi}@u}*(QZoy*5`|PH)MHk{v3& zAfl^l%spj;QAbA&PrG8+u2()J6Lxu?g>r~=sfUh$8yoZ)uWa-^+~RMPWiTIzPyBeE z?X)S?U1N_;k(T&2_2nZ=<7_DP(oA~<@LM{o;vG7t?UflB6q2(#l-hJ%`1apxDN&HQ zPC-=i$!DAJ&mN%b5=LXgPP!)oK3ofQ-BFOjNPS_A7@n8FaVD%nNI)E{*{ }0V5^@_+ zVoqYE(Oce`d^rkyI)O8TpmW`q9GZ1WzfMD`=OT|RoOryzzd75k`n0_?LxTFsAb-2= zlSFX5LuW#BPYq8;@LO1)f{(oS!3&%^^!_SPMq=fnO4b`xKa6=VXLoPD3x#xyg1mL= zTm-cjSHOHbwg4E#{jENfT{v~S0-aNK$Pp_l^d+iX?A+kbpZ%>>6tI gAj9|J{qF*;+ffwQ6EfoMbMtY~iOLUZOJ>$D3Khv4l$gel zBd 5H(@_Su_qY4O>Mbs=dSTfJ@UxUNnS>R z1$9UNC)`&yLqir7z_##hOu~g=m?k~aB$)@~`GLx1Sgoz_L|vb|{=-)7XHJkEHEW0c z{#G_B`x*5}N&EI-fy+&pIZmT!8y~ESO;MD1=>8S65odNJ<~aquUqREafCzk>3Bk&b z;D%p4c&XnZ#21{9o%IIW!nBkhbhK>g9GTF-P-gJ!^!3fYEVIzBEZq`d_-{Ss#{Q9{ z9NsZz4H`22_>cSgjVpVkjV|7IK3CjAZaFBibl95=ha8zSI+cu;XTuLouKc!e471Sm z0UT&2@X}5y(5{#+|LF66K`xz>U6ogbYo5G#C~me9)wqFh_54I~H94YSc}ar1)$ p#xfAjo;(xXR8!JZEJk@qjx#iTe_Qi4l z#9k*JA29V{Jj^F#mg+cvR8zxacrH4?4_oHCcXHVYaz?*gd6vdvGrfZB-!*@pJ8I24 zs#*0gF$e4m_L~P_w>pB8VHhM3)%V`Du4#VD5}ppz7vOc03<|)(JOghlO0c(|Ot;K{ z0t3LfhNW}%#^H*OyIw;zWMj-d#=%MD4rEg~&;LBA(7>y_hxFFpwL|r}yhF#DnvN}J zdR*qQE5S)6PX!y#c*MD~KGX BjF@>tAC;1%>_CnS zo-s#ypooK$jn;q~n@xndRj1VC&ng0?PMaC-mB&)Ews$rO@p%fReJwY%r9xn2Ykv~> zN+$^CF=+j0vedKdO#G|$SU>-Q3S)pU6YG12NRUaQib#9<=Pm=unSzN`udZ^2B|eIX znOagP$m)Fg&jBkde{26-k@R0vV{`e{iBF?6vUpNRr}$O4T_BfSn -pDk b^D#hkdT z!3J_xV>5ABRgjf{wKLJM=&~w+>% RL) GR+1# UsCu+*a|!KdI$ME>DhV zaTy#Rq&|1q&vt2$vMO^g!c#Ex(1VGGB0}7^oir{wDM96^_Vk5^@|oEw^GJU0xnH`- zsH2g~QPtc;vG)RPOwcWCW?r%nJ-Qxina_Mn7hA!gX{!P~_#~bAqge#%HHJxlCSN87 zJ#i7GFeTF7Hbl40OD`CvmkL1D+*2JN;?7 HTN+kfML7x!}~ z&fG1;NXscM!c!$8>?D&hmKIZ$q=dfKU<#%T!CwikBtsCTxcmY{KeL z#k?amJOjg*@c4wgy`d{F0`<(asxUx1M`=Z98U~+(_SPC4x9QNG?MPLq*V{3-I(N@D zK}bkc_MF0zA0pQc_M)zT#u(owgA2Yz+#;4}i;&dhEHLP;nTWLpZ-EdTN6lGpt!e9C zT}@2`LKtF!9J-KU_g?Cxd32iwO$}3xnwfs}RM53tZgu#ByW=aR<}t&~n}`KW!kjp4 zB4dJH9ipN!t#ke{S;N2`U@F!5WSWh(VI?DEgQ~XmFh0(X7A-%xND03GE#_8<8x2kn z^1J_TgdI6rJ!FoWkX$2#vu)^YJwIp}V#1R`(HV hJtE*ZF-(sZmL)+; zm^Zb6D;>h+4)c9c^NX%V?-ijjm~*^fdUY9o$(qo(+_rHe6a_X~UoQo}l(#Spb4R7S zPjw;c)84W`6@i$#As6B{J;sRrUK|3EOa})L0l2pF!l!~VQI(FN{X281JK>Gg6%q2k z6St+1B84Ovs53THKqyg@uZ(BqOoNW#J{s(`&4}(2x~~pZB*XX(F*_bd*m2gMDaz*E z8?>0^0D0G}Q{vh#KEIC}ypj6TJ+4$ZS+rK-tQTWt8cG5!)9Ku|xDlfJA)5wV01RVX z34lKG@TXDT(nA~_-^MWab*rlDP&tH+iFYtWpYQT}1cwLLZQ)JcvO!J89`Pz5c7oF6 z0~-dj#wYex`ltS`5>}4x@AaNw;$|YUO~_0c#OV;8@=PY7_m~= )jj+f z^eC=!KJ<5N8iWSAcK*3rya<5uUR#~oW&zZA10&=oD<3B!>}o+PUazL_AR;j-cBF*A zsmEUAK9mxW16vRos}6WVoYb2fZ|`TtN<9VF1T(F9SJcvR!zKia7j3Bt($~}Cc+C&q z#F}1-OJ(R0g*vMUc`Mo85Bx;AEiO#cj~;&F%>=|z)#JI>{?uD{uY-`}3s=siw#QG| z&}R4fx@kUX$!)b4ellu@BDHh6@Ic1&_D}gHcv4vBR=^Uf{SzPW_TIWtvCYuN;Ut^R z969ba#E8$uIgP?M>xfK<9uxzr0zb Dy6 aE$0iyi4fv@kdf9)rd?&0cU%^;`%LO*teMe{^cASD2iI^ zP5sEa=fXS#DfGo~{9su;<6HZdr=0*ox*&_rfIbx@rk=pyRC^lA!pW5gw>W4mY+MmU z4O!I$L_@9`7dO<+`0Gviiw@y?J50Ggvc2@6=P^3a3-{}fxrYxZOucUp$mJHgm(F(O zmDweK)uKqv4~o{Q{>KD1TkcBDn883^1PR6@o>zLekBw)XiE!RUlbqalyGjP}FiQ|2 z#Z3VP)L2{x5lF@{V=tD;_b`Zsaz@E8?RVrL%3Q!mp}dPQ;!|;b{a>K`*fDLlzdMB~ zNh#$O1y&S7MKB(KinFi&V~udEB<&sP9R@Usf!IIYF%7$2wX;lLm(hJn(=ztbF{}QH zqi+SJ^`UXyv4a`$)-R;6!4cGWC0$*iT5<*ouwh>z(#^|j=bVc5LHiG`IJK4EhpICX ze*8oP`BIQ-0lj!(efQsNMT6MhU0tJi!<={Q94!?oVNwym&x;N%VX**$Oo=Ma40o%l zLgcyg!^3U73EX1<08Y=iA9VgmYwpgEcHL$f;