$string) { if (is_array($string)) { foreach ($string as $_key => $_string) { utf_new_normalizer::nfc($strings[$key][$_key]); } } else { utf_new_normalizer::nfc($strings[$key]); } } } return $strings; } class utf_new_normalizer { /** * Validate, cleanup and normalize a string * * The ultimate convenience function! Clean up invalid UTF-8 sequences, * and convert to Normal Form C, canonical composition. * * @param string &$str The dirty string * @return string The same string, all shiny and cleaned-up */ function cleanup(&$str) { // The string below is the list of all autorized characters, sorted by frequency in latin text $pos = strspn($str, "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x0D"); $len = strlen($str); if ($pos == $len) { // ASCII strings with no special chars return immediately return; } // Note: we do not check for $GLOBALS['utf_canonical_decomp']. It is assumed they are always loaded together if (!isset($GLOBALS['utf_nfc_qc'])) { global $phpbb_root_path, $phpEx; include($phpbb_root_path . 'includes/utf/data/utf_nfc_qc.' . $phpEx); } if (!isset($GLOBALS['utf_canonical_decomp'])) { global $phpbb_root_path, $phpEx; include($phpbb_root_path . 'includes/utf/data/utf_canonical_decomp.' . $phpEx); } // Replace any byte in the range 0x00..0x1F, except for \r, \n and \t // We replace those characters with a 0xFF byte, which is illegal in UTF-8 and will in turn be replaced with a UTF replacement char $str = strtr( $str, "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F", "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" ); $str = utf_new_normalizer::recompose($str, $pos, $len, $GLOBALS['utf_nfc_qc'], $GLOBALS['utf_canonical_decomp']); } /** * Validate and normalize a UTF string to NFC * * @param string &$str Unchecked UTF string * @return string The string, validated and in normal form */ function nfc(&$str) { $pos = strspn($str, UTF8_ASCII_RANGE); $len = strlen($str); if ($pos == $len) { // ASCII strings return immediately return; } if (!isset($GLOBALS['utf_nfc_qc'])) { global $phpbb_root_path, $phpEx; include($phpbb_root_path . 'includes/utf/data/utf_nfc_qc.' . $phpEx); } if (!isset($GLOBALS['utf_canonical_decomp'])) { global $phpbb_root_path, $phpEx; include($phpbb_root_path . 'includes/utf/data/utf_canonical_decomp.' . $phpEx); } $str = utf_new_normalizer::recompose($str, $pos, $len, $GLOBALS['utf_nfc_qc'], $GLOBALS['utf_canonical_decomp']); } /** * Validate and normalize a UTF string to NFKC * * @param string &$str Unchecked UTF string * @return string The string, validated and in normal form */ function nfkc(&$str) { $pos = strspn($str, UTF8_ASCII_RANGE); $len = strlen($str); if ($pos == $len) { // ASCII strings return immediately return; } if (!isset($GLOBALS['utf_nfkc_qc'])) { global $phpbb_root_path, $phpEx; include($phpbb_root_path . 'includes/utf/data/utf_nfkc_qc.' . $phpEx); } if (!isset($GLOBALS['utf_compatibility_decomp'])) { global $phpbb_root_path, $phpEx; include($phpbb_root_path . 'includes/utf/data/utf_compatibility_decomp.' . $phpEx); } $str = utf_new_normalizer::recompose($str, $pos, $len, $GLOBALS['utf_nfkc_qc'], $GLOBALS['utf_compatibility_decomp']); } /** * Recompose a UTF string * * @param string $str Unchecked UTF string * @param integer $pos Position of the first UTF char (in bytes) * @param integer $len Length of the string (in bytes) * @param array &$qc Quick-check array, passed by reference but never modified * @param array &$decomp_map Decomposition mapping, passed by reference but never modified * @return string The string, validated and recomposed * * @access private */ function recompose($str, $pos, $len, &$qc, &$decomp_map) { global $utf_canonical_comp; // Load the canonical composition table if (!isset($utf_canonical_comp)) { global $phpbb_root_path, $phpEx; include($phpbb_root_path . 'includes/utf/data/utf_canonical_comp.' . $phpEx); } return utf_normalizer::recompose($str, $pos, $len, $qc, $decomp_map); } } ?>:{hC"82xdhQypOzF77Gя pDcdFkڐw&Gjx&LoNUDI]\X3U"!W~:_.EetcDaEBJl~Hfx q[;Th+qPX:p5;s(x'xK8ϘGI{y%˙\"lG6QS^̙'Cq".2ӱS @XJ=sHNoW%ߝ͕b#a.7uf[$Ͻ , xD&Gk`}:Ԙ ôB@tB G#:6J E+&n !! !BQ1Lv'[n ]= .v+Y^̛Ի;ݙ׾} zh룡trƧ>_F:X>i2!'˲`pJOGQ i>W('~|O:gu>WB<ƭFT=~ d=vxypziMp c|0A=l.tL"wASKn0P " LK˨(.̌0 )lK_IVƁN PXv OS]/(jh2DҊ<*p64ux@OAȝ(_M, ^c;- &.sGMt|1¨^<`(pe؄2Cq%=<-q(w%gP4[@I Yx:Ajc!rǣd!HP4РtF40f*%=(cRKE^*wC`8'B֊S! s4Rg! Tl%03Q-:']VXmT^?xxCNxͦQ#J'áJTCH!E$QuN~(݅d"7J&Ԅ17ڦg?m-P0a1ώ PsN(P3)bבd嵐@2H:uRk hO C(kP0(D)I̪[`=2Ov:f%njP\Nv 9dEc1;STA `O B P)E 'pPp!5>yhU=:S+6K Yҋn';Mc΀dƳ~ʚh@ %PQ%^AR"Po9CImW EEzoށNXk u)4;d w0S4bW[ t}zp.0ԋ1JvlJcHevS%gMSЉE]$<0FAT]C?TSUZLD1Wm#Uɹ5L+#8 t`W8"=|np~VMvOiI9B:q:+7 94A'߸/lã b>"*O/7Dǰ{tx'J @)ɍӈ:|`">UۚMLGHx}PD> H hkc9~U3A1v=0F8N3 EyqTüb5qX0SƑuưGgO_"0Wa.jG*cP8":5XC~i$MdzCl% ~>/rE1r F \6Dh290PʺɈ+#*K2$B]T=̣@fR1"z: r\DjSH3&!"H,Nn@_#Qks| êt$`!2GD4"r$D\:GIq36z'+iK].4u!ƍkCK ?JP"j wH#ϋS}I4z*KT zsČs?3Iừ{`dP;3Х@8G!ď>ؘE۩^u%"A|!Ha( 1pi ӧ<`QH 41m=*ry.0z~=M"L)\=@^DRSKY(YfIcL*h)΍LzD3*@OPiP]* Iͦo2ޤ0V'̐['Yiئ-LSׯJ|) ⛩{fTdn *ypɑ0UsՇEV0 }1SRv$]L&AoDFC4;K,,0eDbJT*f^tr{CA^rxѳ]d qAM}|~1b'#&)1}RԈh҄pS+ zۊުZ$<1ōkV=yZ(O'|CQ0 b)eK)6ؑ_"(ziyĊH! |0^onB i MGKqRL%bnj  2" H (j< 5Nyz 0!rD!AHιAW02c}ezuEHqhH Mb{%>5&˫}$7; xe-hx̐ 4ėOhn.AIklWij mhC $6Clڜ-T uu5X!}4 幠@53I[Ba5`o ٠C B,Fv݇%|DvɠK.S(evy*F&xPP yjAUUAyt,UUKE9-.<%Sj`Uŧ֒`QPB )4 ;d|'6!͟NШB\0:fOgA{n +|JqZd"آ%NIG9;RyNPu 9E.X'rNX!28kGsfm?j@62HM3&/ 8Vo@ 2ZrJqS$X/Ҫ"~Ҳڪ##WBkp$Nw"ȥPɦS;]Hb|1yhJ)P:DBu)I F6LnR(R k n9av-K.Ve#p"V,1CHDj?Tc7 L@t23e_D2v1ɤBAuc1W8Dfr2X#ݙsT A 4`z,?U~|6L>NN#yh n~,JQ%t$!h\o1 a[(ϑ|LÑeiN(# HtyCd5v315e +Q0. T?ZU&=p*]ĥQpTq",LS{3zh2pzk<`b%ㆠU4uDzAf7&X!vj,*ԫR Dͼ-#9ZGz? $aE5tRnګZPs I薶HӆC`]BHE4 -t&P%G"ιV)#A46 /$tF|!SY d|}PaU%x \YSQ Y#FI5" D0Mh9󅂣/Ex/a`Dhercdn@BaLtWt QC ko/ߙߊU+>d2\QhX4m-O}r_dꃳ|$l6s~dq͇Ŏ-ϊFZf<'3qL&sFx7t&By~tc:'#/Ҙ* JI(43 dM1A`HVWwJsz-dOZ6.(9Z*Sz-iZ|W̯t_S$l;&ɶLn2喦NܗvnIF-|s-3=LnIp Hֳ/9p$FOu_z4h=>A!T~W;Ro q| h\1ê"^wVU09a 3 +xOA|G5;GUJYrI6d]K w ƦcD HA4am4m|')̂L[#%%P̚+U~ F dg=z$3E}a2#1XmC;3gl/s`I#A9tEG=O*OyjyṋЊ2!a([ (ccDasDa4y1Sqp;& |WY#xaʳ9IEK*]v&rmɲj6-%¬9VT=Gq@a4WnMR `08;EԣA',YzsZABYh4*xָs`80I,wڌ@30Wx9r#h+1o 3Vf0*V~U֖wTl7ho;*"굌iPa\f& n FhFB(+fhQiԦFo+rޑ\z+MRœ¸VU׶v$'Aei8}i;y աr0y['M4PyGA'V :@sLݸI}@%hPQ~wQhfD뵏YGRz1af8Qs9b$%A!M{wz}Ӵb: B9iDEQ HᝄsĕG.AUCB*(h+V!c lPʨGn{h1(W=,Rnl'0) $zIa^F%*DdIH'n!6Xƃ>ˀi qBN^\Q GDX cv\=ccU;KDZIr=ӡ -|W;)f)0j`84RGK4TP!&<ĕ<6ntKj%jЛ-)qȆ\vzט{4,]($Ky`*]]MCХ/%{SE\|Be8aL'Ӫ6:=>,&Hʶ!DŽ}VDQe@#bhʁh#Ū `ASP-@Gu5F^ъkxpڦF\ޢb$C{}C,FU_' v22%ƞᮯ2dPc )1$겯χ$t +IE\} ,q7m/ hUê,:n]KhB%&^RZ r6 YAh+a'se01BL"}Ck:la 4 0& yYCt͞Ӥ&mTq.Ņ Y рkd(-o^(ܨ0,BV "\0VTaDwc:Ȩ3EYp4HS*Ax&?N53@~Jf.zwzCzpߜu_nB\`q^ô=FYfb>&Hm"dHa"8gưPsZoL)0aN84Lqr®B?JAvjX2*nQ1Y8m u^*( ?b.˲x(v 6u52P%TT3`:KU wX{<@;Z1z1x +)#zc x[167B W4ӮJI2 fOW}l,ɄLJT*Kʒ:[*K+%uTlS*Kl,9TdnMLop`2vCAfN4 JP1Bh󐩨HuպrI5sP4DiR qChdeNc6=-\Lu]Amz0ܦXԅ+C%aEjh.[OqQn#6Vq^?qDg,A|&!F q5cu(dEfl}AǻaG¯4&elY@6֐א!7⿳_TCd^f j @!:("י%Sw*"'eK=9n1Xrߵa7,)'%X}-)GV5bB)rJR%&?ZRÆg%夽/)'[KI/)'ǖ:_R%dKeSM9IgIJli9ɾܙrRr_YNgw)Wr"M1k,3=fPt\Y Mu*A1viS_'L$5 55לmjIF9[*"2teP)YաkULX_r?4L9@A]*hUb̀"I PgQ ^:OkǎA{g8/:Auo{ ]y:߷suWϵlK%dx;@se|^H/|R>Kb?-dc~jxc]|t P}*9`L ە" :WylDfǔHy2Z{Qp`ee71S){XOTȏ&`j%i2KV%'?A[A aW#zizBZœ|knGF+ &Ek"͍'$G 耰PWԀ$:B}5pG.S\=^enfF3;ۮɼ'Bd[F%˨m1s0چ:z1Vhnd)7^̔e/d0ɤq,:,73?gAIVG]4<$މ]죎IYglDL5iNDܥ"U)z|)M@ LbS6`P˂;"h4PKgItކEP-u|c ETCGgg0E}|‹IEJ+_.3nOReUi@EUH٫c~_nLd8d9#;UW.]qX,/ p\5WG#C̿;aӊ c ReE٤gitlo j6/JdtJ}mY* ʊMoHEvM!qp/痰[ pKӫ&@'paJr>'l~FtvB?5œx_vL*(TPRL4f8fY<@f"苌tɟ'gAX"?4 &chu`}@uԣc p9ܹғQ(+\А,yi`J3o38!လvE2?s1ֆteF]WlIIP! < \,X9Y\]<0t22r^nЇ >~2Ѱh|Tw ƉF=ĕB1lb&W_!Ԧɘ-b9Md O6.ךˈ10gtJ=I x l^.S}geDD/xn33yw1HND!"ē&P-q #ܟ $&Eb4N6Vzchc֙H_2n:hGuK9NWAg$KA8;ӗf,'ŘE4Pd5k20b ~q7~c-~}m2Q `lZ%1A(0cMjI _8kdXs0o]G=5: E6+(!ޡ~KW:-N7z[OPe6Z߳|Nu6#A|=W94܇:=Q4u \[= p=y&3oTb112o%L,#`23H4`lbvxXrT./ K*J₢.oc'C=W4 0~\EA>x%[2QH"'dd7vt4; :/;-;3Au#M]Χi;]6J'EboGA4 gTFDCA0J iZw*THHA-vV2{3 ӭ$8^K/֙VaLL ߯@͐&] `V@ rպ>Hy \uH"'< =Mj0>4_KtVWʜ|Kl~|#ڼFw>Bnn~%Ny #GnW.W+>*J$CL}r!q0kQM.΂z\RoEN"!r&d\5*dY!o+!Yfqc~zHFz'#Mx0!4g&fy-a!(MM E RsӤE_Q+\CgD(lR ͛&2B܂k^a>JƇ>X\ Gdp]6L6s#O ޴Udl||.]iRd A`,>A6\@TL#EY!^eOg]"V"t!LZ.tIJ\K/I YW {=rrYBP5C._:1o01E40,tVU aS>ŷuwSVZ`*u2]8 +앫v?8Okx B.6bpZm=j& iQM[Cm! 4GvV䖂BS=6% z`GOB:U>M &N% ϕ oW }O/'W!:1lT'HKp ; lֆ'&V} ʓY0~B*?YI>yq1ٙ)~oۧ;#g m_f,?#dl%ez2jw1!Nzs7d3 W9g_TT\0DΗSm|:R+5U h%QvreqU!UʧȮzr+{ ѝ/ WHw[b8i/'S)5yP0]zpЗF,ՙ0~mC:1(1+8r䑃Ss>jQڒtpR4Mגf8PcRHpH=zH;(J6=FT5^=F+FST qLe z;D6} x#vǙ~4d.@$SO'MMBHE3$צePDMV`}Y#`vVOʯԫ4KYD'p61c%,mƒ蠽;,!}+樋#-xw{:/KNh7 Aq4ȅhQ`]tQAe%Yq%!x#R| ҰuB+Ip1 ULadNcX~ js`vr.0hX}ZѴtDfJf#4|8~ eCf+ZwkJ`/ywg o0oNOIoyu"Yuw)Gg2!uHm՟~xb3{=5HoPJg$Xj'%c)k m`"2u-""~=5tF(RZbvE-g!)иFOыiQO_[zz\iIJ[il&^M} G/[E ml^#!=0y%XMG6w"E%OqI4P3 5Jnl$25IuFqA/j|,lU|x$ʼx!M|@B> )HN*=QϿO!_wJ\\7agg@M }rsä-n*@xt 26Dɝ|K~,3==^:'$#tR:-v~mq@\0ALcohв:#gU"HO^ 0ڈh"viuע4']`&9ujKus`$.m+U@4Wh>hRl'f?D–w2L:QވݚҢMqK$ͦ y3{@oA K#ɛUzNt 4X2TL5g `3.4Y~9at _-|h#|9 ԓƳbCFp^'(wGk+vEC6y̐Wc[1ppPW[j]եil*Dw!nb5( ;keC/|٠Uz KUfFC0NAn"@WgkM89x|j1:̳rsK&^ M[i$^ 3"孓% j35& !DT'iXzRߧh[F@Deo?p Eνs_|G+n!52;ƎF/(^Y lKnSY;Pn7$lb1jnwQM\1Zvzs v4t[[[]BsU%IHxdFT6?#CSF Yw@aP@j_hAs^xYBG};NxSߌEʾ`Khxf]*GW~&8p$c0?}loLmY/a9jyKȯٰj@>6E|t$#gNMϡ2#>(72i.I6HA!*A6岈EߥF#-hN#Q"'з'7iQ`ڙԒh|&I5wgJ H@ /E:]A@TceN]}3kX<:HآN R,1bbʮV@:F' 4ƇtG5ywݩրCڝy'cZ.Atr|ȃe{2ɁfzwVffzzKinz rBV͎N#=шOGbQ|K/űrN4w #"1҇dDZ'>hC>!hM>q}Lo,FO'ۦE-'! a&^I h9;CDž,x1XNIŒ&m;nbD82~XbC'!2''`V|uSޢi̒/s(&Ų'iv/ ip'O4; N ||q@s)nb1 1c<;Vn36Y~z ~paGOaul? xarˍ`J ›g K9w$3")# -A^_ZZ 83$cO+B@C<5n97ltg{LK!l>n0A?aS9M%63AFUΘCgEB Hpc` v&1fQnGq|"#\.qlvt@'R!L窵9CmOHnVNv y}TkO`Qh8ybN9$N4@CA~)8` O='Dj;B՛섮dVNQ,X\&! i|v2\Qg͸T-۠;2f( 1'-⣵k\xeCQneaC}(er'ڟGAjh@G#ՄIZ+QjzF(.WIep'.W Pߞ* Z< 9":pZc$BUP}ꉷ5xF`A_AAh 00E=ؠ}ե er-Z(@Z=͂B=!J۹Ǟu>],CƾX  H GzrnOqX\m,#]H,VYAmS͐~!Q&pC`s݄ tkކoI35,U?+ q8f8 b> b\HIz7`2{#>3X'O|{T:/{^R6 &tbƷ7v-v{cB&ܤ3r,bgz0e g\!|M52p~+!mglLfcpJ5i"NexAq Ǜ\Y .,:;UWY8tq?)R{(5csz~QOuT '>1|sa?hnùC/5;!a?*(Rx?[>D%GRcdf6ǥYScr ryɬ3\^{S&?F9CsYy9cJ qe*Bb$ {f033D4׭1`W8uS;}yl쯌"I5"nfIҲjW#jmD/dH6,+oNn|Ϋ,/9T:á ?׍Q#uƗt'ݽKk-_iWOp6-4Ҍ֮bq))]mkO_~kmz/?dsG.Xojᜥ>ygj+|q?[n-숓6׽uqӻ|_iC;Sǽ2ovщ߬6on#~v}عm=ڗ߻es|;V=[2=;7$~rw?èg[ox沔#;|N˜Z2&EJ]~_ZzF6xȘ+.yW}ʘk۸%[9]4;;z;7?,?6};^[=km;W=S]Vڳ@}6~5_<}Ԁ/Orψvܸ.pSk~J*Y7Ƀ>xyiCv ;sĒWcOyxO}Jצa%G6ܮnᜍ|^9{t̰/W޻gpǔSf}Y~Ģ z6WJio[;xO]oMپiį[7t Oɚ3=9|v^W׻jם>rK7?t)oxǻneY:!xraQWOHk_ZQ\4.|Y?n7 ;N[zꖵg/]pʝ8vέ:eQϿ׶Gگ^m=>k{-YwkJA=|Uu <ϟd؃ Eu?F~p/ufܡlbmEį;yV|`g\5{K5x1n|rA;{ l]4ʯwt㻮ytǓni~|m[dsyu]=~ѷW955>|wިuvCz_dѦ]/[|Aun7'eeKݕ+'S[z >k6ȳ]O tWgsgunكy1uȾ[5ۖ?Z]m[S!rا]~@*yЯv1[z17NgaF^Z7\JIyGGP<OcgH;$c]iîY2tpyV9c/drգ=^n5=頁OxeǎsϺpǯszB-}ַ_rcyy=pDeԋ[yG7x_9x̚Y秾{ǸG]:<~u+~lmZ?{L/+_(AwO}ʵ9h5m=o Z}%sN_UL3v! vo_v>{]cR~^>#vFo -}/vpsI=O~GCqj&yޓ~Т!?qy%鯞}+쭟~QfiXنWͻŮMvVw^r^㾌.ESx.c#N;?}ߙC]s}żKr֟ް}+ﵴ2zjK龲6nS>Iֹ|y`Jq[gW_Zs[f_ܣn.˞[&nG@׏v%d'_Mue='RnuiU ֛{_ߺq*ͳO*mOou|,qu~|uWrk͹*wZDbwm}WqiZ^]/v`a/8#OJsxggn{cO)K9õ>}x\}~{^XvO]%~! [7m{wyS^k7ZfV/X3gi+<;ox\=nz9.}vS//oL1sJ,ݒy}mO=xnza͋zd㢃>d#W}s큓8 7`я}']]kH개9Ky]}5K^}o}L>a' ̬ٿg׏5sOχiꧾ[Ni@QcJsW=y|}5die ~}|:N~x?[|EQܷNEaIC]ծ|K&}ZT+<{vz懯,S&^swַ}۷n1煏szoAu9ՍOTn)>{| c-}ުs N[]4oБQ0c?h:`lsJiOΗw2b[5z*~8*WW??=ϼG(<7O8i=g.?f 7o>'^s'v?}Aqڶ՟<1{~e'7Oٿw׾]kSٸgyf\8aVw{vOrQ~׏פ?2O(W?׌{k.8MRs OdLߞz9WEx;9)څ fѸ|-'Y~`C.^P9mG_|xE={GLi;'8-w~ya?m=]{C3.gutwk*׻*]uoMܲSvqڧe;_߶,©׬l[O阶f.N{GVJ{_~8|UO7{t􇫷>~ц cHGqӍ]‏^/n~kωzGx;꾧}gw[R9泞37CE8WN9k7# ^1cZ3?^gHP铗) ̩?Ļv>d74=?hƿn[fn=wyl j/}[^*OL?_wݮSlL< M;i?,$Mn;h?d7oO:aۜ?Ug~}mK3':}Q=}'ac'̛{w~zI߱?q~^[rcv[bѐn8dŻ>~ eO=[g]v#o,Yq˽L8D*ۢWVU5k<]ܖg_A䏞|KB6n=Uvn}ӣ_?p朒߿U7]Z~vyC{~CX茅wmtq}#3O6?coJȝcH\@N_e yRSu޲>\Ȓ_޻bolL-gW튫7vB 3asٓ]8?5=qW.XXl(lEGI}k'nUW,W;v,=E>d>ܷr%׵<yǯ ݮ2h]mwfiW}CwwϟGD^gUztўϟ鳸bs?%~m# ZN~M]|X0ǧl/ѥ͹{|Spd~ h;秴<랽ۗ]?S1.yۏ.'ms ]l ߖI7|=kp\/]<ˋ>uew^99g1c?^>jҵ޸{# 9ˎS=泊fΟ?&z>8&s8uK.zh]݅s6/$;ٵ_Z9بzƮo5O|Ӟf<ޣ9_m.^ޣ˸ngVo]^wKKo᬴˟˺|ܘMzeř!‹.xz3' ܶ5Gx'{x}gx1c-l\|['W>Z[9ßz2wK=pei׋9ouNy^qC43פ3ݵ[μc貋/~av:J嫭Z*c~?^򼹋\dsʤw_z{<|ڙ~y/٫7L\}+=[o5C蔵LJ~zo{kO:H5ȷ3yʍ_}Jׅߝqä<'\9?;>a[{{{~g9Wzĝݻ;c?|7gP݀Ǭ[]-/Pg{A{Þ=Kv,GN|$zܲxaҝS!?5{~2nr'zQ_:]Sf%'4y}r{j)ק*;b&׌'_vpJҵ|%s'<`ѯ_nWy+r7^;xU)SFvYn;ÇK&O|e/[ۖt]K[zޮucsoޘ{ժV$xU7w[}%{u]7sK;)=~cjoʼw8 nxܞyO{DnǴ'?u)))=?Sw߮%}r^\toO-ι9w眵~/@QWZ\^3Z~oNL'o2-`փȐ i|62m&uUt,H&&XR2nPBpѰ_zܪ_4(v{5-尷!_2ך/e1 odhҖanJh4쬛<3Lm~?EXHKT#PjOn8M㚶"ifţjn;7FI!ϛ ΢_XO#^2]#pVN^v.g<`}p{Qܘw6o3݈Lۇ!xJW(࿌Ѝ&X2h/(795d J}( 庅s^Hd*J !;3m<0l݆͡U嶧 :Kat18&'_-׹VM.ŧ>x?w h Įj?ӣ92s@gZ#a%dO~}az@O&jwd[Ay⼡\!P#دZS١P ߑ1,sf`l~MHdT; ^Cf Kj~BUi ?m#}dHoQv^>|Lzx(yD)q;}\~HI.֡X, `%eh1'l?#oO}(660~ţntªd-$~n|˳f+ n 5wG%ڗ6 j! 3s q6d: ?&Er|iU0|ϵMS03GnC]|9 u,݇n&f̶YSkvρlN#fcɾ#oajSBli=15[jՙy ?hRYp0c>ѴVsP|6}MNA4şMn:CfP"y>5mrc]a94C 6in*`m$~M%(KO8_&qL)O(%uǓ$:.*yʿtpW<4E8 D6`/K9BAq(GT|lۙt r`w ϱ#ߙ̀&FU; 2^%qrvWBhgQˢE3ӫ z